KWALIFIKACJA INF3 - TEST WIEDZY NR 1

PYTANIE NR 32.
Jak usunąć ciasteczko w PHP?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Ciasteczko jest przechowywane w przeglądarce, więc w PHP nie usuwa się go jak zmiennej. Usunięcie osiąga się przez wysłanie nagłówka Set-Cookie z tą samą nazwą i parametrami oraz z datą wygaśnięcia w przeszłości, co powoduje skasowanie cookie po stronie klienta.

Pełne wyjaśnienie:

W PHP nie ma "bezpośredniego" kasowania ciasteczka z pamięci serwera, ponieważ cookie jest przechowywane po stronie klienta (w przeglądarce). Serwer może jedynie wydać polecenie przeglądarce, aby usunęła dane cookie. Robi się to przez ponowne ustawienie ciasteczka tą samą nazwą oraz z czasem wygaśnięcia ustawionym na moment w przeszłości.

Dlatego poprawna jest odpowiedź: "Ustawiając datę wygaśnięcia ciasteczka na przeszłość." W praktyce realizuje się to zwykle funkcją setcookie() (lub mechanizmem frameworka), ustawiając parametr expires na wartość mniejszą od aktualnego czasu.

Dlaczego pozostałe odpowiedzi są błędne?

  • "Używając funkcji unset()."unset() usuwa zmienną w PHP, ale nie usuwa danych zapisanych w przeglądarce. Najwyżej skasuje wpis w tablicy $_COOKIE w bieżącym żądaniu, co nie wpływa na przyszłe żądania klienta.
  • "Używając funkcji delete_cookie()." – taka funkcja nie jest standardową funkcją PHP. Może istnieć w konkretnym frameworku lub bibliotece, ale pytanie dotyczy PHP ogólnie.
  • "Nie można usunąć ciasteczka w PHP." – to nieprawda. Choć PHP nie usuwa pliku cookie "w przeglądarce" bezpośrednio, może skutecznie spowodować jego usunięcie przez ustawienie wygasania w przeszłości (oraz zgodnych atrybutów jak ścieżka i domena).

Wskazówka egzaminacyjna: jeśli w odpowiedziach pojawia się expires/max-age w przeszłości, to zwykle jest to właściwa metoda "kasowania" cookie.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Najczęściej usuwa się cookie przez nadpisanie go tą samą nazwą i ustawienie czasu wygaśnięcia w przeszłości (albo Max-Age na 0). Kluczowe jest też użycie tej samej ścieżki i (jeśli było ustawione) tej samej domeny.
Przeglądarka usuwa ciasteczka, które są już przeterminowane. Gdy serwer wyśle nagłówek Set-Cookie z datą wcześniejszą niż teraz, przeglądarka traktuje je jako nieważne i usuwa zapis z magazynu cookies.
Nie. unset() usuwa tylko element tablicy $_COOKIE w bieżącym wykonaniu skryptu PHP. Cookie w przeglądarce nadal istnieje i wróci w kolejnym żądaniu, dopóki nie wygaśnie lub nie zostanie skasowane przez przeglądarkę.
Muszą zgadzać się co najmniej: nazwa oraz zwykle path i domain (jeśli były użyte przy ustawianiu). Jeśli usuwasz cookie z inną ścieżką lub domeną, możesz nie trafić w ten sam wpis i cookie nie zniknie.
Najczęściej wtedy, gdy podasz inny path lub domain niż przy tworzeniu cookie, albo gdy cookie ma atrybuty typu Secure i testujesz je w innym schemacie (HTTP vs HTTPS). Problemem bywa też ustawianie cookie po wysłaniu nagłówków.
Nie w sensie fizycznego skasowania zapisu w przeglądarce "z serwera". Serwer może jedynie zainicjować usunięcie przez odpowiedni nagłówek. Dodatkowo warto unieważnić powiązany token/sesję na serwerze, aby stare cookie nie dawało dostępu.
Set-Cookie to nagłówek HTTP, którym serwer informuje przeglądarkę o utworzeniu/zmianie/usunięciu cookie. W PHP funkcja setcookie() jest wygodnym sposobem wygenerowania tego nagłówka w odpowiedniej postaci.
Typowe błędy to: użycie unset() zamiast wygaszenia cookie, brak zgodności path/domain, próba ustawienia cookie po wypisaniu HTML (nagłówki już wysłane) oraz mylenie cookie sesyjnego z trwałym (persistent) i oczekiwanie natychmiastowego efektu bez przeładowania.
Nie ma specjalnej metody "inaczej". HttpOnly ogranicza dostęp z JavaScript, ale cookie nadal usuwa się tak samo: przez nadpisanie z wygaśnięciem w przeszłości (z zachowaniem nazwy i parametrów). To atrybut bezpieczeństwa, nie mechanizm kasowania.
Warto umieć: wyjaśnić różnicę między cookie a sesją, znać rolę setcookie(), atrybutów expires/max-age, path, domain, Secure, HttpOnly i SameSite, oraz typowe zastosowania: logowanie, preferencje i zgody.
info

Statystycznie 79% uczniów zna prawidłową odpowiedź. średnio łatwe

Eksperci podkreślają: "Ciasteczko jest przechowywane w przeglądarce, więc w PHP nie usuwa się go jak zmiennej."

Źródła:

  • PHP Manual: setcookie — https://www.php.net/manual/en/function.setcookie.php (dostęp: 2026-02-27)
  • PHP Manual: Cookies — https://www.php.net/manual/en/features.cookies.php (dostęp: 2026-02-27)
  • RFC 6265: HTTP State Management Mechanism (cookies) — https://www.rfc-editor.org/rfc/rfc6265 (dostęp: 2026-02-27)

Materiały:

  • Dokumentacja PHP: setcookie() (manual i przykłady)
  • Dokumentacja PHP: Cookies (wprowadzenie i działanie)
  • Materiały kursowe o HTTP nagłówkach (Set-Cookie) i atrybutach cookie (path, domain, expires/max-age)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego