KWALIFIKACJA INF3 - CZERWIEC 2023 (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 cookie w PHP realizuje się przez ponowne wysłanie nagłówka Set-Cookie z tą samą nazwą i datą wygaśnięcia ustawioną w przeszłości.
setcookie("ciastko", "", time()-3600);
ustawia wygaszenie sprzed chwili, więc przeglądarka usuwa ciasteczko po stronie klienta.

Pełne wyjaśnienie:

Ciasteczko (cookie) jest przechowywane w przeglądarce, a serwer nie usuwa go "bezpośrednio" z dysku użytkownika. Serwer może jedynie zainstruować przeglądarkę, aby nadpisała lub usunęła wpis, wysyłając odpowiedni nagłówek Set-Cookie.

Dlatego poprawnym sposobem usunięcia cookie w PHP jest użycie funkcji setcookie() z:

  • tą samą nazwą ciasteczka,
  • dowolną (często pustą) wartością,
  • czasem wygaśnięcia ustawionym w przeszłości.

Wariant setcookie("ciastko", "", time()-3600); spełnia te warunki: wylicza czas "sprzed teraz" (o 3600 sekund), więc przeglądarka uznaje, że cookie jest przeterminowane i usuwa je.

Pozostałe propozycje są błędne z typowych powodów:

  • deletecookie("ciastko"); – w czystym PHP nie ma standardowej funkcji o takiej nazwie; może się kojarzyć z API bibliotek, ale nie jest to wbudowany mechanizm.
  • setcookie("$ciastko", "", 0); – użycie "$ciastko" sugeruje zmienną w łańcuchu zamiast literalnej nazwy cookie, a parametr czasu 0 nie jest ogólną regułą "usuń" (zależnie od interpretacji może skutkować cookie sesyjnym, czyli usuwanym dopiero po zamknięciu przeglądarki).
  • unsetcookie("$ciastko"); – taka funkcja również nie jest standardową funkcją PHP do obsługi cookies; myli się ją czasem z unset(), które usuwa zmienną w PHP, ale nie wysyła nagłówka do przeglądarki.

Wskazówka egzaminacyjna: jeśli pytanie dotyczy usuwania cookies w PHP, niemal zawsze chodzi o setcookie() z datą w przeszłości. W praktycznych projektach trzeba też pamiętać, że aby usunąć konkretne cookie, często należy podać te same parametry (np. path i domain) jak przy jego ustawianiu, inaczej przeglądarka może traktować je jako inne ciasteczko.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Aby usunąć cookie, wyślij ponownie nagłówek Set-Cookie z tą samą nazwą i czasem wygaśnięcia w przeszłości, np. setcookie("nazwa", "", time()-3600);. Przeglądarka uzna je za przeterminowane i skasuje po stronie klienta.
Cookie jest przechowywane w przeglądarce, więc serwer nie może go "skasować" bezpośrednio. Może tylko wysłać instrukcję w nagłówku. Gdy Expires/Max-Age wskazuje przeszłość, przeglądarka usuwa wpis jako nieważny.
time() zwraca bieżący czas Unix, a -3600 cofa go o godzinę. Taki czas jest w przeszłości, więc cookie natychmiast wygasa. Liczba 3600 to tylko przykład; ważne jest, by data była wcześniejsza niż "teraz".
Nie w sensie usunięcia z przeglądarki. unset() usuwa zmienną w kodzie PHP, ale nie wysyła nagłówka Set-Cookie. Żeby przeglądarka skasowała cookie, trzeba użyć setcookie() z wygaszeniem w przeszłości.
Typowe błędy to: użycie nieistniejących funkcji typu "deletecookie", ustawienie czasu na 0 (co może dać cookie sesyjne), użycie złej nazwy (np. zmiennej zamiast literału) oraz brak zgodności path/domain z oryginalnym cookie.
Gdy cookie było ustawione z konkretnym path lub domain, usuwanie powinno użyć tych samych wartości. W przeciwnym razie przeglądarka może potraktować polecenie jako dotyczące innego cookie, a "stare" pozostanie nadal zapisane.
Nie zawsze. Skasowanie cookie usuwa identyfikator po stronie klienta, ale dane sesji na serwerze mogą nadal istnieć do czasu wygaśnięcia lub ręcznego czyszczenia. W systemach logowania warto łączyć usuwanie cookie z unieważnieniem tokenu/sesji na serwerze.
Cookie sesyjne zwykle nie ma trwałej daty wygaśnięcia i znika po zamknięciu przeglądarki. Cookie trwałe ma ustawione Expires lub Max-Age i może przetrwać restart. Usuwanie najpewniej wykonasz przez ustawienie wygaśnięcia w przeszłości.
Pusta wartość nie jest istotą usuwania, ale jest częstą praktyką: nadpisujesz zawartość na "pusto" i jednocześnie ustawiasz wygaszenie w przeszłości. Kluczowe jest właśnie wygaśnięcie, bo to ono powoduje usunięcie wpisu w przeglądarce.
Utrwal: czym jest nagłówek Set-Cookie, jakie są atrybuty Expires/Max-Age, path, domain, Secure, HttpOnly, SameSite. Przećwicz scenariusze: logowanie/wylogowanie, reset preferencji i różnice między cookie sesyjnym a trwałym.
info

To pytanie poprawnie rozwiązuje 67% zdających egzamin. średnie

Według specjalistów z branży: "Usunięcie cookie w PHP realizuje się przez ponowne wysłanie nagłówka Set-Cookie z tą samą nazwą i datą wygaśnięcia ustawioną w przeszłości."

Źródła:

  • PHP Manual: setcookie — https://www.php.net/manual/en/function.setcookie.php (dostęp: 2026-03-02)
  • MDN Web Docs: Using HTTP cookies — https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies (dostęp: 2026-03-02)
  • RFC 6265: HTTP State Management Mechanism — https://www.rfc-editor.org/rfc/rfc6265 (dostęp: 2026-03-02)

Materiały:

  • Dokumentacja PHP: setcookie() (opis parametrów, przykłady usuwania)
  • Dokumentacja MDN: HTTP cookies (Expires/Max-Age, atrybuty bezpieczeństwa)
  • RFC dotyczące cookies (ogólne zasady działania i atrybuty)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego