Sesje

Z PHPEdia.pl
Skocz do: nawigacji, wyszukiwania

Definicja

uproszczona: Sesja jest to w uproszczeniu tablica zmiennych, przypisywanych do sesji przeglądarki. Podczas tworzenia sesji do przeglądarki wysyłane jest ciasteczko z unikalnym numerem sesji (po którym php rozpoznaje z kim ma do czynienia) oraz jest tworzony plik przechowujący zmienne dla każdej sesji.

rozszerzona: Protokół HTTP jest protokołem bezstanowym. Oznacza to, iż protokół nie posiada wbudowanego sposobu utrzymywania stanu pomiędzy dwiema transakcjami. Kiedy użytkownik żąda jednej strony, a później następnej, HTTP nie jest w stanie określić, czy oba żądania pochodzą od tego samego użytkownika. Z pomocą przychodzą nam sesje. Ideą kontroli sesji jest zapewnienie możliwości śledzenia użytkownika podczas pojedynczej sesji w witrynie WWW. Umożliwia ona dokonanie wielu operacji: łatwą obsługę logowania użytkowników oraz wyświetlanie zawartości zależnie od poziomu uwierzytelnienia lub osobistych preferencji, śledzenie zachowań użytkownika, zaimplementowanie koszyków na zakupy etc.

PHP w wersji 4 zawiera wbudowane funkcje kontroli sesji. Wprowadzone zmienne superglobalne $_SESSION ułatwiają zapisywanie zmiennych sesji.

Sesje prowadzone są przez unikatowy identyfikator sesji, kryptograficznie losową liczbę. Identyfikator jest generowany przez PHP i przechowywany po stronie klienta podczas trwania sesji. Może on być przechowywany w komputerze użytkownika jako cookie lub przekazywany przez URL-e.

Identyfikator sesji działał jak klucz pozwalający na zgłoszenie konkretnych zmiennych jako tak zwanych zmiennych sesji. Zawartość tych zmiennych jest przechowywana na serwerze. Identyfikator sesji jest jedyną informację widoczną po stronie klienta.

Zastosowanie

Inicjalizacja sesji

Sesje pozwalają na łatwe przechowywanie informacji np. o zalogowaniu użytkownika. Zanim użyjemy zmiennych sesyjnych, należy zainicjować sesję za pomocą

<?php
session_start();
?>

Dodawanie i pobieranie wartości zmiennych sesyjnych

Aby pobrać / przypisać zmienną sesyjną używamy: session_id

Do zarejestrowania zmiennej sesyjnej używa się

<?php
session_register("nazwa");
// lub
$_SESSION["nazwa"] = "coś tam";
?>

Rzeczą, która odróżnia zwykłe zmienne od zmiennych sesyjnych jest to, że gdy stworzymy zmienną sesyjną to będzie ona widoczna i będzie miała taką samą wartość dopóki jej nie zmienimy lub nie przerwiemy sesji (nie zamkniemy okna przeglądarki).

Usuwanie sesji

Do usuwania sesji służy funkcja session_destroy().

Częste problemy podczas używania sesji

Literatura:


Jest to element FAQ, czyli zestawienia odpowiedzi na najczęściej zadawane pytania.

Zestawienie: Informacje | Podstawy PHP | Porady praktyczne | Pytania z forum | Bezpieczeństwo