1
głosów
- +

Drupal i używanie zmiennej sesyjnej dla niezalogowanego użytkownika

Autor:

Aktualizacja: 03.09.2010


Kategoria: Internet i Komputery / Software - Oprogramowanie


Artykuł
  • 1 głosów dodatnich
  • 0 głosów ujemnych
  • 1418 razy czytane
  • 3 przedrukowany
  • 0 Polemik/Poparć <span class="normal">Odpowiadanie na artykuł</span>
  • Licencja: CC <span class="normal">Zezwala się na kopiowanie, dystrybucję, wyświetlanie i użytkowanie dzieła i wszelkich jego pochodnych pod warunkiem umieszczenia informacji o tw&oacute;rcy.</span>
Dostęp bezpłatny <span class="normal">Dostęp do treści jest bezpłatny.<br/> Inne pola eksploatacji mogą być zastrzeżone sprawdź <b>licencję</b>, żeby dowiedzieć się więcej</span>
 

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 internetowegoopartego 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.

I tutaj lekki 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:)

Należy również zwrócić uwagę na sposób analizowania poprawności tabeli users przez phpMyAdmin, który zgłasza błąd w rekordzie użytkownika o id=0, jako, że kolumna jest autoinkrementowana. Ten błąd można oczywiście spokojnie pominąć :)

Lista Tagów: drupal, cms, programowanie

Podobał Ci się artykuł?
1
głosów
- +

Brak polemik/poparć



Podobne artykuły:


KOMENTARZE


Używając tej strony zgadzasz się na wykorzystywanie plików Cookie.
Dowiedz się więcej.

Używamy plików cookies, aby ułatwić Ci korzystanie z naszego serwisu oraz do celów statystycznych. Jeśli nie blokujesz tych plików, to zgadzasz się na ich użycie oraz zapisanie w pamięci urządzenia. Pamiętaj, że możesz samodzielnie zarządzać cookies, zmieniając ustawienia przeglądarki. Z dniem 25.05.2018 wprowadziliśmy też w życie rozporządzenia dotyczące ochrony danych osobowych. Więcej informacji w naszej Polityce Prywatności i Regulaminie.

Zamknij