PHP - header
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfang
ausgabe
code
dank
datei
datum
design
ende
fehler
fehlermeldung
header
kodierung
navigation
output
problem
projekt
umgehen
url
verzeichnis
weiterleitung
-
Hey Leute,
ich habe seit einigen Tagen ein Problem mit meinen header's :(
Mit der Fehlermeldung kann ich überhaupt gar nichts anfangen, und "hilfreiche Beiträge" habe ich auch nicht gefunden.
Was mich jetzt besonders stört ist das ich jetzt Quasy auf meiner eigenen Homepage gefangen bin! Ich hatte mich mal eingeloggt, mit Autologin und jetzt Spuckt der mir beim Logout (wo die Cookies gelöscht werden) fehler aus. Dann gehe ich auch "Weiter" und dann loggt er mich wieder automatisch ein :D
Ich weiß ich könnte die Cookies einfach im Browser löschen, aber ich persönlich finde das das keine Lösung fürs Problem ist, da die Cookies ja später trotzdem nicht gelöscht werden.
Die Fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\projekte\limiting\include\str_online.php:136) in C:\xampp\htdocs\projekte\limiting\include\logout\log_check.php on line 6 Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\projekte\limiting\include\str_online.php:136) in C:\xampp\htdocs\projekte\limiting\include\logout\log_check.php on line 7
Der Code der Logout datei:
<?php $failed = false; session_destroy(); if((isset($_COOKIE['mail'])) AND (isset($_COOKIE['password']))) { $return_setcookie_mail = setcookie("mail", "", time() - 3600); $return_setcookie_password = setcookie("password", "", time() - 3600) != true; if(($return_setcookie_mail != true) AND ($return_setcookie_password != true)) { $failed = true; } } if($failed != false) { echo "Beim Löschen der <i>Angemeldet Bleiben</i> Cookies ist ein Fehler aufgetreten!<br /><br /><a href='./' class='url'>Startseite!</a>"; } ?>
Wo drauf ich überhaupt nicht klar komme ist, dass dort steht das das was mit der str_online.php zu tun haben soll. In dieser befindet sich aber kein einziger header.
Danke schon mal im Voraus.
LG
Michael
Beitrag zuletzt geändert: 10.6.2013 12:31:43 von giga-score -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Die Lösung dieser Meldung ist ganz einfach: Keine Ausgabe vor header()-Befehlen. Also auch kein HTML und keine Leerzeichen.
PHP weißt dich nun darauf hin, dass die Ausgabe bei dir in der Datei str_online.php bei Zeile 136 beginnt.
ö
Und bring deine Kodierung in Ordnung, dann kannst du die Buchstaben direkt schreiben. -
okay, danke schon mal.
Vorher hat das aber auch immer geklappt?
Würde das den gehen wen ich in der str_online.php alles an HTML mit einem echo ausgebe?
LG
Michael
Beitrag zuletzt geändert: 10.6.2013 12:31:56 von giga-score -
Das macht keinen unterschied.
Der Header kommt immer (ganz wichtig!) am Anfang, vor den Daten. Sobald Daten gesendet werden (HTML, PHP-Ausgaben -> echo, usw.) ist der Header beendet und kann "offiziell" nichts mehr empfangen.
Löschungen der Cookies, Weiterleitung mit
usw. werden an den Header gesendet. Daher auch der Fehler.Header("Location: ..");
Vorher hat das aber auch immer geklappt?
Es liegt auch an den Servereinstellungen, ob er sich daran hält bzw. ob es funktioniert. Auch wenn es funktioniert, ist es nicht unbedingt richtig
Beitrag zuletzt geändert: 10.6.2013 13:41:49 von fabi755 -
ah ok ^^°
kann ich das ganze den mit einer HTML-Weiterleitung umgehen? Das ist dann zwar auch nicht korrekt aber ich weiß nicht wie ich das Lösen soll.
ich habe meine index.php Datei der ich immer via GET['nav'] sage welche Seite sie aus dem Verzeichnis include includen soll. Vorher include ich aber die str_online.php bzw. die str_offline.php ein wo das "Design" drin ist. Zum Beispiel die Navigation Links an der Seite.
Ist vielleicht jetzt bisschen doof erklärt, aber hoffe es ist nachvollziehbar.
Wie kann ich das den jetzt Korrektor schreiben?
LG
Michaeö -
Schau mal hier:
http://www.php.net/manual/de/function.ob-start.php
Hier als kurzes Beispiel (ungetestet, kann auch anders sein):
// Ganz zu Anfang ob_start(); // .. Design // .. Seiteninhalt // .. Design // Ganz am Ende ob_end_flush();
Du kannst die Ausgabe buffern. So das du die Daten erst am Ende ausgibst.
Falls du weitere Fragen dazu hast, kannst du mich auch gerne anschreiben.
Ich hoffe ich konnte helfen
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage