W PHP czas wygaśnięcia ciasteczka przekazuje się do setcookie() jako parametr expires, czyli czas bezwzględny (timestamp UNIX) określający chwilę, w której przeglądarka ma uznać cookie za nieważne.
Aby zapisać wartość zmiennej $dane na jeden dzień, należy wziąć bieżący czas funkcją time() i dodać liczbę sekund w 24 godzinach:
time() + (3600 * 24)
To daje moment wygaśnięcia przesunięty o dobę w przyszłość, więc przeglądarka będzie przechowywać cookie do tego czasu.
Dlaczego pozostałe odpowiedzi są błędne:
- Ustawienie wartości jako tekstu "dane" zamiast zmiennej powoduje zapis dosłownego napisu, a dodatkowo expires równe 0 tworzy cookie sesyjne (zwykle znika po zamknięciu przeglądarki), a nie na 24 godziny.
- Użycie samego time() jako expires oznacza, że cookie wygasa w chwili ustawienia (praktycznie natychmiast), więc nie spełnia wymogu "na jeden dzień".
- Wartość 0 w polu wygaśnięcia nie oznacza "0 dni", tylko brak trwałości – cookie sesyjne. To częsty błąd wynikający z intuicyjnego rozumienia zera jako czasu trwania.
W praktyce (zwłaszcza w nowszych wersjach PHP) często spotyka się też zapis z tablicą opcji (np. ustawienia httponly, secure, samesite), ale sama idea wyliczenia wygaśnięcia jako time() + 86400 pozostaje taka sama.