kostenloser Webspace werbefrei: lima-city


Frage zu Cookies in Include

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    sidezockinglp

    sidezockinglp hat kostenlosen Webspace.

    Hallo Liebe Community,

    ich würde gerne zum ersten mal was mit Cookies machen. Leider muss ich vor dem Cookie setzen ein paar Includes machen und wenn ich das so mache wird der Cookie nicht angelegt. mich würde daher interessieren was man vor dem setzen einen Cookies noch alles machen darf. Ich hörte er musst im head Tag liegen und vorher darf man nichts mit echo ausgeben. Mache ich eigentlich beides nicht, ich include davor nur eine Datei mit ein Paar Functionen drinnen.

    So habe ich das aufgebaut(abrufen):
    <?php
    include("funktionen.php");  ?>
     include('header.php');
    ?>

    in der header.php steht dann das Cookie setzen

    Würde mich freuen wenn mir jemand helfen könnte. :kiss:

    Grüße
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. h***********r


    Sie sind Bestandteil des HTTP-Headers, was bedeutet, dass die Funktion setcookie() aufgerufen werden muss, bevor irgendeine Ausgabe an den Browser erfolgt.

    Weiteres steht in der Dokumentation :)
    http://php.net/manual/de/features.cookies.php
  4. sidezockinglp schrieb:
    [...] mich würde daher interessieren was man vor dem setzen einen Cookies noch alles machen darf. [...]

    Eigentlich sollte das offensichtlich sein. Cookies werden im HTTP-Header-Bereich übertragen. Der Header wird im wesentlichen übertragen, sobald irgendeine Ausgabe stattfindet - und kann im Nachhinein nicht mehr geändert werden.
    Dies impliziert übrigens auch automatisch genererierte Ausgaben wie PHP-Fehler, Warnungen und ähnliches. Und natürlich auch jeglicher Dokumentinhalt - wie jeglicher HTML-Inhalt oder beispielsweise führende Leerzeichen vor dem
    <?php
    . Ein
    echo
    ist dort nicht zwangsweise notwendig.

    Eine Möglichkeit deine Idee umzusetzen wäre - sofern die Funktionen aus
    funktionen.php
    in
    header.php
    benötigt werden - mit einem require_once ganz oben in der
    header.php
    zu arbeiten. Dadurch stellst du sicher, dass wo auch immer die
    header.php
    eingefügt ist, die entsprechenden Funktionen verfügbar sind. Mit dem unterschied zu include, dass zum einen die Datei nur ein mal eingebunden wird - wenn darin Beispielsweise irgendwelche Definitionen stattfinden, zum anderen erzeugt es einen "Fatal Error", wenn die Datei nicht eingebunden werden kann, während include nur eine Warnung ausgibt. Wenn man jedoch explizit nur eine Warnung möchte, kann man stattdessen mit include_once arbeiten. Ich für meinen Teil würde aber grade bei Funktionen die im Header/Cookie-Bereich erfordert sind auf require_once setzen - da eine reine Warnung die weitere Code-Ausführung nicht zwangsweise beendet und zu unbeabsichtigten Ergebnissen führen kann.

    So könnte deine
    funktionen.php
    dann in etwa so aussehen:
    <?php
    
    function Funktion1(){}
    function Funktion2(){}
    function Funktion3(){}
    Wenn du
    Funktion1
    in der
    header.php
    brauchst, könnte diese dann in etwa so aussehen:
    <?php
    require_once('funktionen.php');
    
    Funktion1();
    Funktion2();
    Funktion3();
    Während du in der
    index.php
    (Oder wo auch immer) nur noch die
    header.php
    einbinden musst. Die
    funktionen.php
    brauchst du dort dann nicht mehr einzeln angeben - zumindest sofern die Funktionen aus dieser Datei dort nicht benötigt werden.

    Noch schöner wäre denke ich noch die Kapselung der Inhalte in Klassen. Hier gibt es dann verschiedene Modelle wie MVP welche die Darstellung der Inhalte komplett von Datenquellen und der Webseitenlogik trennt. Allerdings ist dies bei solchen Fragen zu Cookies möglicherweise zu weit fortgeschritten.
  5. Und das BOM nicht vergessen, welches manche Editoren automatisch an den Dateianfang klatschen und so nicht sichtbar ist.
  6. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!