Kalle_B: Prüfen, ob Cookies gesetzt werden können

Hallöle,

kann ich einen Cookie setzen und gleich wieder einlesen?

//------------------------------
  // VARIABLEN VON COOKIE SICHERN
  //------------------------------
  $arr_cookie    = array();
  $arr_cookie[1] = explode('@', $HTTP_COOKIE_VARS['p101_1']);
  $arr_cookie[2] = explode('@', $HTTP_COOKIE_VARS['p101_2']);
...

//--------------------------------
  // COOKIE ZUM TEST SETZEN / LESEN
  //--------------------------------
  $jetzt = time();
  setcookie('p101_2', $jetzt );
  $gleich = $_COOKIE[ 'p101_2' ];
  if ( $jetzt != $gleich ) $h01 = 1;  // HINWEIS 01: KEINE COOKIES MOEGLICH
echo "<pre>jetzt=[".$jetzt."] gleich=[".$gleich."]</pre>\n";

Das wird nie gleich, weil der *gelesene* Cookie nicht der soeben geschriebene, sondern der vorige ist.

Läuft da eine Verzögerung im Hintergrund? Oder kann ein Programm nur einmal Cookies lesen?

Gruß, Kalle

  1. hi,

    kann ich einen Cookie setzen und gleich wieder einlesen?

    Mann, Mann, Mann ... Quantität und Qualität deiner Fragen hier sind schon merkwürdig für jemanden, der das ganze irgendwie beruflich zu machen scheint.

    Was hast du denn jetzt am ersten Punkt des Abschnittes "Häufige Probleme" im Manual zu setcookie nicht verstanden?

    "Cookies werden nicht sichtbar, bevor nicht eine Seite geladen wird, für die das Cookie sichtbar sein soll. Um zu testen, ob ein Cookie erfolgreich gesetzt wurde, prüfen Sie noch vor der Ablaufzeit auf der nächsten geladenen Seite, ob das Cookie vorhanden ist."

    Das wird nie gleich, weil der *gelesene* Cookie nicht der soeben geschriebene, sondern der vorige ist.

    Natürlich.

    Läuft da eine Verzögerung im Hintergrund?

    Die "Verzögerung" hört auf den Namen HTTP.

    Du gibst die Anweisung, einen Cookie zu setzen - diese wird in den HTTP Response Headern mit zum Client übertragen.
    Der Client entscheidet, ob er diesen Cookie annehmen, und bei nachfolgenden Requests wieder mitschicken will.

    Wenn ja, _dann_ hast du ihn bei der Abarbeitung dieser nächsten Requests in $_COOKIE wieder zur Verfügung.

    Oder kann ein Programm nur einmal Cookies lesen?

    Der Inhalt eines Cookies steht dir bei jedem Request wieder in $_COOKIE zur Verfügung, bei dem er vom Client mitgeschickt wurde.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hello,

      Die "Verzögerung" hört auf den Namen HTTP.

      Eher auf den Namen "Client-Server-Wechselspiel". Das es hier HTTP ist, ist eher "Zufall".

      Harzliche Grüße vom Berg
      http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau

  2. Moin,

    Das kann nicht gehen, weil:

    1. Besucher ruft Seite auf, Skript pflanzt Keks.

    2. Besucher macht irgendwas, Keks liegt auf seinem Rechner. Derweil macht das Skript- nichts.

    3. Besucher ruft Seite erneut auf, Skript kann nun den gespeicherten Keks auslesen. Aber erst ab dem 2ten Aufruf, da der Keks ja erstmal plaziert werden musste.

    Zwischen Keks speichern und Keks auslesen muss eine Aktion des Besuchers liegen, der erneut auf die Seite zugreift. Das Skript selbst hat da keine Möglichkeit selbst aktiv zu werden und den Keks direkt wieder auszulesen.

    mit freundlichen Grüßen
    Ulrich

    --
    Teiltransparente Bereiche
    selfcode: sh:| br:> ie:% mo:) va:) de:] zu:) fl:( ss:| ls:[
    um-fritz.de
  3. Hello,

    kann ich einen Cookie setzen und gleich wieder einlesen?

    Im Prinzip ja...

    Client schickt Request
    Du setzt den Cookie und sendest Umleitung als Response.
    Client fragt also wieder nach
    Cokkie wird entwweder gefunden oder nicht.

    Ein Risiko ist dabei:
    Response muss einen URi-Parameter enthalten, der ganz klar sagt: Dies ist die Antwort auf einen Cookie-Test. Die musst Du auf dem Server auch auswerten.
    Sonst baust Du nämlich eine Endlosschleife zwischen Server und Client...

    Harzliche Grüße vom Berg
    http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau