KWALIFIKACJA INF3 - WRZESIEŃ 2014

PYTANIE NR 22.
W skrypcie PHP należy utworzyć cookie o nazwie "owoce", które przyjmie wartość "jabłko". Cookie ma być dostępne przez jedną godzinę od jego utworzenia. W tym celu należy w skrypcie PHP użyć funkcji:
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawne jest użycie setcookie(), ponieważ ta funkcja w PHP ustawia ciasteczko, a jej trzeci parametr określa czas wygaśnięcia jako znacznik czasu UNIX. Wyrażenie time()+3600 oznacza "teraz + 3600 sekund", czyli 1 godzinę od utworzenia. Pozostałe propozycje mają złą nazwę funkcji lub zamienione argumenty.

Pełne wyjaśnienie:

W PHP do utworzenia ciasteczka (cookie) służy funkcja setcookie(). Przyjmuje ona m.in. nazwę ciasteczka i jego wartość, a także moment wygaśnięcia. Aby cookie było ważne przez jedną godzinę, należy ustawić czas wygaśnięcia na "bieżący czas + 3600 sekund". Do pobrania bieżącego czasu w sekundach od epoki UNIX używa się funkcji time(), stąd poprawny zapis time()+3600.

Odpowiedź setcookie("owoce", "jabłko", time()+3600); jest poprawna, bo:

  • ustawia cookie o nazwie "owoce",
  • nadaje mu wartość "jabłko",
  • ustala wygaśnięcie za 3600 sekund (1 godzinę) od chwili wywołania.

Odpowiedzi z funkcją cookie(...) są niepoprawne, ponieważ standardowo w PHP nie używa się funkcji o takiej nazwie do ustawiania ciasteczek. Z kolei zapis setcookie("jabłko", "owoce", time()+3600); ma zamienioną kolejność pierwszych parametrów: jako nazwę ciasteczka przyjmuje "jabłko", a jako wartość "owoce", co nie spełnia warunku z treści zadania.

W praktyce warto pamiętać, że ustawianie cookie odbywa się przez nagłówek HTTP Set-Cookie, więc w PHP wywołanie setcookie() powinno nastąpić przed wysłaniem treści strony (zanim pojawi się jakikolwiek output). Na egzaminie zwracaj uwagę na kolejność argumentów oraz na to, że "jedna godzina" to 3600 sekund.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Cookie to mała porcja danych zapisywana w przeglądarce użytkownika i wysyłana do serwera przy kolejnych żądaniach. W PHP służy np. do zapamiętania preferencji, zgody na cookies albo identyfikatora użytkownika (z ostrożnością). Cookie nie jest bezpiecznym magazynem tajnych danych.
setcookie() wysyła do przeglądarki nagłówek HTTP Set-Cookie. Podajesz nazwę i wartość, a opcjonalnie m.in. czas wygaśnięcia. Przeglądarka zapisuje cookie i odsyła je w kolejnych żądaniach w nagłówku Cookie.
Najczęściej ustawiasz czas wygaśnięcia jako timestamp: time()+3600. Liczba 3600 oznacza sekundy w godzinie. Przykład: setcookie("nazwa","wartosc", time()+3600);. To daje ważność około 1 godziny od momentu ustawienia.
W typowym użyciu trzeci parametr oznacza moment wygaśnięcia jako konkretną datę/czas (timestamp), a nie "czas trwania". Sama wartość 3600 byłaby bardzo wczesnym timestampem (blisko początku epoki UNIX), więc cookie mogłoby od razu wygasnąć lub być traktowane jako niepoprawne.
Najczęściej wtedy, gdy skrypt wysłał już jakąkolwiek treść do przeglądarki (np. HTML, echo, spacje przed <?php). Cookie jest wysyłane w nagłówkach HTTP, więc setcookie() musi być wykonane przed outputem. W przeciwnym razie pojawia się problem "headers already sent".
Odczyt odbywa się z superglobalnej tablicy $_COOKIE, np. $_COOKIE["owoce"]. Pamiętaj, że nowe cookie zwykle będzie dostępne dopiero w następnym żądaniu (po przeładowaniu strony), bo najpierw musi zostać zapisane przez przeglądarkę.
Najczęstsza pomyłka to zamiana miejscami nazwy i wartości, np. ustawienie jako nazwy "jabłko", a jako wartości "owoce". Na egzaminie sprawdzaj, czy pierwszy argument to nazwa cookie (klucz), a drugi to jego zawartość (wartość), zgodnie z treścią zadania.
Technicznie jest to możliwe, ale warto pamiętać o kodowaniu i kompatybilności po stronie klienta. W praktyce często stosuje się bezpieczne kodowanie (np. URL-encoding) albo przechowuje identyfikator, a nie tekst. Na egzaminie kluczowe jest poprawne użycie funkcji i parametrów.
Cookie jest przechowywane po stronie klienta (przeglądarki) i ma ograniczony rozmiar, a sesja jest zwykle przechowywana po stronie serwera. Często cookie trzyma jedynie identyfikator sesji. Sesje są lepsze do danych wrażliwych, bo nie przechowujesz ich bezpośrednio w przeglądarce.
Przećwicz: ustawianie i kasowanie cookie, odczyt z $_COOKIE oraz typowe problemy z nagłówkami. Naucz się rozpoznawać znaczenie time() i przeliczeń sekund (np. 3600). Dodatkowo zapamiętaj, że cookie ustawia się przed wysłaniem treści strony.
info

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

W praktyce zawodowej kluczowe jest to, że poprawne jest użycie setcookie(), ponieważ ta funkcja w PHP ustawia ciasteczko, a jej trzeci parametr określa czas wygaśnięcia jako znacznik czasu UNIX.

Źródła:

  • PHP Manual: setcookie — Sends a cookie, https://www.php.net/manual/en/function.setcookie.php (accessed 2026-02-27)
  • PHP Manual: time — Return current Unix timestamp, https://www.php.net/manual/en/function.time.php (accessed 2026-02-27)
  • RFC 6265: HTTP State Management Mechanism (Cookies), https://www.rfc-editor.org/rfc/rfc6265 (accessed 2026-02-27)

Materiały:

  • Dokumentacja PHP: funkcja setcookie() (parametry i przykłady)
  • Materiały o HTTP cookies i nagłówkach Set-Cookie
  • Ćwiczenia praktyczne: ustawianie i odczyt $_COOKIE w prostej aplikacji PHP

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego