KWALIFIKACJA INF3 - STYCZEŃ 2023

PYTANIE NR 39.
Funkcji session_start() języka PHP należy użyć przy implementacji
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
session_start() inicjuje (lub wznawia) sesję, dzięki czemu aplikacja może przechowywać i odczytywać dane użytkownika pomiędzy kolejnymi żądaniami HTTP. Jest to typowe w witrynach wielostronicowych, gdzie podczas przechodzenia między podstronami trzeba zachować stan (np. zalogowanie, koszyk).

Pełne wyjaśnienie:

HTTP jest protokołem bezstanowym, więc samo przejście na kolejną stronę nie "pamięta" automatycznie danych z poprzedniego żądania. Mechanizm sesji pozwala utrzymać stan użytkownika pomiędzy wieloma żądaniami i podstronami. W PHP, aby móc korzystać z danych sesji (np. tablicy $_SESSION), należy najpierw zainicjować lub wznowić sesję funkcją session_start().

Dlatego poprawna jest odpowiedź: "wielostronicowej witryny, która wymaga dostępu do danych przy przechodzeniu pomiędzy stronami." – to dokładnie opisuje przypadek użycia sesji: przenoszenie danych użytkownika między kolejnymi odsłonami i skryptami.

Pozostałe odpowiedzi są mylące:

  • "wczytywania danych z plików zewnętrznych." – wczytywanie plików realizuje się innymi mechanizmami (np. funkcjami do odczytu plików lub dołączaniem plików). Sesja nie służy do pobierania danych z pliku, tylko do przechowywania danych związanych z użytkownikiem w trakcie jego wizyty.
  • "dowolnej witryny, która obsługuje ciasteczka." – obsługa ciasteczek nie oznacza automatycznie potrzeby sesji. Sesja może wykorzystywać ciasteczko jako nośnik identyfikatora sesji, ale wiele stron używa ciasteczek bez sesji (np. zgody marketingowe, preferencje). Wywołanie session_start() ma sens wtedy, gdy aplikacja faktycznie korzysta z danych sesji.
  • "obsługi formularza." – formularz można obsłużyć bez sesji (np. jednorazowe przesłanie danych metodą POST i ich walidacja). Sesje są przydatne przy formularzach w szczególnych przypadkach (tokeny anty-CSRF, komunikaty po przekierowaniu), ale nie są warunkiem koniecznym "obsługi formularza" jako takiej.

Wskazówka egzaminacyjna: gdy w pytaniu pojawia się potrzeba utrzymania stanu między stronami (logowanie, koszyk, uprawnienia), myśl o sesji i o konieczności jej rozpoczęcia przed użyciem danych sesyjnych.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Funkcja session_start() rozpoczyna nową sesję lub wznawia istniejącą na podstawie identyfikatora sesji. Dzięki temu skrypt może zapisywać i odczytywać dane użytkownika w $_SESSION pomiędzy kolejnymi żądaniami i przejściami między podstronami.
Ponieważ HTTP jest bezstanowe: każde wejście na podstronę to osobne żądanie. Sesja pozwala zachować stan użytkownika (np. zalogowanie, koszyk, uprawnienia) bez konieczności przesyłania tych informacji w każdym adresie URL lub formularzu.
Trzeba ją wywołać w tych skryptach, które korzystają z danych sesji (odczyt lub zapis w $_SESSION). Jeśli dana podstrona w ogóle nie używa sesji, wywołanie nie jest konieczne, choć w praktyce często stosuje się wspólny nagłówek aplikacji.
Sesja to mechanizm utrzymania danych po stronie serwera (zwykle), a ciasteczko to dane przechowywane w przeglądarce. Ciasteczko może przenosić identyfikator sesji, ale samo w sobie nie jest sesją. To różne narzędzia do różnych celów.
Po poprawnym logowaniu zapisuje się w sesji informację, że użytkownik jest uwierzytelniony (np. identyfikator konta i rolę). Potem każda chroniona podstrona sprawdza dane sesji i decyduje, czy pokazać treść, czy przekierować do logowania.
Nie. Prosta obsługa formularza (walidacja danych i zapis) działa bez sesji. Sesja bywa potrzebna dopiero w dodatkowych mechanizmach, np. komunikatach "po przekierowaniu", przechowywaniu koszyka, etapach wielokrokowych lub tokenach zabezpieczających.
Najczęściej są to dane związane z użytkownikiem w trakcie wizyty: identyfikator konta, rola/uprawnienia, ustawienia interfejsu, zawartość koszyka, tymczasowe komunikaty. Nie powinno się tam trzymać wrażliwych danych w formie niezaszyfrowanej ani dużych plików.
session_start() dotyczy wyłącznie mechanizmu sesji (stan użytkownika). Wczytywanie plików to inny obszar: odczyt z dysku lub dołączanie kodu. To, że oba tematy dotyczą "danych", nie znaczy, że służą temu samemu.
Zwykle na początku skryptu, zanim aplikacja zacznie korzystać z danych sesji. W praktycznych projektach umieszcza się ją w pliku wspólnym (np. nagłówku/bootstrappingu) dołączanym na każdej podstronie wymagającej dostępu do $_SESSION.
Częsty błąd to uznanie, że skoro strona "obsługuje ciasteczka", to zawsze potrzebuje sesji. W pytaniach egzaminacyjnych szukaj słów kluczowych: "zachowanie danych między stronami", "zalogowanie", "koszyk" – to wskazuje na sesję, nie na samo ciasteczko.
info

Statystycznie 57% uczniów zna prawidłową odpowiedź. średnie

Specjaliści zwracają uwagę: "session_start() inicjuje (lub wznawia) sesję, dzięki czemu aplikacja może przechowywać i odczytywać dane użytkownika pomiędzy kolejnymi żądaniami HTTP."

Źródła:

  • PHP Manual: session_start — Starts a new session or resumes an existing session, https://www.php.net/manual/en/function.session-start.php (dostęp 2026-02-27)
  • PHP Manual: Sessions (overview), https://www.php.net/manual/en/book.session.php (dostęp 2026-02-27)
  • PHP Manual: $_SESSION, https://www.php.net/manual/en/reserved.variables.session.php (dostęp 2026-02-27)

Materiały:

  • Dokumentacja PHP: sekcja Sessions
  • Kurs podstaw PHP (temat: sesje i ciasteczka)
  • Materiały o HTTP i bezstanowości (stateless) oraz utrzymaniu stanu

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego