KWALIFIKACJA INF3 - STYCZEŃ 2020

PYTANIE NR 34.
Poniżej została przedstawiona obsługa

<?php
if ( !isset($_COOKIE[$nazwa]) )
echo "nie ustawiono!";
else
echo "ustawiono, wartość: " . $_COOKIE[$nazwa];
?>

A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Kod używa tablicy superglobalnej $_COOKIE, więc odczytuje dane z ciasteczek przeglądarki.
Warunek !isset($_COOKIE[$nazwa]) sprawdza, czy cookie o danej nazwie istnieje. Jeśli nie istnieje, wypisuje "nie ustawiono!", a w przeciwnym razie pokazuje jego wartość.

Pełne wyjaśnienie:

W przedstawionym fragmencie PHP kluczowe jest źródło danych: tablica $_COOKIE. Jest to jedna z tablic superglobalnych PHP, w której znajdują się wartości ciasteczek (cookies) przesłane przez przeglądarkę w bieżącym żądaniu HTTP.

Instrukcja isset($_COOKIE[$nazwa]) sprawdza, czy istnieje element tablicy o kluczu równym zmiennej $nazwa, czyli czy cookie o podanej nazwie zostało ustawione i jest dostępne. Zastosowanie negacji !isset(...) powoduje, że w przypadku braku cookie program wypisuje komunikat "nie ustawiono!". Gdy cookie istnieje, uruchamia się gałąź else i wykonywany jest echo z dołączoną wartością z $_COOKIE[$nazwa].

Dlaczego pozostałe odpowiedzi nie pasują? "Sesji" dotyczyłaby tablica $_SESSION (dane po stronie serwera, zwykle po wywołaniu session_start), a nie $_COOKIE. "Bazy danych" wymagałyby zapytania (np. przez PDO/MySQLi) i nie korzystają z tablicy $_COOKIE. "Zmiennych tekstowych" jest zbyt ogólne: choć wartość cookie bywa tekstem, kod jednoznacznie wskazuje mechanizm przechowywania i odczytu przez użycie superglobalnej $_COOKIE oraz sprawdzenie isset.

W praktyce taki wzorzec jest typowy dla obsługi preferencji użytkownika (np. język, motyw, zgody), gdzie aplikacja najpierw weryfikuje obecność cookie, a dopiero potem wykorzystuje jego wartość.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Tablica $_COOKIE zawiera wartości ciasteczek przesłane przez przeglądarkę w bieżącym żądaniu HTTP. Kluczem jest nazwa cookie, a wartością jego treść. Jeśli cookie nie istnieje lub wygasło, odpowiedni klucz nie będzie dostępny w $_COOKIE.
Najczęściej używa się isset($_COOKIE['nazwa']). Funkcja isset zwraca true, gdy element istnieje i nie jest null. Dla bezpieczeństwa przed użyciem wartości cookie warto zawsze wykonać taki test i obsłużyć przypadek braku danych.
Negacja !isset(...) oznacza "nie jest ustawione". Dzięki temu można łatwo rozdzielić logikę: gdy cookie nie istnieje, wyświetlić komunikat lub wartość domyślną, a gdy istnieje, pobrać i wykorzystać jego treść bez generowania ostrzeżeń o nieistniejącym indeksie.
Ciasteczka są przechowywane po stronie klienta (w przeglądarce) i trafiają do serwera w kolejnych żądaniach. Sesja jest utrzymywana po stronie serwera (w PHP zwykle w $_SESSION), a przeglądarka przechowuje tylko identyfikator sesji. To różne mechanizmy stanu.
$_COOKIE będzie zawierać dane tylko wtedy, gdy przeglądarka faktycznie wyśle cookie w żądaniu. Cookie mogło zostać ustawione wcześniej przez serwer (np. funkcją setcookie) lub przez inną stronę w tej samej domenie/ścieżce. Bez tego tablica może być pusta.
Cookie jest dobre dla drobnych preferencji użytkownika, które nie wymagają konta i logowania (np. język strony, motyw, banner zgód). Baza danych jest lepsza, gdy dane mają być trwałe, powiązane z użytkownikiem, większe lub wymagają kontroli dostępu i spójności.
Najczęstsze pomyłki to mylenie $_COOKIE z $_SESSION oraz pomijanie sprawdzenia isset, co prowadzi do ostrzeżeń o niezdefiniowanym indeksie. Zdarza się też błędne założenie, że cookie jest zawsze dostępne mimo wygasania lub blokady w przeglądarce.
Nie w pełni. Cookie jest kontrolowane przez klienta, więc może zostać zmienione. Trzeba je traktować jako dane wejściowe: walidować, filtrować i nie używać do decyzji bezpieczeństwa bez dodatkowej weryfikacji (np. po stronie serwera w bazie danych lub w sesji).
Operator kropki . w PHP służy do konkatenacji łańcuchów znaków. Kod łączy stały tekst z wartością odczytaną z $_COOKIE pod kluczem $nazwa. Jeśli cookie istnieje, użytkownik zobaczy komunikat wraz z konkretną wartością.
Najpewniejszą wskazówką jest użycie tablicy $_COOKIE lub funkcji setcookie. W zadaniach egzaminacyjnych często pojawia się też logika "jeśli nie ustawione, to… inaczej…", co odpowiada sprawdzaniu, czy cookie już istnieje i czy można pobrać jego wartość.
info

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

Według specjalistów z branży: "Kod używa tablicy superglobalnej $_COOKIE, więc odczytuje dane z ciasteczek przeglądarki.Warunek !isset($_COOKIE[$nazwa]) sprawdza, czy cookie o danej nazwie istnieje."

Źródła:

  • PHP Manual: Superglobals — $_COOKIE, https://www.php.net/manual/en/reserved.variables.cookies.php (dostęp: 2026-03-01)
  • PHP Manual: isset() — description and behavior, https://www.php.net/manual/en/function.isset.php (dostęp: 2026-03-01)
  • PHP Manual: Cookies — setcookie() and general notes, https://www.php.net/manual/en/function.setcookie.php (dostęp: 2026-03-01)

Materiały:

  • Oficjalna dokumentacja PHP: superglobals oraz cookies
  • Ćwiczenia praktyczne: ustawianie i odczyt cookies w prostej aplikacji PHP
  • Materiały o różnicach: cookie vs sesja vs localStorage (koncepcyjnie)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego