session_start(); if (!isset($_SESSION["login"])) { header("Location: logowanie.php"); exit; } Przedstawiony fragment kodu PHP służy do obsługi
session_start(); if (!isset($_SESSION["login"])) { header("Location: logowanie.php"); exit; }Przedstawiony fragment kodu PHP służy do obsługi
Poprawna jest odpowiedź: obsługa sesji. Funkcja session_start() rozpoczyna lub wznawia sesję, a tablica $_SESSION przechowuje dane użytkownika po stronie serwera między kolejnymi żądaniami. Kod sprawdza, czy w sesji zapisano login; jeśli nie, użytkownik nie jest zalogowany i zostaje przekierowany na stronę logowania nagłówkiem Location.
Do zapamiętania: session_start() musi być wywołane przed wysłaniem jakiejkolwiek treści do przeglądarki, podobnie jak header(). Po udanym logowaniu zapisuje się $_SESSION["login"] = $uzytkownik;, a wylogowanie to session_destroy(). Instrukcja exit po przekierowaniu zatrzymuje dalszy kod strony chronionej. Taki fragment umieszcza się na początku każdej strony dostępnej tylko po zalogowaniu.
Łatwo wybrać ciasteczka, bo sesja w PHP rzeczywiście korzysta z cookie - przeglądarka przechowuje w nim tylko identyfikator sesji (domyślnie PHPSESSID). Same dane sesji są jednak na serwerze, a kod odwołuje się do tablicy $_SESSION. Obsługa ciasteczek wyglądałaby inaczej: setcookie() do zapisu i tablica $_COOKIE do odczytu.
Formularz obsługuje się przez tablice $_POST lub $_GET, z których odczytuje się wartości pól - tutaj żadnej z nich nie ma. Baza danych wymagałaby połączenia, np. mysqli_connect(), i zapytań SQL. Po nazwie tablicy superglobalnej łatwo rozpoznać, czego dotyczy kod: $_SESSION - sesja, $_COOKIE - ciasteczka, $_POST i $_GET - dane formularza lub adresu, $_FILES - przesłane pliki. Gdyby w kodzie pojawiły się dwie różne tablice, trzeba by przeanalizować, której dotyczy warunek; tutaj jest tylko sesja. Rozpoznanie tablicy superglobalnej wystarcza więc do wskazania właściwej odpowiedzi.