• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP Weiterleitung mittels header()

b1zarRe

Mitglied
Hi!

Ich suche nun schon seit gut 1-2 Stunden nach Tutorials und erhalte immer die gleiche Fehlermeldung...:
" Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/mySite/test.php:1) in /usr/www/users/mySite/test.php on line 2 "

Ich habe mittlerweile nur noch diesen Code stehen (also keine weitere Anweisungen oder HTML Tags) und erhalte immernoch die o.g. Fehlermeldung...


<?php
header("Location: www.google.de");
exit();
?>

Weiß jemand, wo da der Fehler liegt?
 
Werbung:
Millionen Treffer findet man, wenn man google mal mit der Fehlermeldung füttert!!! :(

Ich tippe auf Leerzeichen oder Leerzeile vor <?php oder die Datei wurde als UTF-8 mit BOM gespeichert.
 
Was bdt600 versucht zu sagen ist, nachdem du eine Fehlermeldung von PHP bekommst ist das erste was man machen sollte folgendes.

Beispiel anhand deiner Fehlermeldung

Warning: Cannot modify header information - headers already sent by (output started at /usr/www/users/mySite/test.php:1) in /usr/www/users/mySite/test.php on line 2 "

Als erstes entfernst du alles an dieser Fehlermeldung was spezifisch für dein skript ist wie z.b. Dateinamen, Pfade oder zeilennummern

Warning: Cannot modify header information - headers already sent by (output started at

Das kannst du nun wunderbar in Google eingeben und jedenfalls bei mir ist der erste treffer eine AUSGEZEICHNETE erklärung warum es zu diesem Verhalten kommt.
 
Werbung:
Ich habe Google bedient und da steht auf diversen Seiten das keine Leerzeichen oder andere Ausgaben vor dem Code
ausgegeben werden dürfen. Auch in der API habe ich die Methode durchgelesen.

Ich habe dann alles irrelevante gelöscht und meine Datei besteht nurnoch aus den obigen 4 Zeilen Code (Kein weitere Code oder HTML Tags etc.).
Leider erhalte ich dennoch die Fehlermeldung...

PS.: Mein Ziel ist es einfach nur, bei einer PHP If-Bedingung zu schauen, ob der Benutzer
das richtige Radiofeld ausgewählt hat und falls ja, diesen auf eine weitere Seite zu leiten.
 
Ich würde drauf tippen, dass Du die Datei in deinem Editor mit dem Zeichensatz utf8 mit BOM gespeichert hast. Speichere sie in utf8 ohne BOM.
 
Danke Dir, hat geklappt! :)

Habe nun auch mal Wiki dazu aufgerufen um zu sehen was "bom" egtl. ist.

"und in PHP vor Version 6[1] mit Standardeinstellungen[2] führt die BOM zur Ausgabe von Zeichen an den Browser, so dass ohne „output buffering“ keine HTTP-Header mehr geändert werden können."


Eine Frage hätte ich da noch. Wenn ich im Skript eine Variable $var=1; setze, ist es möglich auf
diese Weite mithilfe von header() die Variable auf der neuen Seite/Script zu benutzen?
Oder muss/soll ich da mit Session arbeiten?
 
Zuletzt bearbeitet:
Werbung:
Hast du schon einmal etwas von $_GET und $_POST gehört? Falls nicht solltest du es dir angucken.

Falls du eine ID einer Seite weitergeben willst ist es ratsam das auch zu tun. Z.b. du willst auf den News beitrag mit der ID 123 weiterleiten dann kannst du das einfach machen.

http://seite.de/news.php?id=123

Falls du aber z.b. einen User einloggen möchtest und an die nächste seite weitergeben möchtest das der Benutzer eingeloggt ist solltest du das durchaus eher durch eine art session erledigen. Egal ob selbst gebaut oder, für einen anfänger zu empfehlen, per $_SESSION.
 
Diesen Tipp hatte dir bdt600 übrigens schon in der ersten Antwort gegeben ..

Einen Variablenwert kannst Du nur per Parameter in der URL, die Du in der header()-Funktion angeben kannst, an die andere Seite weitergeben.
 
Also bin ich gezwungen dabei GET zu benutzen? (Post ist ja in der URL nicht sichtbar und eingeschränkt..)
 
Werbung:
Nein, bist Du nicht. Du kannst auch eine Seite per POST aufrufen, musst dafür aber auch header() als Funktion verzichten und eher z.B. fsockopen() verwenden.
 
Was aber schwachsinn ist... :/
Du willst ja nicht einfach irgendetwas an dich selber posten und dann das ergebniss davon an deinen Benutzer schicken.

Warum bist du überhaupt GEZWUNGEN $_GET zu benutzen? Das klingt ja als wenn es etwas schlechtes wäre. Wenn du das so siehst solltest du dich schläunigst besser informieren!
 
Werbung:
Ich sagte nicht, dass GET etwas schlechtes ist. Jedoch sieht man die Variablen in der URL (was noch okay wäre), aber die URL Zeile ist beschränkt und ich werde min. 7-8 Variablen oder mehr von einer auf die
nächste Seite übertragen müssen.

=> EDIT: Ich habs nun mit POST gelöst und es klappt.

=> EDIT 2: Ich musste im übrigen (für alle die ein ähnliches Problem hatten) noch an erster
Zeile des Dokuments ein "<?php ob_start(); ?>" hinzufügen und auf BOM kodieren.

------------------------------------------------------------------------------------------------------------------------

=> NEUE FRAGE

Kann mir bitte jemand sagen, woran es liegt, dass man die Seite in Google Chrome
gut bedienen kann, aber bei IE oder FF ab der 3. Seite "Ende" ist?! :/

(Anmelden -> Bedarfsanalyse -> Weitere Seiten gehen im Chrome aber nicht in IE/FF)

Anmeldedaten:
Name = isp
PW = 123

Link:
http://3mm.mpalermo.de/isp_tool/


Quellcodeteil:
<?php
session_start();
if (isset($_POST['auswerten']))
{
$provider = $_POST['provider'];
$produktgruppe = $_POST['produktgruppe'];
$_SESSION['provider'] = $provider;
$_SESSION['produktgruppe'] = $produktgruppe;

if ($produktgruppe == "")
{
echo "<br>" . "<p style='color: #bd4040'>" . 'Bitte eine Produktgruppe auswählen.' . "<br>";
}
else
{
header('Location:' . '/isp_tool/bedarfsanalyse1.php');
die();
exit;
}
}
?>


Ich habe es schon nun auf diesen Teil heruntergebrochen um zu debuggen (Chrome geht, IE/FF nicht... )

<?php
session_start();
if (isset($_POST['auswerten']))
{
echo "test";
}
?>
 
Zuletzt bearbeitet:
Nun macht dein Code viel mehr Sinn. Nicht das er gut ist aber ich verstehe nun was du meinst.

Als erstes solltest du evtl. dafür sorgen, dass der Absenden Button deines Formulars mit in den <form> tag kommt.

Dann hast du sicher schon rausgefunden, dass es am besten ist die Daten in einer art Session zu speichern.

Als nächstes solltest du deinen Code einfach mal debuggen und ein paar ausgaben hinzufügen die dir einen hinweis geben, an welcher stelle es hackt.

Ach und zu guter letzt solltest du so dumme konstrukte wie dein die(); exit; entfernen und dir mal genau angucken was die beiden überhaupt machen.
 
Ich weiß nicht was ich noch machen soll. Wenn man sich den letzten Teil meines letzten Posts anschaut, funktioniert dieser in Chrome aber nicht in IE/FF was für mich unverständlich ist.
 
Werbung:
Was heißt denn "geht nicht"? Wenn Du das Formular abschickst kommt die Ausgabe "test" nicht?

Ändere mal den Button von type="button" zu type="submit".
 
Danke Dir !!!

Es klappt nun in allen Browsern... es lag echt daran, dass ich einfach nur
<input type="image" name="auswerten" value="Auswertung" src="images/btn_forward.png" class="buttonrahmen">" in type=submit geändert habe... Danke, war schon am verzweifeln :D
 
Zurück
Oben