MudGuard: Login Cookie schreiben und Cookie auslesen - Array Problem

Beitrag lesen

Hi,

ich bastel hier seit Stunden ein einem einfachen Script herum woran ich schon langsam verzweifel, weil ich einfach nur noch Bahnhof verstehe...
Ich möchte Username und Passwort in im Cookie speichern später mein cookie wieder auslesen aber das geht bei mir nicht!?

if (isset($_REQUEST['checkbox_cookie'])):
   $cookie_user = $_REQUEST['username'];
   $cookie_pass = $_REQUEST['passwort'];
   @setcookie($cookie_user,$cookie_pass,time()+(3600*24));

setcookie nimmt keine Änderung an $_COOKIE vor, es setzt schlicht und einfach einen Eintrag im Header der HTTP-Response.

foreach ($_COOKIE['$cookie_user'] as $name => $value) {

Dieser Zugriff muß daher scheitern, wenn das Cookie nicht schon vorher gesetzt war.
Daß innerhalb von '' keine Variablen ersetzt werden, ist Dir bewußt?

Was ist hier falsch bzw wie muss es richtig heissen?

HTTP (und Cookies) funktionieren anders als Du denkst.

Vereinfacht (für Deinen Fall):
Der Browser schickt einen Request an den Server, dabei stehen evtl. bereits vorhandene Cookies dieses Servers im Header.

Da es um ein PHP-Script geht: der Server übergibt den Request an den PHP-Interpreter.

Der PHP-Interpreter untersucht den Request und füllt anhand dessen diverse Arrays:
$_GET mit den Parametern aus der URL, $_POST mit POST-Parametern aus dem Body, $_COOKIE mit bereits vorhandenen Cookies, ...

Dein Script wird gestartet.

Dein Script nutzt setcookie. Damit wird in den Header der Response (also in das, was an den Browser als Antwort geschickt wird) der Eintrag für Dein Cookie vorgenommen - falls noch nichts vom body der Response (nicht zu verwechseln mit dem body der HTML-Seite) geschrieben wurde.
GANZ WICHTIG: Eine Änderung an $_COOKIE findet dabei nicht statt.

Irgendwann ist Dein Script fertig.
Dann erhält der Browser die Antwortseite und findet dabei im HTTP-Header Deinen Cookie-Eintrag.

Je nach Browsereinstellungen ignoriert er das oder merkt es sich. Gehen wir mal davon aus, daß der User das Speichern des Cookies erlaubt hat.

Falls jetzt nochmal eine Anfrage des Browsers an Deinen Server kommt (und die Lebenszeit des Cookies noch nicht abgelaufen ist und der Cookie-Pfad paßt), wird er es im Header dieses neuen Requests mitgeschickt.

Falls dieser neue Request wieder ein PHP-Script auf Deinem Server anstößt:

Der PHP-Interpreter untersucht den neuen Request und füllt anhand dessen diverse Arrays:
$_GET mit den Parametern aus der URL, $_POST mit POST-Parametern aus dem Body, $_COOKIE mit dem jetzt tatsächlich vorhandenen Cookie, ...

Dein Script wird gestartet. Jetzt, bei diesem zweiten Script-Aufruf findet sich Dein Cookie in $_COOKIE.

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
O o ostern ...
Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.