Auto Weiterleitung funktioniert nicht

vaporizer

Erfahrenes Mitglied
Hallo zusammen
ich hab ein kleines Problem:
ich hab ein Gästebuch mit PHP programmiert

und zwar mit einer <<index.html>> die seite mit dem buch und Einträgen usw.

dann hab ich eine <<eintrag.html>> mit einem Formular name,email,kommentar.
nun wenn ich auf dieser Seite mit dem Formular auf Abschicken drücke

komm ich auf >>guestbook.php<< in dieser php datei wird das Formular ausgewertet
nun beginnt das erste Problem:
ich hab an dieser phpSeite einen print befehl
print("<h2>Vielen Dank fuer den Eintrag!<h2>");
in meinem Konqueror wird dies auch angezeigt
aber bei Netscape und InternetExplorer eben nicht!
das selbe mit diesem Link hier:
<a href="index.html">click to the guestbook!</a>
wobei ich diesen Link ganz unten stehn hab also ausserhalb von:<? ?>
man sieht ihn aber trotzdem nur im Konqueror und nicht im Netscape und IE
kann mir jemand sagen warum?

so nun das nächste:
ich will auf dieser PHP seite also die Seite auf der das Formular für den Eintrag ausgewertet wird
nun eine Weiterleitung machen so dass nach der Auswertung man wieder auf der index landet.
sprich beim Gästebuch.
nur leider funktioniert dies nicht

<meta http-equiv="Refresh" content="1; URL=index.html">
so ein metatag funktioniert anscheinend nur bei html datein aber nicht bei php datein

Obwohl im Konqueror funktiniert es ja auch
aber im Netscape und InternetExplorer eben nicht

kann mir jemand bitte helfen?

Schöne Grüße von vaporizer
 
Die Weiterleitung kannst Du statt dem Meta-Tag auch über PHP durch das vorzeitige Senden des Headers erreichen.
PHP:
header('Location: http://www.meinserver.de/datei.html');
Beachte dabei, dass vor Verwendung der Header-Funktion keine Ausgaben an den Browser gesendet werden dürfen. Nachzulesen ist das Ganze nochmal hier:
--> http://de.php.net/header

Warum Dein erstes Problem auftritt, kann ich nicht sagen. An PHP scheint es nicht zu liegen.

snuu
 
keine Ausgaben an den Browser gesendet werden dürfen.?
was heißt das?
Bei mir scheint dies der Fall zu sein
Warning: Cannot modify header information - headers already sent by (output started at /srv/www/htdocs/guestbook.php:6) in /srv/www/htdocs/guestbook.php on line 7
das ist die Fehlermeldung
Wie vermeide ich diese?
Hier ist der Komplette Code der php datei:

<html>
<head><title>Gaestebuch<title></head>
<body>
<?php
$nachname=$HTTP_POST_VARS["nachname"];
$mail=$HTTP_POST_VARS["mail"];
$kommentar=$HTTP_POST_VARS["kommentar"];
$punkt=".";
$dpunkt=":";
$datum=date(d);
$datum.=$punkt;
$datum.=date(m);
$datum.=$punkt;
$datum.=date(y);
$zeit=date(G);
$zeit.=$dpunkt;
$zeit.=date(i);
$zeit.=$dpunkt;
$zeit.=date(s);
$eintrag="<!--Beginn-->\n";
$eintrag.="<p><b>Name: </b>";
$eintrag.=$nachname;
$eintrag.="<br>\n<b>Email: </b><a href='mailto:";
$eintrag.=$mail;
$eintrag.="'>";
$eintrag.=$mail;
$eintrag.="</a><br>\n<b>Datum: </b>";
$eintrag.=$datum;
$eintrag.=" um ";
$eintrag.=$zeit;
$eintrag.="<br>\n<b>Kommentar: </b>";
$eintrag.=$kommentar;
$eintrag.="</p><br><br>\n";
$datei=fopen("index.html","r");
if($datei)
{
$dateigroesse=filesize("index.html");
$inhalt=fread($datei, $dateigroesse);
fclose($datei);
}
$ersetzen=str_replace("<!--Beginn-->",$eintrag,$inhalt);
$datei=fopen("index.html","w");
if($datei)
{
$output=fwrite($datei, $ersetzen);
fclose($datei);
print("<h2>Vielen Dank fuer den Eintrag!<h2>");
}
header('Location: index.html'); <<<<<<< Hier ist der Übeltäter
?>

<a href="index.html">click to the guestbook!</a>
</body>
</html>
 
Keine Ausgabe an den Browser heißt, dass vor <?php nichts stehen darf und dass keine Daten via echo, print oder dergleichen gesendet werden dürfen.

snuu
 
Durch das "Ausgeben" von HTML-Code werden Header gesendet. Im Moment wird außerdem immer weitergeleitet, da der header Befehl nicht in einer if-Abfrage steckt.
Es ist also zu empfehlen, dass du noch vor dem <html> eine if-Abfrage platzierst, die entscheidet, ob weitergeleitet werden soll, oder nicht.
 
Habe nun das Print() rausgelöscht
FehlerMeldung kommt trotzdem!
Ich frag mich warum? mhm

//edit:
ok Alles klar es funktiniert
Dankeschön
 
Zurück