W języku PHP zmienna predefiniowana $_SESSION zawiera
A. zmienne przesyłane do skryptu za pomocą ciastek (cookie).
B. spis zarejestrowanych sesji na serwerze WWW.
C. zmienne zarejestrowane w bieżącej sesji.
D. zmienne przesyłane do skryptu za pomocą formularza.
Pytanie z egzaminu CKE, czerwiec 2018 (arkusz E.14-X-18.06).
Zmienna predefiniowana $_SESSION w PHP jest tablicą superglobalną, w której znajdują się dane zapisane dla aktualnie obsługiwanej sesji użytkownika. Czyli chodzi dokładnie o zmienne zarejestrowane w bieżącej sesji. W praktyce używa się tego np. po zalogowaniu użytkownika: można zapisać jego identyfikator, rolę, informację o koszyku w sklepie albo etap wypełniania dłuższego formularza. Ważne jest, że przed korzystaniem z $_SESSION zwykle trzeba uruchomić mechanizm sesji funkcją session_start(), najlepiej na początku skryptu, zanim zostanie wysłany jakikolwiek output do przeglądarki. Moim zdaniem to jedna z podstawowych rzeczy w PHP, bo bez sesji trudno zrobić normalne logowanie. Dobra praktyka branżowa mówi też, żeby po zalogowaniu wykonać session_regenerate_id(true), nie przechowywać w sesji haseł ani nadmiaru danych wrażliwych, a ciasteczko sesyjne zabezpieczać flagami HttpOnly, Secure i SameSite. Samo $_SESSION nie jest listą wszystkich sesji na serwerze, tylko widokiem danych przypisanych do konkretnego użytkownika i jego aktualnego identyfikatora sesji.
Warto tu rozdzielić kilka mechanizmów, bo w PHP łatwo je pomylić, szczególnie na początku nauki. $_SESSION nie przechowuje spisu wszystkich sesji działających na serwerze WWW. Serwer faktycznie może mieć wiele plików lub rekordów sesyjnych, zależnie od konfiguracji session.save_handler, ale skrypt dostaje dostęp tylko do danych powiązanych z bieżącym identyfikatorem sesji użytkownika. Nie jest to więc panel administracyjny ani katalog aktywnych połączeń. Częsty błąd myślowy polega na tym, że skoro nazwa zawiera session, to ktoś zakłada, że chodzi o cały system sesji, a nie o dane aktualnej sesji. $_SESSION nie jest też odpowiednikiem ciasteczek. Dane przesyłane przez cookies trafiają do $_COOKIE, natomiast ciasteczko sesyjne najczęściej zawiera tylko identyfikator, np. PHPSESSID, dzięki któremu PHP odnajduje dane sesji po stronie serwera. To ważna różnica z punktu widzenia bezpieczeństwa, bo nie powinno się trzymać istotnych danych logowania bezpośrednio w cookie. Formularze to jeszcze inny temat: dane wysłane metodą POST odczytuje się z $_POST, a metodą GET z $_GET. Sesja służy raczej do zachowania stanu między kolejnymi żądaniami HTTP, które same z siebie są bezstanowe. Z mojego doświadczenia najlepiej zapamiętać to tak: formularz przekazuje dane jednorazowo, cookie identyfikuje lub przechowuje małe informacje po stronie klienta, a $_SESSION trzyma dane bieżącego użytkownika po stronie aplikacji.