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 PHP

W skrypcie PHP po wywołaniu session_start() zapisano $_SESSION['login'] = 'anna';. Gdzie domyślnie przechowywana jest wartość anna?

A. w adresie URL każdej kolejnej podstrony
Źle. Dane w adresie URL przekazuje się parametrami odczytywanymi przez $_GET.
B. w tabeli bazy MySQL tworzonej automatycznie przez PHP
Źle. PHP domyślnie zapisuje sesje w plikach na serwerze i nie tworzy tabel w MySQL.
C. na serwerze, a przeglądarka przechowuje tylko identyfikator sesji
Dobrze. Dane sesji leżą na serwerze, a przeglądarka zna jedynie identyfikator, zwykle PHPSESSID.
D. w ciasteczku zapisanym w przeglądarce użytkownika
Źle. W ciasteczku znajduje się tylko identyfikator sesji, a nie zapisane wartości.

Dane sesji PHP przechowuje serwer, domyślnie w pliku w katalogu tymczasowym wskazanym przez ustawienie session.save_path. Przeglądarka dostaje jedynie identyfikator sesji, zwykle w ciasteczku o nazwie PHPSESSID. Przy kolejnym żądaniu odsyła ten identyfikator, a session_start() odczytuje na jego podstawie zapisane dane do tablicy $_SESSION.

Dlatego w sesji trzyma się informacje, których użytkownik nie powinien móc zmienić, na przykład to, że jest zalogowany i jako kto. Wartość w ciasteczku można podejrzeć i zmodyfikować w narzędziach przeglądarki, a wartości w $_SESSION nie. Sesję kończy session_destroy().

Dzięki temu użytkownik pozostaje zalogowany, przechodząc między podstronami serwisu.

Najczęściej myli się tu sesję z ciasteczkiem, bo oba mechanizmy służą do zapamiętania czegoś między podstronami. Ciasteczko jednak w całości leży w przeglądarce i trafia do skryptu przez $_COOKIE. W przypadku sesji przeglądarka trzyma tylko losowy identyfikator, a wartość anna nigdy do niej nie trafia.

Przekazywanie danych w adresie URL to mechanizm parametrów $_GET, widocznych w pasku adresu. Dawniej PHP potrafił dopisywać do adresu sam identyfikator sesji, ale nigdy zapisanych w niej wartości.

PHP nie tworzy też samodzielnie tabel w MySQL. Zapis sesji w bazie wymaga napisania własnej obsługi, np. przez session_set_save_handler(). Domyślnie dane sesji leżą w plikach na serwerze.

Zasadę warto zapamiętać tak: ciasteczko to dane po stronie przeglądarki, a sesja to dane po stronie serwera, połączone z przeglądarką tylko identyfikatorem.

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.