Mit php Cookies setzen (oder eben nicht! =) )
Cedrixxx
- php
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
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
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
Hallo Cedrixxx,
Deine Frage sieht mir stark nach deinem folgenden Thread aus: https://forum.selfhtml.org/?t=159361&m=1036605
Jonathan