Wykryto działanie AdBlocka!

Prawdopodobnie masz właczonego Adblocka. Korzystanie z bloga jest całkowicie darmowe. Jeśli jednak chcesz docenić prace autora, wyłacz blokowanie reklam dla tej witryny, aby jeszcze bardziej zmotywowac autora do dalszej pracy oraz częstszej publikacji artykułów.

Dziękuje :)

Treść główna bloga

Artykuły

Prosta klasa do zarządzania sesjami w PHP – session.class.php


sesje w phpPod koniec czerwca zaprezentowałem wam klasę do obsługi plików ini, czyli plików zawierających dane konfiguracyjne. Dzisiaj nadszedł czas na kolejną klasę, tym razem do obsługi sesji w PHP. Zaimplementowałem tam metody, które znacznie ułatwią nam pracę z sesjami. Klasa może się na przykład przydać podczas tworzenia systemu rejestracji i logowania. Ponad to, klasa zawiera również metody, które nie mają bezpośredniego wpływu na mechanizm sesji ale okazują się przydatne podczas pracy z nimi.


Kod na Githubie

Zacznijmy od kodu klasy:

Dzięki zamieszczonym komentarzom powinno się łatwiej używaj tej klasy z racji gotowej dokumentacji.

Tworzenie nowej instancji klasy:

Jak widać sesję wywołujemy jak zwykły obiekt uwzględniając przestrzeń nazw Module.

Uwaga! Pamiętaj aby w pliku index.php lub innym pliku, w którym jest umieszczony rdzeń aplikacji zamieścić session_start().

1. Metoda: getSessionId()
Metoda zwracająca aktualny identyfikator sesji, jeśli sesja istnieje.

2. Metoda: regenerateId($type = true)

Zadaniem tej metody jest zregenerowanie ID sesji. Domyślnie zmienna $type jest ustawiona na true, dzięki czemu funkcja session_regenerate_id() dodatkowo usunie stary identyfikator sesji. Jeśli nie chcemy korzystać z tej możliwości przy wywołaniu metody wystarczy podać w argumentach wartość false.

3. Metoda: get($key)

Metoda ta zwraca wartość dla konkretnego klucza.
Sposób użycia jest bardzo prosty:

4. Metoda: all()

Ukaże się nam cała tablica z kluczami i przypisanymi im wartościami.

5. Metoda: set($data = [])

Ta metoda umożliwia nam tworzenie nowej zmiennej sesyjnej/zmiennych sesyjnych.

Jeśli chcemy utworzyć kilka zmiennych możemy to zrobić w ten sposób:

6. Metoda: exists($key)

Metoda sprawdza czy podany jako argument klucz istnieje w globalnej tablicy z sesjami. Jeśli tak zwraca true, w przeciwnym wypadku – false.

7. Metoda: remove($$type= false)

Z kolei ta metoda niszczy sesje. Domyślnie zmienna $typejest ustawiona na false, czyli metoda niszczy tylko zmienne skojarzone z bieżącą sesją, ale nie niszczy zmiennych globalnych. Jeśli $type ustawimy na true zniszczone zostaną wszystkie zmienne sesyjne, które są obecnie utworzone.

8. Metoda: removeOne($key)

Dzięki tej metodzie możemy zniszczyć tylko jedną zmienną sesyjną.
Wywołanie, jak można się spodziewać, jest również bardzo proste: 🙂

9. Metoda: secure($data) (od v1.2)
Metoda zwiększa poziom bezpieczeństwa klasy poprzez funkcję htmlspecialchars. Argumentem może być zarówno ciąg znaków, jak i tablica.

Podsumowanie: Istnieją klasy do obsługi sesji znacznie bardziej zaawansowane, np. te które wykorzystują bazę danych. Moja klasa nadaje się do podstawowych zastosowań, co nie znaczy, że nie można wykorzystać jej w bardziej zaawansowanych projektach, gdzie obsługa sesji wymagana jest tylko na poziomie podstawowym.

  • Spodziewałem się czegoś bez użycia $_SESSION :c

    • Jak podkreśliłem w tytule artykułu to ma być prosta klasa a nie złożona. Jeśli potrzebujesz czegoś bardziej złożonego na pewno znajdziesz to albo na stronie http://www.phpclasses.org albo jako część jakiegoś frameworka, np Kohana’ej.

  • Piotr Filipek

    A powiedz mi, dlaczego nie mogłeś użyć metod magicznych (__get oraz __set)? Przecież to nawet wygodniej by było 🙂