Frage zu Cookies in Include
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
arbeiten
ausgabe
aussehen
bereich
bestandteil
darstellung
datei
definition
editor
funktion
header
inhalt
interessieren
mache
manual
reine warnung
setzen
stattfinden
unbeabsichtigten ergebnissen
warnung
-
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.
Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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
. Ein<?php
ist dort nicht zwangsweise notwendig.echo
Eine Möglichkeit deine Idee umzusetzen wäre - sofern die Funktionen aus
infunktionen.php
benötigt werden - mit einem require_once ganz oben in derheader.php
zu arbeiten. Dadurch stellst du sicher, dass wo auch immer dieheader.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.header.php
So könnte deine
dann in etwa so aussehen:funktionen.php
<?php function Funktion1(){} function Funktion2(){} function Funktion3(){}
Wenn du
in derFunktion1
brauchst, könnte diese dann in etwa so aussehen:header.php
<?php require_once('funktionen.php'); Funktion1(); Funktion2(); Funktion3();
Während du in der
(Oder wo auch immer) nur noch dieindex.php
einbinden musst. Dieheader.php
brauchst du dort dann nicht mehr einzeln angeben - zumindest sofern die Funktionen aus dieser Datei dort nicht benötigt werden.funktionen.php
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.
-
Und das BOM nicht vergessen, welches manche Editoren automatisch an den Dateianfang klatschen und so nicht sichtbar ist.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage