Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Administracja serwerem i bezpieczeństwo PHP

Słowa kluczowe: $_GET w PHP $_POST w PHP $_SESSION w PHP Cookie

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.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.