Rozdział 8. ♦ Cookies i sesje 229
Rysunek 8.3.
Identyfikator sesji ^
przekazywany ...............................................................
W adresie URL @t | hltp://localhost/inde>c3.php?PHPSESSID-«8e8346d827fef02i0b722882ee«5cH
Aktualności,
Każdej sesji można przypisywać zmienne, które będą dostępne przez cały czas jej trwania. Jeśli zatem rozpoczniemy sesję, a użytkownik odwiedzi stronę główną naszej witryny, zmienne tej sesji będą również dostępne na wszystkich podstronach, aż do zakończenia sesji. Wszystkie takie zmienne są przechowywane na serwerze, a użytkownik nie ma do nich dostępu. Jak takie rozwiązanie działa w praktyce, dowiemy się dzięki lekturze kolejnych stron tego rozdziału.
Począwszy od wersji 4.0 obsługa sesji jest wbudowana w PHP i nie trzeba stosować dodatkowych modułów. W przypadku wersji wcześniejszych niezbędne jest skorzystanie z biblioteki PHPLib. Wykorzystanie PHP w wersji poniżej 4 jest jednak obecnie praktycznie niespotykane.
Sesja może być rozpoczynana na kilka różnych sposobów. Podstawowy to wywołanie funkcji session_start. W przypadku gdy sesja wykorzystuje cookies, funkcja ta musi być wywołana, zanim jakiekolwiek dane zostaną wysłane do przeglądarki. Wynika to z faktu przesyłania cookies w nagłówkach protokołu HTTP. Warto umieścić wywołanie se$sion_start na początku każdego skryptu korzystającego z sesji. Funkcja session_ start nie przyjmuje żadnych parametrów, a zatem jej wywołanie ma postać: session_start();
i zwraca wartość true. Należy zwrócić uwagę na to, że począwszy od wersji 4.3.3 wywołanie funkcji session_start w przypadku gdy sesja została już otwarta (w tym samym skrypcie) powoduje powstanie błędu. Nie można zatem otworzyć dwóch sesji w tym samym skrypcie.
Sesja zostanie również rozpoczęta, jeśli wywołana zostanie funkcja session_register rejestrująca zmienne dla sesji. Dokładniejszy opis działania tej funkcji znajduje się w sekcji „Zmienne sesji”.
Istnieje również możliwość automatycznego rozpoczynania sesji podczas wywoływania każdego skryptu. W tym celu należy ustawić na 1 zmienną konfiguracyjną session. auto_start w pliku php.ini. Wartością domyślną jest 0, czyli domyślnie opcja ta jest wyłączona.
W celu zakończenia sesji należy wywołać funkcję session_destroy. Usuwa ona identyfikator oraz zasoby powiązane z sesją, nie usuwa jednak zmiennych zarejestrowanych