Wenn ich mir die PHP-Dokumentation zum Setzen eines Cookies ansehe, sehe ich, dass ich ein Ablaufdatum für das Cookie festlegen kann. Sie können festlegen, dass das Cookie am Ende der Browsersitzung oder zu einem späteren Zeitpunkt abläuft, aber ich sehe keine Möglichkeit, das Cookie so einzustellen, dass es niemals abläuft. Ist das überhaupt möglich und wie wird das erreicht?
187
$cookie->setMaxAge(2147483647);
, was später als 2080 ist und sowohl auf 32-Bit als auch auf 64-BitAntworten:
Alle Cookies verfallen gemäß der Cookie-Spezifikation , daher ist dies keine PHP-Einschränkung.
Verwenden Sie ein weit zukünftiges Datum. Setzen Sie beispielsweise ein Cookie, das in zehn Jahren abläuft:
Beachten Sie, dass wenn Sie in 32-Bit-PHP ein Datum nach 2038 festlegen , die Zahl umbrochen wird und Sie ein Cookie erhalten, das sofort abläuft.
quelle
Maximalwert: 2147483647
Um einen Ganzzahlüberlauf zu vermeiden, sollte der Zeitstempel auf Folgendes gesetzt werden:
Das Festlegen eines höheren Werts kann bei älteren Browsern zu Problemen führen.
Siehe auch den RFC zu Cookies :
und RFC 2616, 14,6 Alter :
http://www.faqs.org/rfcs/rfc2616.html
quelle
Stellen Sie eine absolute Zeit für die ferne Zukunft ein :
Es ist besser, eine absolute Zeit zu verwenden, als sie relativ zur Gegenwart zu berechnen, wie in der akzeptierten Antwort empfohlen.
Der mit 32-Bit-Systemen kompatible Maximalwert ist:
quelle
Mein Privileg hindert mich daran, meinen Kommentar zum ersten Beitrag abzugeben, sodass er hier abgelegt werden muss.
Bei der Einstellung von 20 Jahren im Voraus ab dem aktuellen Datum sollte der Unix-Fehler 2038 berücksichtigt werden, was als die richtige Antwort oben vorgeschlagen wird.
Ihr Cookie am 19. Januar 2018 + (20 Jahre) könnte je nach Browser und / oder Version, auf der Sie ausgeführt werden, das Problem 2038 treffen.
quelle
Können Sie nicht einfach eine Endlosschleife sagen, Cookie läuft als aktuelles Datum + 1 ab, sodass es nie das Datum erreicht, an dem es ablaufen soll, weil es immer morgen ist? Ein bisschen übertrieben, aber nur sagen.
quelle
Obwohl dies nicht genau möglich ist, können Sie etwas Ähnliches wie Google tun und Ihr Cookie so einstellen, dass es am 17. Januar 2038 abläuft oder etwas ähnlich weit entferntes.
In der Praxis ist es möglicherweise besser, Ihren Cookie für 10 Jahre oder 60 * 60 * 24 * 365 * 10 zu setzen, was die meisten Maschinen überleben sollte, auf denen Ihr Cookie leben wird.
quelle
Wenn Sie Daten auf dem Clientcomputer dauerhaft beibehalten möchten - oder zumindest bis der Browser-Cache vollständig geleert ist -, verwenden Sie den lokalen Javascript-Speicher:
https://developer.mozilla.org/en-US/docs/DOM/Storage#localStorage
Verwenden Sie keinen Sitzungsspeicher, da dieser wie ein Cookie mit einem maximalen Alter von Null gelöscht wird.
quelle
Niemals und für immer sind zwei Wörter, die ich aufgrund der Unvorhersehbarkeit des Lebens vermeide.
Die späteste Zeit seitdem
1 January 1970
, die mit einer vorzeichenbehafteten32-bit
Ganzzahl gespeichert werden kann, ist03:14:07 on Tuesday, 19 January 2038
(231-1 = 2,147,483,647
Sekunden danach1 January 1970
) . Diese Einschränkung wird als Problem des Jahres 2038 bezeichnetquelle
Ich glaube, dass es keine Möglichkeit gibt, ein Cookie für immer haltbar zu machen, aber Sie müssen es nur so einstellen, dass es weit in die Zukunft abläuft, wie zum Beispiel das Jahr 2100.
quelle
Sie sollten das nicht tun und das ist sowieso nicht möglich. Wenn Sie möchten, können Sie einen höheren Wert festlegen, z. B. 10 Jahre im Voraus.
Übrigens habe ich noch nie einen Cookie mit einer solchen Anforderung gesehen :)
quelle
Ich bin nicht sicher, aber werden Cookies beim Schließen des Browsers nicht gelöscht? Ich habe irgendwie ein nie ablaufendes Cookie erstellt und Chrome hat das abgelaufene Datum als "beim Schließen des Browsers" erkannt ...
quelle
Sie können nur, was ist, wenn Sie die Ablaufzeit auf jetzt + 100 Jahre einstellen?
quelle