Cedrixxx: Mit php Cookies setzen (oder eben nicht! =) )

Hallo zusammen, ich habe (wieder mal :-) ) ein Problem mit php.
Dieser Code brauche ich, um ein Cookie zu setzen:

-----------------------PHP-Code-----------------------------------
// Cookie setzen !
$value = $userid;
$value .= ";";
$value .= $username;

setcookie ("blacksoldier_login", $value, time()+3600);

// überprüfen, ob Cookie gesetzt wurde
if(isset($_COOKIE['blacksoldier_login'])) {
} else {
echo "Fehler 4!";
exit;
}
------------------------------------------------------------------

Das Problem ist, das es beim ersten Aufruf des Scriptes das Cookie nicht setzt. Beim zweiten oder bei den weitere Aufrufen des Scriptes, werden sie jedoch gesetzt.

Kann es an meinem Browser liegen?

Auch wenn ich die If-Abfrage mehrmals einbaue und wenn das Cookie dann nicht gestzt wurde eine neues setzten lasse, funzt es nicht.

Mit freundlichen Grüssen aus dem Käseland Schweiz

CedrixXx

--
// Immer wenn du denkst,
// es geht nicht mehr,
// kommt von irgendwo ein
// Lichtlein her.
  1. Moin!

    Das Problem ist, das es beim ersten Aufruf des Scriptes das Cookie nicht setzt. Beim zweiten oder bei den weitere Aufrufen des Scriptes, werden sie jedoch gesetzt.

    Das ist normal, so funktioniert HTTP. Das Setzen eines Cookies erzeugt eine passende Zeile in den HTTP-Headern (könnte man auch mit header() einfügen), das Resultat eines gesetzten Cookies kann der Server erst beim nächsten Request sehen, wenn der Browser das Cookie evtl. zurückschickt.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
  2. Hallo,

    Hallo zusammen, ich habe (wieder mal :-) ) ein Problem mit php.

    nein, du hast ein Problem mit dem Verständnis vom HTTP-Mechanismen.

    setcookie ("blacksoldier_login", $value, time()+3600);

    Damit setzt du beim Besucher, der die Seite abruft, ein Cookie (falls er es annimmt), das er *beim nächsten Zugriff* auf deinem Server wieder mitschickt.

    // überprüfen, ob Cookie gesetzt wurde
    if(isset($_COOKIE['blacksoldier_login']))

    Nein, in diesem Umlauf wirst du hier noch kein Cookie finden.

    1. Request:
      Browser fordert Seite an
      Server führt das Script aus, Script setzt ein Cookie
      Server sendet das vorbereitete Cookie und den Seiteninhalt

    2. Request:
      Browser fordert Seite an; stellt fest, dass er von diesem Server mal ein
      Cookie bekommen hat und schickt es mit dem Request mit
      Server führt das Script aus, Script sieht ein Cookie und kann darauf reagieren

    Das Problem ist, das es beim ersten Aufruf des Scriptes das Cookie nicht setzt.

    Du möchtest beim Schreiben eines Briefes schon die Antwort des Empfängers mit einarbeiten. Das ist verdammt schwierig. ;-)
    Wenn du schon im aktuellen Script mit dem Cookie-Inhalt arbeiten willst, den du mit dem Response erst an den Client übermitteln wirst, musst du die Daten (zusätzlich zum setcookie()-Aufruf) von Hand in $_COOKIE[] eintragen.

    Auch wenn ich die If-Abfrage mehrmals einbaue und wenn das Cookie dann nicht gestzt wurde eine neues setzten lasse, funzt es nicht.

    Nö, wenn du einen Brief noch nicht abgeschickt hast, kannst du auch fünfmal in deinen Briefkasten gucken, ob schon eine Antwort da ist.

    Schönen Tag noch,
     Martin

    --
    Es existiert kein Weg, "für" etwas zu optimieren, sondern nur gegen alles andere.
      (Cheatah)
  3. Hallo Cedrixxx,

    Deine Frage sieht mir stark nach deinem folgenden Thread aus: https://forum.selfhtml.org/?t=159361&m=1036605

    Jonathan