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

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
A. formularza.
Źle. Dane formularza odczytuje się z tablic POST lub GET, których w kodzie nie ma.
B. ciasteczek.
Źle. Ciasteczka obsługuje się przez setcookie() i tablicę ciasteczek; tu dane są w sesji.
C. bazy danych.
Źle. Kod nie łączy się z bazą i nie wykonuje zapytań SQL.
D. sesji.
Dobrze. session_start() i superglobalna tablica sesji służą do obsługi sesji użytkownika.

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.

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.