Frage von LugicoHDPlayer, 52

PHP Cannot modify header information?

Hi ich habe mich gerade Frisch registriert und brauche n bisschen Hilfe: Ich habe ein bisschen PHP code der eigentlich ganz einfach ist:

Z. 100 - 102:

if (isset($_POST["allow_cookies"]) && $_POST["allow_cookies"]) { setcookie('allow_cookies','OK'); }

aber er spuckt mir eine Fehlermeldung aus:

Warning: Cannot modify header information - headers already sent by (output started at /var/www/web24537222/html/index.php:9) in /var/www/web24537222/html/index.php on line 101

Die Fehlermeldung weist ja af die Zeile 101 hin in welcher aber nur der setcookie befehl ist und sonst nichts!

Ich habe meinen server bei Alfahosting.de und Lokal auf meinem rechner (mit XAMPP) hat es funktioniert...

Kann mir jemand helfen?

P.S.: in der fehlermeldung wird etwas von nem header geredet obwohl ich garkeinen header habe

Ich bin am verzweifeln...

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von RedKungFuMastr, 31

Gewöhn dir folgendes an:

index.php

<?php
// do php stuff, especially header()
// or setcookie() HERE !!!!
// AND ONLY HERE!!!

include "template.php";

template.php

<html>
<!-- NOT HERE -->
</html>

http://www.w3schools.com/php/func_http_setcookie.asp

Zitat: 

Note: The setcookie() function must appear BEFORE the <html> tag.

Kommentar von Kiboman ,

würde man das E-V-A prinzip konsequent durch die gesamte website ziehen hätte man dieses und andere probleme garnicht.

und ja das geht, ich praktiziere das so.

Kommentar von RedKungFuMastr ,

Probleme gibts immer... sofern man in der Schule nur HTML lernt und dass es eine "Programmiersprache" sei... Bildung OP...

Ich sag nur RTFM, dann gibts keine Probleme mehr ^^

Kommentar von Kiboman ,

aber dann hätten die foren nichts mehr zu tun :D

Kommentar von LugicoHDPlayer ,

DANKESCHÖN!

So hats funktioniert.

Ich habe das zuerst wohl falsch verstanden!

Kommentar von RedKungFuMastr ,

Gern geschehen :)

Antwort
von Kiboman, 38
setcookie() definiert ein mit den HTTP
Header-Informationen zu übertragendes Cookie. Wie andere Header auch,
müssen Cookies vor jeglicher Ausgabe Ihres Skriptes
gesendet werden (dies ist eine Einschränkung des Protokolls). Das bedeutet,
dass Sie diese Funktion aufrufen müssen, bevor Sie eine Ausgabe, dazu
zählen auch <html>- oder
<head>-Tags sowie jede Art von Whitespaces,
übermitteln.

http://php.net/manual/de/function.setcookie.php

Antwort
von triopasi, 35

Das musst du machen, bevor mit echo irgendwas anderes ausgegeben wird! Header können nur gesetzt werden, bevor du andere Ausgaben hast.

Kommentar von LugicoHDPlayer ,

Ich habe den code nochmal überarbeitet und alles in eine externe datei gepackt... geht immer noch nicht. der Inhalt der Datei:



<html>

<head>

<?php
if (isset($_POST["allow_cookies"]) && $_POST["allow_cookies"]) {
setcookie('allow_cookies','OK');
echo "OK! Hier zur hauptseite: <a href=index.php>---</a>";
}
?>

<title>Cookies</title>

</head>

<body>

<form action='' method=POST>

Hier der Ganze text...

<input type=submit name=allow_cookies>

</form>

</body>

</html>

Kommentar von Kiboman ,

<head> != HEADER

vor JEGLICHER ausgabe

gaaaaaaaaaaaaaaaaaanz am anfang muss das stehen

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten