Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe PHP

Który z kodów PHP sprawi, że zostanie wyświetlona sformatowana data oraz czas ostatnich odwiedzin użytkownika witryny, natomiast podczas pierwszej wizyty nic się nie wyświetli?Kod 1.

echo date('d.m.Y, H:i', $_COOKIE['c1']);
setcookie('c1', time());
Kod 2.
if(isset($_COOKIE['c1']))
    echo date('d.m.Y, H:i', $_COOKIE['c1']);
setcookie('c1', time(), time() + 30 * 86400);
Kod 3.
echo date($_COOKIE['c1']);
setcookie('c1', time(), time() + 30 * 86400);
Kod 4.
setcookie('c1', time(), time() + 30 * 86400);
A. Kod 4.
B. Kod 2.
C. Kod 3.
D. Kod 1.

Opracowane na podstawie zadania CKE, czerwiec 2023 (arkusz EE.09-SG-23.06): W arkuszu kod 2 miał date($_COOKIE['c1']), co wypisuje sam znacznik czasu zamiast daty. Dodano format 'd.m.Y, H:i'.

Poprawna jest odpowiedź: Kod 2. Ten fragment najpierw sprawdza isset($_COOKIE['c1']), czyli ustala, czy przeglądarka przesłała już ciasteczko z poprzedniej wizyty. Jeśli ciasteczko istnieje, jego wartość jest traktowana jako znacznik czasu Unix zapisany wcześniej przez time(), a funkcja date('d.m.Y, H:i', ...) formatuje go jako dzień, miesiąc, rok, godzinę i minutę. Podczas pierwszej wizyty warunek nie jest spełniony, więc echo się nie wykona i nic nie zostanie wyświetlone. Następnie setcookie('c1', time(), time() + 30 * 86400) zapisuje aktualny czas na 30 dni. Reguła do zapamiętania: odczyt z $_COOKIE dotyczy danych przesłanych w bieżącym żądaniu, a setcookie przygotowuje ciasteczko dla kolejnych żądań.
W tym zadaniu trzeba rozdzielić dwie czynności: odczyt ciasteczka z poprzedniego żądania i zapis nowej wartości na przyszłość. Kod 1 używa date('d.m.Y, H:i', $_COOKIE['c1']) bez sprawdzenia isset($_COOKIE['c1']). Taki zapis mógłby być trafny tylko wtedy, gdy istnieje pewność, że ciasteczko już istnieje; podczas pierwszej wizyty element tablicy nie jest dostępny, więc warunek „nic się nie wyświetli” nie jest poprawnie zabezpieczony. Kod 3 także odczytuje $_COOKIE['c1'] bez kontroli istnienia, a ponadto przekazuje wartość ciasteczka jako format funkcji date(), nie jako drugi argument ze znacznikiem czasu. Miałby sens jedynie przy innym założeniu: gdyby ciasteczko przechowywało format daty. Kod 4 tylko ustawia ciasteczko, więc nadaje się do zapamiętania wizyty, ale nie wyświetli daty ostatnich odwiedzin. Poprawna jest odpowiedź: Kod 2. Typowy błąd myślowy to założenie, że setcookie natychmiast uzupełnia $_COOKIE w tym samym wykonaniu skryptu.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.