PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Automatische Weiterleitung



malabarista
28-11-2005, 13:51
Ich habe ein Problem bei der automatischen Weiterleitung /Redirect.

In meinem Code (login1.php) gibt es die Zeile

header("Location:http://localhost/azalee.php");

Ich erhalte dann bei der Ausführung die Fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at /srv/www/azalee/login1.php:8) in /srv/www/azalee/login1.php on line 12

Was bedeutet das ?
Oder anders gefragt: wie muss eine korrekte Weiterleitung auf eine andere Seite aussehen ?

Gaert
28-11-2005, 14:19
Hallo,

wie wärs wenn du erstmal ein blick ins manual wirfst?

http://de.php.net/header

Gruß,

Gaert

Pingu
28-11-2005, 14:36
Dieses mal steht es nicht dort. Aber es steht natürlich in der FAQ: http://de.php.net/manual/de/faq.using.php#faq.using.headers-sent

Pingu

Gaert
28-11-2005, 16:26
Dieses mal steht es nicht dort. Aber es steht natürlich in der FAQ: http://de.php.net/manual/de/faq.using.php#faq.using.headers-sent

Pingu
Logo stehts im manual!



...
Beachten Sie, dass header() aufgerufen werden muss, bevor eine Ausgabe gesendet wurde, egal ob normale HTML Tags, leere Zeilen in einer Datei oder von PHP. Ein weit verbreiteter Fehler ist mittels include() (http://de.php.net/manual/de/function.include.php), require() (http://de.php.net/manual/de/function.require.php), oder anderen Dateizugriffsmethoden Code zu lesen, und so unbewusst Leerzeichen oder Leerzeilen auszugeben, bevor header() aufgerufen wird. Das gleiche Problem besteht auch bei Verwendung einer einzigen PHP/HTML Datei.
...
<html>
<?php
// Dies funktioniert nicht. Beachten Sie die
// obige Ausgabe noch vor dem header()-Aufruf
header('Location: http://www.example.com/');
?>
...

BlueJay
28-11-2005, 17:24
Warning: Cannot modify header information - headers already sent by (output started at /srv/www/azalee/login1.php:8) in /srv/www/azalee/login1.php on line 12
Was bedeutet das ?


Der Server hat bereits einen Header abgeschickt, ausgelöst durch echo, print oder andere Schönheiten in Zeile 8, und bei Zeile 12 hustet er dir was, wenn er den nochmal modifizieren soll.

so long,
BlueJay

Pingu
28-11-2005, 22:17
Logo stehts im manual!
Sorry, ich habe es bestimmt zwei mal gelesen. *grml* bin ich schon so blind :confused:

Pingu

Turbohummel
29-11-2005, 08:39
Falls es nicht anders zu lösen geht:
ob_start() in die erste Zeile und am Ende ein ob_flush().

Ansonsten wie gesagt die Ausgabe verhindern.

malabarista
29-11-2005, 10:25
Anscheinend habe ich die falsche Lösung für mein Problem.

Ich habe einige Felder eingelesen und aufgrund des Inhaltes
eines der eingegebenen Felder möchte ich auf andere
Seiten verzweigen.
Aufgrund des Namens beim Login sollen direkt bestimmte Seiten aufgerufen werden.
Also nach dem Motto:

if ($bname=="user1") GOTO "pflege.htm"
if ($bname=="user2") GOTO "liste.htm"
...

Das "GOTO" habe ich nur reingeschrieben, damit verständlich wird,
was ich eigentlich möchte.

undefined
29-11-2005, 16:17
Wie in dem vom Gaert eingefügten Link schon nachzulesen ist kannst du keinen Header nach der Ausgabe senden. Stelle dir als erstes mal eine Frage - wo liegt mein Script vor oder nach dem ersten Header ;) Wenn es sich z.B. innerhalb einer HTML Ausgabe befindet kann es nicht gehen ;) Hier ist include eine gute Möglichkeit. Oder du Arbeitest mit Session variablen die beim nächsten Seitenaufruf den Header steuern ;)