KWALIFIKACJA INF3 - TEST WIEDZY NR 2

PYTANIE NR 34.
Rozważ następujący fragment kodu PHP:
<?php
setcookie("user", "John Doe", time() + 3600);
?>

Co ten kod robi?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Funkcja setcookie() ustawia w odpowiedzi HTTP ciasteczko o podanej nazwie i wartości. Trzeci argument to czas wygaśnięcia (timestamp): time() + 3600 oznacza "za 3600 sekund", czyli za około 1 godzinę. Kod nie usuwa ani nie odczytuje cookie, tylko je ustawia.

Pełne wyjaśnienie:

Kod wywołuje funkcję setcookie("user", "John Doe", time() + 3600). W PHP oznacza to przygotowanie nagłówka HTTP Set-Cookie, który przeglądarka zapisze jako ciasteczko o nazwie user i wartości John Doe.

Kluczowy jest trzeci parametr: time() + 3600. Funkcja time() zwraca bieżący czas jako znacznik UNIX (liczbę sekund od epoki). Dodanie 3600 przesuwa moment wygaśnięcia o 3600 sekund, czyli o około 1 godzinę. Po upływie tego czasu przeglądarka powinna traktować cookie jako wygasłe.

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

  • Stwierdzenie o "czasie nieokreślonym" nie pasuje, bo w kodzie wyraźnie podano czas wygaśnięcia (nie jest to cookie bezterminowe ani typowo sesyjne).
  • Usuwanie cookie w PHP zwykle realizuje się przez ustawienie tej samej nazwy z datą wygaśnięcia w przeszłości (np. czas mniejszy niż aktualny) oraz zgodnymi parametrami ścieżki/domeny. Tutaj ustawiany jest czas w przyszłości, więc to nie jest usunięcie.
  • Sprawdzenie wartości cookie wymagałoby odczytu z $_COOKIE w kolejnym żądaniu. Samo wywołanie setcookie() nie weryfikuje aktualnej wartości po stronie serwera w tej samej chwili.

Wskazówka egzaminacyjna: gdy w parametrze widzisz wyrażenie typu time() + liczba, niemal zawsze chodzi o ustawienie wygaśnięcia po określonej liczbie sekund.

Dodatkowe pytania

Dodatkowe pytania (FAQ):

setcookie() wysyła do przeglądarki nagłówek Set-Cookie, aby zapisać ciasteczko o podanej nazwie i wartości.

Cookie jest przechowywane po stronie klienta i wraca do serwera w kolejnych żądaniach (w nagłówku Cookie), o ile nie wygasło i pasuje domena/ścieżka.

time() zwraca bieżący czas w sekundach. Dodanie 3600 oznacza przesunięcie o 3600 sekund, czyli o 60 minut.

W praktyce cookie ma wygasnąć "za około 1 godzinę" od momentu wysłania odpowiedzi z nagłówkiem Set-Cookie.

setcookie() ustawia nagłówek odpowiedzi, a $_COOKIE zawiera dane przysłane w bieżącym żądaniu.

Nowe cookie będzie dostępne dopiero w następnym żądaniu (po stronie serwera), gdy przeglądarka odeśle je z powrotem.

Cookie sesyjne zwykle nie ma ustawionej daty wygaśnięcia i znika po zamknięciu przeglądarki (zależnie od ustawień).

Cookie z datą wygaśnięcia ma podany czas (np. time()+3600) i powinno przetrwać do tego momentu, nawet po restarcie przeglądarki.

Najczęściej usuwa się cookie przez ponowne wywołanie setcookie() z tą samą nazwą oraz czasem wygaśnięcia w przeszłości.

Trzeba też zachować zgodne parametry (np. ścieżka, domena), bo inaczej usuniesz inne cookie niż to, które było ustawione.

Zwykle nie. Cookie jest wysyłane w nagłówkach HTTP, a nagłówki muszą zostać wysłane przed treścią odpowiedzi.

Jeśli skrypt wypisał już treść (np. echo HTML), możesz dostać błąd typu "headers already sent". Dlatego setcookie() wywołuj przed generowaniem wyjścia.

Krótkotrwałe cookie bywa używane do tymczasowych preferencji (np. język, ustawienia UI), ograniczania powtarzania komunikatów (baner wyświetlany raz na godzinę) lub prostych znaczników analitycznych.

W praktyce dobiera się czas do celu i ryzyka prywatności.

Nazwa (user) to klucz, pod którym przeglądarka przechowuje dane, a wartość (John Doe) to treść cookie.

W kolejnych żądaniach przeglądarka może wysłać je do serwera, a PHP udostępni je w tablicy $_COOKIE pod tą nazwą.

W kodzie widoczny jest trzeci parametr time()+3600, czyli konkretna data wygaśnięcia w przyszłości.

"Czas nieokreślony" kojarzy się z brakiem parametru wygaśnięcia albo bardzo odległą datą, a tutaj ustawiono dokładnie 3600 sekund.

Przećwicz trzy operacje: ustawienie cookie (setcookie()), odczyt w PHP ($_COOKIE) i usunięcie (cookie z datą w przeszłości).

Warto też rozumieć, że cookie działa przez nagłówki HTTP i wraca dopiero w kolejnym żądaniu.

info

Około 60% zdających odpowiada poprawnie na to pytanie. średnie

Eksperci podkreślają: "Funkcja setcookie() ustawia w odpowiedzi HTTP ciasteczko o podanej nazwie i wartości."

Źródła:

  • PHP Manual: setcookie — https://www.php.net/manual/en/function.setcookie.php (accessed 2026-03-04)
  • PHP Manual: time — https://www.php.net/manual/en/function.time.php (accessed 2026-03-04)
  • RFC 6265: HTTP State Management Mechanism (Cookies), Section "Set-Cookie" — https://www.rfc-editor.org/rfc/rfc6265 (accessed 2026-03-04)

Materiały:

  • Dokumentacja PHP: setcookie() (opis parametrów i przykładów)
  • Dokumentacja PHP: time() (znaczniki czasu UNIX)
  • Materiały o HTTP cookies (nagłówek Set-Cookie i atrybuty wygasania)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego