Ernie: cookies funktionieren nicht auf der ganzen Site...

Hallo!

Ich habe an den Anfang des Quelltextes jeder meiner PHP-Seiten diesen PHP-Code eingefügt, der dafür sorgt (sorgen sollte), dass die Eingaben eines Benutzers in ein Formular in Cookieform gespeichert werden (wenn die Variable $check aktiviert ist).

<? if (isset($check))
{
setcookie ("name", $form_name,time()+1209600);
setcookie ("mail", $form_e_mail,time()+1209600);
setcookie ("www", $form_website,time()+1209600);
}
if (!isset($button))
{
$form_name = $HTTP_COOKIE_VARS["name"];
$form_e_mail = $HTTP_COOKIE_VARS["mail"];
$form_website = $HTTP_COOKIE_VARS["www"];
} ?>
<html>
...

Wenn nun ein Benutzer auf die Seite, auf der er die Formulareingaben getätigt hat, zurückkehrt, werden seine Eingaben korrekt aus den Cookies ausgelesen - wenn er allerdings auf anderen Seiten (speziell in einem anderen Verzeichnis der Site) das Formular aufruft, bleiben die "cookie"-Felder leer.

Wie könnte man obenstehenden Quelltext komplettieren, so dass die Cookieangaben für die ganze Site funktionieren?

Danke im Voraus.

  1. <? if (isset($check))
    {
    setcookie ("name", $form_name,time()+1209600);
    setcookie ("mail", $form_e_mail,time()+1209600);
    setcookie ("www", $form_website,time()+1209600);
    }

    Dir ist schon klar, daß Du damit drei verschiedene Cookies erzeugst und denn werten Besucher dementsprechend möglicherweise mit dreimaliger Nachfrage "Soll dieser Cookie gespeichert werden?" nervst?

    Speichere Deine Daten lieber in einem Feld und benutze die Funktion serialize() (http://www.php.net/manual/de/function.serialize.php), um aus dem Feld einen Text zu machen, der dann in _einem_ Cookie gespeichert werden kann.

    Wenn nun ein Benutzer auf die Seite, auf der er die Formulareingaben getätigt hat, zurückkehrt, werden seine Eingaben korrekt aus den Cookies ausgelesen

    Bist Du Dir sicher? Sowohl Mozilla als auch der IE füllen an diesem Ende der Leitung die Daten unter Umständen automatisch ein (beim Benutzen der "Zurück"-Funktion).

    • wenn er allerdings auf anderen Seiten (speziell in einem anderen Verzeichnis der Site) das Formular aufruft, bleiben die "cookie"-Felder leer.

    Möglicherweise hast Du übersehen, daß per setcookies() gesendete Cookies standardmäßig nur für das aktuelle Verzeichnis des HTML-Objekts (hier: Deine Formularseite) und seine Unterverzeichnisse gelten. Setzt Du Deine Cookies in /anmelden/name.php, tauchen sie beispielsweise nur in /anmelden oder /anmelden/noch/tiefer auf, aber nicht in /forum/bla.

    Problemlösung: Bitte konsultiere die entsprechende Seite der PHP-Anleitung, http://www.php.net/manual/de/function.setcookie.php, und informiere Dich über die Argumente zu setcookies().

    Gruß,
      soenk.e