Stefan: setcookie()

Hallo,

habe ein kleines Problem. setcookie() ist doch nur am Dateianfang zu setzen, oder? Ich habe jetzt aber eine PHP-Datei die in mehrere if-Abfragen aufgeteilt ist. Es wird also immer ein Teilbereich der ganzen Datei aufgerufen. Jetzt möchte ich es gerne so haben, dass das Cookie nur gesetzt wird, wenn ein bestimmter Teil der PHP-Datei aufgerufen wird. Wie kann ich das lösen?

Gruß
Stefan

  1. echo $begrüßung;

    habe ein kleines Problem. setcookie() ist doch nur am Dateianfang zu setzen, oder?

    Nein, es ist nur vor jeglicher Ausgabe zu setzen. Wieviel Code davor steht ist nicht relevant, Hauptsache er erzeugt keine Ausgabe.

    echo "$verabschiedung $name";

    1. Danke!

      Hm...habe mal versucht an der gewünschten Stelle mit Include eine Datei einzubinden die das Cookie setzt. Funktioniert aber wie erwartet nicht. Also blieben nur 2 Möglichkeiten: Den Teil in dem das Cookie gesetzt werden soll in eine neue Datei zu schreiben oder beim Durchlaufen des Teils automatisch eine Seite öffnen in der das Cookie gesetzt wird und direkt wieder schließen lassen. Oder?

      1. Hello,

        Du kannst die Ausgabe an die Sntadardausgabe (meistens der Browser) auch verzögern lassen.

        Schau dir http://www.php.net/manual/de/function.ob-start.php und die verwandten Themen an.

        Harzliche Grüße vom Berg
        http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau

      2. echo $begrüßung;

        Bitte beobachte und beschreibe genauer, was wie vor sich geht.

        Hm...habe mal versucht an der gewünschten Stelle mit Include eine Datei einzubinden die das Cookie setzt.

        Dateien setzen keine Cookies. Meinst du eine Datei, die du inkudierst, die sen setcookie()-Aufruf enthält? Wenn das alles ist, das in dieser Datei an Programmcode steht, so erscheint mir das reichlich ... aber ich will nicht urteilen, ohne die Zusammenhänge zu kennen.

        Funktioniert aber wie erwartet nicht.

        Es gibt zu viele Arten von "funktioniert nicht", so dann man aus solch einer Aussage zu wenig entnehmen kann, um konkrete Verbesserungsvorschläge anbringen zu können.

        Also blieben nur 2 Möglichkeiten: Den Teil in dem das Cookie gesetzt werden soll in eine neue Datei zu schreiben oder beim Durchlaufen des Teils automatisch eine Seite öffnen in der das Cookie gesetzt wird und direkt wieder schließen lassen. Oder?

        "Datei schreiben", "Seite öffnen", ... Wo bist du jetzt? Immer noch in PHP oder schon wieder bei der Interaktion zwischen Client und Server?

        Schreibe doch den Code zunächst in eine einzige Datei. Wenn du feststellst, dass sie zu groß und unhandlich wird oder immer wiederkehrende Teile enthält, unterteile deinen Code in Teilaufgaben, die du geeignet zusammenfasst, z.B. in Funktionen. Beim Auslagern solltest du darauf achten, dass vor dem <?php und nach dem ?> keine Zeichen stehen, auch keine Leerzeichen, Zeilenumbrüche und dergleichen, denn das wäre eine Ausgabe an den Browser, die dazu führt, dass die Header gesendet werden und nicht mehr erweitert werden können. Da ein Dateiende einen mit <?php eröffneten Codeblock automatisch schließt, kann man das ?> auch weglassen, so dass sich das Problem der ungewollt dahinter stehenden Zeichen nicht mehr ergibt.

        echo "$verabschiedung $name";