buzz: Cookies und "Lebensdauer"

Hi,

wenn ich Cookies auf eigentlcih unbegrenzt anlegen möchte, welche Zeitangabe ist hierbei dann sinvoll?

setcookie("cookie", "wert", time()+100000000);

so in etwa mach ich das jetzt immer, wenn ich eine zu hohe zahle nehm ist zumindest beim firefox der cookie nur ein session-cookie...?

und zum löschen dieses cookies, welche negativ-zahl ist da angemessen?

setcookie("cookie_farbtheme", $farbtheme, time()-10);

ist doch eigentlcih egal oder?

grieß

  1. hallöle,

    also theoretisch müsste zum löschen die aktuelle zeit minus 1 zuverlässig gehen, wüsste nix anderes? oder vllt die absolute zeit 0??

    mit dem für immer gib einfach ne riesen zahl an...aber was der firefox da macht...?

    mfg

    1. hi,

      mit dem für immer gib einfach ne riesen zahl an...aber was der firefox da macht...?

      Vielleicht einen Überlauf produzieren ...?

      Cookies "für bis in alle Ewigkeit" sind unsinnig auf einer normalen Seite.
      Wähle eine akzeptable Lebensdauer von meinetwegen zwischen einem und sechs Monaten - wenn der Benutzer in dieser Zeit wieder vorbeischaut, kannst du den Cookie ja durch erneutes Setzen "verlängern".
      Und wenn nicht - dann dürfte die Wahrscheinlichkeit, dass er vor Ablauf der Ewigkeit noch mal vorbeischaut, ziemlich gering sein.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Auch Hi!

    wenn ich Cookies auf eigentlcih unbegrenzt anlegen möchte, welche Zeitangabe ist hierbei dann sinvoll?
    setcookie("cookie", "wert", time()+100000000);

    Wenn du mit setcookie() arbeitest, kannst du nur Timestamps angeben, und die sind begrenzt. Geht man von einer vorzeichenbehafteten 32-Bit-Zahl aus, ist der Maximalwert, den du setcookie() mitgeben kannst, 2147483647 (also 2 hoch 31 minus 1). Das sollte bis zum 19. Januar 2038 reichen (03:14:07 nach GMT).

    und zum löschen dieses cookies, welche negativ-zahl ist da angemessen?
    setcookie("cookie_farbtheme", $farbtheme, time()-10);

    Du setzt ja keine "Negativ-Zahl", sondern einen Timestamp, der vor "jetzt" liegen sollte. Zumindest der Internet Explorer in den Versionen 5 und 6 soll Probleme mit Timestamps haben, die kleiner als 315532800 sind. Ein entsprechender Hinweis stand mal im PHP-Handbuch zu setcookie(). Er wurde aber inzwischen entfernt.

    grieß

    brei?

    MffG
    EisFuX

    1. echo $begrüßung;

      Du setzt ja keine "Negativ-Zahl", sondern einen Timestamp, der vor "jetzt" liegen sollte. Zumindest der Internet Explorer in den Versionen 5 und 6 soll Probleme mit Timestamps haben, die kleiner als 315532800 sind.

      Der Timestamp, den man im Parameter expire angibt, gelangt in der Form nicht zum Client. Er wird automatisch in das im Handbuch angegebene Format (Wdy, DD-Mon-YYYY HH:MM:SS GMT) umgewandelt. Somit kann der IE keine Probleme mit Timestamps haben. Aber wie sieht es mit den durch den Timestamp repräsentierten Zeiten aus?

      Ein entsprechender Hinweis stand mal im PHP-Handbuch zu setcookie(). Er wurde aber inzwischen entfernt.

      Vermutlich meinst du jenen Kommentar (Daine Mamacos 30-Mar-2005 11:14). Ich konnte das dort beschriebene Verhalten mit einem IE 6.0.2800.1106 nicht nachvollziehen. Sowohl mit unwesentlich als auch mit deutlich kleineren Werten verschwand der zuvor erfolgreich gesetzte Keks.

      echo "$verabschiedung $name";

      1. Hallo dedlfix,

        Du setzt ja keine "Negativ-Zahl", sondern einen Timestamp, der vor "jetzt" liegen sollte. Zumindest der Internet Explorer in den Versionen 5 und 6 soll Probleme mit Timestamps haben, die kleiner als 315532800 sind.

        Der Timestamp, den man im Parameter expire angibt, gelangt in der Form nicht zum Client.

        Ist mir klar, ich kann ja lesen. ;-)

        Er wird automatisch in das im Handbuch angegebene Format (Wdy, DD-Mon-YYYY HH:MM:SS GMT) umgewandelt. Somit kann der IE keine Probleme mit Timestamps haben.

        Du hast (wie schon so oft) Recht. Natürlich wäre es korrekter gewesen, statt von einem Timestamp, von einem Datum eines Zeitpunktes, der durch diesen Timestamp repräsentiert wird, zu sprechen. Aber, da man der Funktion setcookie() nun mal nur Timestamp-Werte übergeben kann, und PHP selbst aus ein und demselben Timestamp wohl immer den gleichen Datumsstring produziert, hab ich die Sache eben (unzulässigerweise) vereinfacht. Als PHP-Programmierer kommt man ja mit dem Datumsstring nicht in Berührung, da wollte ich nicht umständlich weit ausholen.

        Aber wie sieht es mit den durch den Timestamp repräsentierten Zeiten aus?

        Ich habe (vorsichtigerweise) »soll Probleme haben« verwendet. Das impliziert: »Lieber Ausgangsposter, wundere dich nicht, wenn es Probleme mit Zeitpunkten, die vor dem genannten Timestamp liegen, gibt. Wenn du ganz sicher gehen willst, dann prüfe das doch bitte selbst nach.« Wieder unzulässigerweise vereinfacht ...

        Ein entsprechender Hinweis stand mal im PHP-Handbuch zu setcookie(). Er wurde aber inzwischen entfernt.

        Vermutlich meinst du jenen Kommentar (Daine Mamacos 30-Mar-2005 11:14).

        Meinte ich. Ich wusste gar nicht, dass sowas noch online steht. Ich hatte diese veraltete Handbuch-Seite auf meiner Festplatte ...

        Ich konnte das dort beschriebene Verhalten mit einem IE 6.0.2800.1106 nicht nachvollziehen. Sowohl mit unwesentlich als auch mit deutlich kleineren Werten verschwand der zuvor erfolgreich gesetzte Keks.

        Womit der M$FT IE 6 mit hoher Wahrscheinlichkeit auszuschließen wäre.  Blieben noch die 5-er Versionen ...

        Und natürlich wäre da noch die Tatsache, dass man aus solch niedrigen setcookie()-expire-Parametern keinen praktischen Nutzen ziehen kann. Zum »Cookie-Löschen« reicht ja ein "gestern" oder "vor einer Stunde" aus. Allerdings will ich auch niemandem die Experimentierfreude verderben. Wer weiß, wozu das alles gut ist ... ;-)

        echo "$verabschiedung $name";

        Notice: Undefined variable: verabschiedung in http://forum.de.selfhtml.org/cgi-bin/user/fo_post?fupto=139633%2C907407&a=answer on line 26

        Notice: Undefined variable: name in http://forum.de.selfhtml.org/cgi-bin/user/fo_post?fupto=139633%2C907407&a=answer on line 26

        MffG
        EisFuX

        1. echo $begrüßung;

          Vermutlich meinst du jenen Kommentar (Daine Mamacos 30-Mar-2005 11:14).
          Meinte ich. Ich wusste gar nicht, dass sowas noch online steht.

          Ich war so frei nach der von dir genannten Zahl zu googlen. :-)

          Zum »Cookie-Löschen« reicht ja ein "gestern" oder "vor einer Stunde" aus.

          Wenn man sicher gehen will, sollte man schon einen ausreichend vergangenen Wert nehmen. Der mit der Serverzeit berechnete Wert muss nun vom Client mit seiner eigenen Zeitrechnung verglichen werden. Wenn also beide Systeme signifikant unterschiedliche Uhrzeiten aufweisen, ...

          Übrigens, das anderswo erwähnte "aktuelle Zeit -1" halte ich für keinesfalls zuverlässig.

          echo "$verabschiedung $name";