[Drupal] Używanie zmiennej sesyjnej dla niezalogowanego użytkownika

Data dodania wpisu: 27-08-2010

WTF? I tak przez 3 godziny.

Drupal CMS posiada pewien system przechowywania danych w sesji i globalnej tablicy sesyjnej $_SESSION. Wartości - jak to bywa podczas operowania na sesji - są przekazywane globalnie na wszystkie podstrony serwisu. Tablica $_SESSION jest dostępna dla użytkowników zarówno uwierzytelnionych, jak i niezalogowanych.

Czasem jednak zdarzy się, że tablica $_SESSION po prostu przestaje poprawnie funkcjonować.

Generalnie: WTF?

Taki zonk zdarzył mi się podczas pisania modułów do autorskiego sklepu internetowego opartego o Drupal CMS. Wszystkie testy podczas programowania modułów przeprowadzałem na użytkowniku stale zalogowanym. W momencie, w którym zostały ukończone wszystkie moduły odpowiadające za zarządzanie produktami, koszykiem, klientami, zamówieniami etc., wylogowałem się i sprawdziłem jak działa system dla użytkownika niezalogowanego - i tu WTF? Dodaję produkt do koszyka - koszyk pusty - co jest &%^&##?

Pomijając stan irytacji, 3h grzebałem w poszukiwaniu dziury w całym, sprawdzałem zmienne, echowałem, printowałem - wszystko na miejscu, tylko po odświeżeniu strony kupa.

Zonk

Rozwiązanie okazało się raz - trywialne, dwa - cholernym zonkiem. Przypadkowo operując na użytkownikach i klientach sklepu, wywaliłam usera o ID '0' z tabeli 'users'. Co się okazało: Drupal wykorzystuje konto uid=0 do pracowania na sesji dla użytkowników typu 'anonymous'. Jest to operacją domyślną, zatem jeśli ktoś z was napotka taką sytuację w trakcie developerki modułów do Drupala - zalecam sprawdzić zawartość tabeli 'users' :D Oszczędzi to Wam sporo roboty w przeciwieństwie do mnie:)


Komentarze

Ten wpis nie posiada jeszcze komentarzy

Comments closed...