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.
cookie("jabłko", "owoce", 3600);
Źle. Funkcja
cookie() nie istnieje, a argumenty są do tego zamienione.B.
setcookie("jabłko", "owoce", time()+3600);
Źle. Argumenty są zamienione: powstanie ciasteczko „jabłko” z wartością „owoce”.
C.
setcookie("owoce", "jabłko", time()+3600);
Dobrze. Nazwa „owoce”, wartość „jabłko” i wygaśnięcie za 3600 sekund od chwili bieżącej.
D.
cookie("owoce", "jabłko", 3600);
Źle. Funkcja
cookie() nie istnieje w PHP, a samo 3600 to data z 1970 roku.Pytanie z egzaminu CKE, wrzesień 2014 (arkusz E.14-X-14.08).
Ciasteczko w PHP tworzy funkcja
setcookie(). Jej pierwszy parametr to nazwa, drugi wartość, a trzeci moment wygaśnięcia zapisany jako znacznik czasu Unix, czyli liczba sekund od 1 stycznia 1970 roku. time() zwraca bieżący znacznik czasu, a 3600 sekund to jedna godzina, więc time()+3600 oznacza „za godzinę od teraz”. Stąd zapis setcookie("owoce", "jabłko", time()+3600);. Do zapamiętania: kolejność to nazwa, wartość, czas wygaśnięcia. Ciasteczko trzeba wysłać przed jakąkolwiek treścią strony, bo trafia do nagłówków HTTP, a odczytuje się je przy następnym żądaniu z tablicy $_COOKIE["owoce"]. Czas wygaśnięcia możesz też zapisać czytelniej jako time() + 60 * 60.Tu łatwo potknąć się na dwóch rzeczach: nazwie funkcji i kolejności argumentów. PHP nie ma funkcji
cookie(), więc oba zapisy z nią zakończą się błędem wywołania nieistniejącej funkcji. Do tego samo 3600 jako trzeci argument nie oznacza „za godzinę” - PHP potraktowałby tę liczbę jako bezwzględny znacznik czasu z 1970 roku, czyli datę z przeszłości, i przeglądarka od razu usunęłaby ciasteczko. Wariant z setcookie("jabłko", "owoce", time()+3600) używa właściwej funkcji i dobrego czasu, ale ma zamienione argumenty: utworzy ciasteczko o nazwie „jabłko” z wartością „owoce”, czyli odwrotnie, niż wymaga zadanie. Poprawny zapis łączy setcookie, kolejność nazwa-wartość i czas liczony od time(). Przy takich zadaniach pomaga zasada: najpierw sprawdź nazwę funkcji, potem kolejność argumentów, a na końcu to, czy czas jest liczony od chwili bieżącej.