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

Beitrag lesen

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)