KWALIFIKACJA INF3 - CZERWIEC 2024 (test 2)

PYTANIE NR 9.
W jaki sposób, stosując język PHP można usunąć ciasteczko o nazwie ciastko?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Usunięcie ciasteczka w PHP wykonuje się przez ponowne wysłanie nagłówka Set-Cookie z tą samą nazwą oraz czasem wygaśnięcia ustawionym w przeszłości.
Dlatego poprawne jest wywołanie setcookie("ciastko", "", time()-3600), bo przeglądarka usuwa cookie po jego wygaśnięciu.

Pełne wyjaśnienie:

Ciasteczko (cookie) jest przechowywane po stronie przeglądarki, a PHP może jedynie zlecić jego utworzenie/zmianę/usunięcie przez wysłanie odpowiedniego nagłówka HTTP Set-Cookie. Z tego powodu w PHP nie istnieje osobna wbudowana funkcja "deletecookie()" do kasowania cookies.

Poprawny sposób polega na użyciu setcookie() z:

  • nazwą ciasteczka jako napisem: "ciastko",
  • pustą wartością: "",
  • czasem wygaśnięcia ustawionym w przeszłości, np. time()-3600.

Wywołanie setcookie("ciastko", "", time()-3600); powoduje, że przeglądarka uzna cookie za wygasłe i je usunie.

Pozostałe propozycje są błędne typowo z następujących powodów:

  • deletecookie("ciastko"); – taka funkcja nie jest standardową funkcją PHP do obsługi cookies, więc kod nie spełnia zadania.
  • setcookie("$ciastko", "", 0); – użycie $ciastko sugeruje zmienną, a nie stałą nazwę "ciastko"; dodatkowo parametr wygaśnięcia równy 0 oznacza cookie sesyjne (do zamknięcia przeglądarki), a nie wymuszone usunięcie przez datę w przeszłości.
  • unsetcookie("$ciastko"); – to również nie jest standardowa funkcja PHP do zarządzania nagłówkami cookies.

W praktyce pamiętaj, że operacje na ciasteczkach muszą zajść przed wysłaniem jakichkolwiek danych wyjściowych (w przeciwnym razie pojawia się problem typu "headers already sent"). Gdy cookie było ustawione z konkretną ścieżką lub domeną, przy usuwaniu zwykle trzeba podać te same parametry, aby przeglądarka skasowała właściwy wpis.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
PHP nie "kasuje" pliku w przeglądarce bezpośrednio. Wysyła nagłówek Set-Cookie z tą samą nazwą i datą wygaśnięcia w przeszłości. Przeglądarka widzi, że cookie jest wygasłe, i usuwa je automatycznie.
Mechanizm cookies opiera się na atrybucie wygaśnięcia. Jeśli data jest wcześniejsza niż bieżąca, cookie jest traktowane jako nieważne. To standardowy, przenośny sposób wymuszenia usunięcia przez przeglądarkę.
Trzeci parametr to czas wygaśnięcia jako liczba sekund w formie znacznika czasu systemowego. Gdy ustawisz go na wartość z przeszłości, cookie ma status wygasłego. Gdy ustawisz 0, zwykle tworzysz cookie sesyjne.
W standardowym PHP nie ma wbudowanej funkcji deletecookie(). Usuwanie realizuje się przez setcookie() z odpowiednimi parametrami (nazwa, pusta wartość, wygaśnięcie w przeszłości), bo to przeglądarka przechowuje i usuwa cookie.
Gdy ustawisz expires=0, zazwyczaj tworzysz lub nadpisujesz cookie jako sesyjne (zniknie dopiero po zamknięciu przeglądarki). To nie jest to samo co natychmiastowe usunięcie. Do usuwania stosuje się czas w przeszłości.
Najczęstszy powód to niezgodność parametrów ścieżka lub domena względem tych, które były użyte przy tworzeniu cookie. Przeglądarka traktuje takie wpisy jako różne ciasteczka. Drugi powód to wysłanie danych wyjściowych przed nagłówkiem.
Jeśli wyślesz już fragment HTML lub echo przed setcookie(), nagłówki mogą być zablokowane i pojawia się błąd typu headers already sent. Wtedy przeglądarka nie dostaje nagłówka Set-Cookie, więc cookie nie zostanie zmienione ani usunięte.
Typowo przy wylogowaniu ustawiasz wartość cookie na pustą i wygaśnięcie w przeszłości, a następnie przekierowujesz użytkownika. Dodatkowo warto zniszczyć dane po stronie serwera (np. sesję), aby samo cookie nie umożliwiło ponownego użycia.
Cookie sesyjne znika po zamknięciu przeglądarki, ale jeśli chcesz usunąć je od razu, nadal wysyłasz Set-Cookie z wygaśnięciem w przeszłości. To działa niezależnie od tego, czy wcześniej było sesyjne czy trwałe.
Przećwicz: tworzenie cookie, odczyt z tablicy superglobalnej, usuwanie przez wygaśnięcie w przeszłości oraz wpływ ścieżki/domeny. Zwracaj uwagę na to, że cookies są nagłówkami HTTP, więc muszą być wysłane przed treścią odpowiedzi.
info

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

Źródła:

  • PHP Manual: setcookie — Sends a cookie, https://www.php.net/manual/en/function.setcookie.php (accessed 2026-03-13)
  • PHP Manual: Cookies, https://www.php.net/manual/en/features.cookies.php (accessed 2026-03-13)
  • RFC 6265: HTTP State Management Mechanism, https://www.rfc-editor.org/rfc/rfc6265 (accessed 2026-03-13)

Materiały:

  • Oficjalna dokumentacja PHP: setcookie() (opis parametrów i przykładów)
  • Materiały o działaniu nagłówków HTTP i mechanizmie Set-Cookie
  • Ćwiczenia praktyczne: logowanie/wylogowanie z użyciem cookies i sesji

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego