Często musimy przechowywać więcej informacji w plikach cookies, ale maksymalny limit dla plików cookie wynosi 4 kB, czyli niewiele. Sesje rozwiązują ten problem, ponieważ przechowują dane na serwerze WWW, a w przeglądarce klienta przechowują jedynie krótki identyfikator pozwalający stwierdzić, które dane należą do którego klienta.
Przed przystąpieniem do pracy z sesjami należy je najpierw uruchomić. Odbywa się to przez wywołanie funkcji session_start() na samym początku skryptu:
session_start();
Silne ostrzeżenie: przed wywołaniem funkcji
session_start()nie może być wykonywany żaden kod wyjściowy do kodu HTML!
Zawartość sesji jest przechowywana na serwerze, a do przeglądarki klienta wysyłany jest tylko identyfikator, więc użytkownik nie ma możliwości sprawdzenia, co jest przechowywane w sesji. Jedynym sposobem, w jaki skrypt może wpłynąć na użytkownika, jest usunięcie identyfikatora (wówczas skrypt wygeneruje nowy).
Wszystkie sesje są przechowywane w zmiennej superglobalnej $_SESSION i mogą być przeglądane jako tablica.
Na przykład nazwę aktualnie zalogowanego użytkownika można uzyskać, pisząc:
echo $_SESSION['użytkownik'];
Uwaga: Sesja może nie zawsze istnieć (np. jeśli jesteś nowym użytkownikiem). Dlatego przed wpisaniem na listę należy zawsze sprawdzić, czy istnieje i w razie potrzeby zaproponować alternatywny komunikat o błędzie.
if (isset($_SESSION['użytkownik']) && $_SESSION['użytkownik']) {echo 'Zalogowany użytkownik:' . $_SESSION['użytkownik'];} else {echo 'Nikt nie jest zalogowany.';}
Zapisywanie odbywa się jako zwykłe zapisywanie danych do zmiennej:
$_SESSION['użytkownik'] = 'Honzik';
Serwer WWW zajmie się technicznym zapewnieniem prawidłowego przechowywania danych na serwerze i przesyłania identyfikatora do użytkownika.
Poszczególne wartości można usuwać oddzielnie, zgodnie z kluczem:
unset($_SESSION['użytkownik']);
Można też wybrać wszystkie dostępne sesje:
unset($_SESSION);
Uwaga: Usunięcie określonej sesji nie powoduje opróżnienia wartości klucza, ale powoduje całkowite usunięcie klucza. Dlatego przy próbie odczytania nieistniejącego klucza zostanie wyświetlone ostrzeżenie o błędzie. Zawsze możemy łatwo sprawdzić istnienie klucza za pomocą funkcji
isset().
Każda zapisana sesja ma limit czasu, przez jaki będzie przechowywana na serwerze. PHP bezpośrednio zawiera skrypt cron, który okresowo usuwa stare sesje.
Domyślnie jest to zwykle 1440 sekund, czyli 24 minuty.
Zwiększanie wartości należy przeprowadzić w dwóch miejscach:
php.ini`` ustawiana jest maksymalna długość ważności, jaką serwer będzie utrzymywał</a>. Wartość ta jest ustawiana przez dyrektywęsession.gc_maxlifetime`,Użycie w PHP:
// serwer będzie teraz utrzymywał sesję przez maksymalnie 3600 sekund = 1 godzinęini_set('session.gc_maxlifetime', '3600');// wszyscy klienci (przeglądarki) będą// sesja wysłana z okresem ważności wynoszącym dokładnie 3600 sekundsession_set_cookie_params(3600);session_start(); // możemy rozpocząć sesję!
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články a novinky nejen ze světa PHP a programování. Nenechte si ujít jediný článek.
Články píše Jan Barášek © 2009-2025 | Kontakt | Mapa webu
Status | Aktualizováno: ... | pl