Neue Seite nach Funktion laden

JojoS

Erfahrenes Mitglied
Hallo,
ich versuche gerade nach dem Abschicken meines Formulars eine andere Seite automatisch zu laden.
Hab verschiedenes versucht z.B. echo "<html><head><meta http-equiv=\"refresh\" content=\"zahl in sec; URL=index.htm\">;
oder das ganze über JavaScript zu machen.
Hat jemand ne Idee, oder gibt es da keinen einfacheren GoTo befehl oder so?
Hab in meinem Buch nichts gefunden.
Danke für´s mitdenken

Gruß

Jojo
 
Ich hab das jetzt mal ausprobiert, aber ich kriege immer den Fehler:

"Warning: Cannot add header information - headers already sent by (output started at /var/www/web48/html/Kontakt2.php:6) in /var/www/web48/html/Kontakt2.php on line 148"

Was heisst das denn jetzt? Ich hab eigentlich sonst nur die Variable $header gefunden, die für den Mailaufbau verwendet wird. Hat das was damit zu tun?

Meine Befehlszeile lautet
header("Location: http://www.example.com/");
exit;
 
Die Fehlermeldung bedeutet, dass schon HTTP-Header gesendet wurde,
z.b. durch ein vorheriges Echo, print etc vor dem header() Befehl.
 
Die header - Funktion muß im Script vor jedweder Ausgabe stehen, z.B. in einer Fallabfrage:

<?php
if ($HTTP_POST_VARS["Ok"] !="")
{
header("Location: neueSeite.php");
}

echo "<html>
...
<form method=\"post\">
...
";
?>

Wenn Ok - gedrückt, wird auf die neue Seite gewechselt.
 
Also hier mal der komplette Code in dem ich abschicke:

<?
if($_POST['abschicken'])
{
if(!$_POST['name'] || !$_POST['email'] || !$_POST['inhalt'])
{
echo "<span class=\"fehler\">Alle Angaben müssen ausgefüllt werden!<br><a href=\"$PHP_SELF\">zur&uuml;ck</a></span>";
}
else
{
if(!eregi("^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}", $_POST['email']))
{
echo "<span class=\"fehler\">".$_POST['email']." ist eine ungültige Emailadresse! Bitte korrigieren Sie ihre Angaben!<br><a href=\"$PHP_SELF\">zur&uuml;ck</a></span>";
}
else
{
$header.="From: \"$name\" <$email>\n";
$header.="MIME-Version: 1.0\n";
$header.="Content-Type: text/plain;\n";
$header.="X-Mailer: PHP/".phpversion();
$an = "\"Jojo\" <jojo0123@web.de>"; //empfänger E-mail, also deine E-Mail Adresse ^^
$nachricht1.= "\nAnrede:".$_POST['anrede']."\nName:".$_POST['name']."\nVorname:".$_POST['vorname']."\nStraße/Hausnummer:".$_POST['stra&szlig;e']."\nOrt/PLZ:".$_POST['ort']."\nE-Mail-Adresse:".$_POST['email']."\nHomepage:".$_POST['homepage']."\nBetreff:".$_POST['betreff']."\nNachricht:".$_POST['inhalt'];
mail($an,$betreff,$nachricht1, $header);
$nachricht2 = "$nachricht\n\n(Homepage: $homepage)";
$subject2 = "Danke für die Kontaktaufnahme";
$danke = "Vielen Dank für die Kontaktaufnahme";
$header2.="From: \"Jojo\" <Jojo0123@web.de>\n"; // Angabe der E-Mail Adresse von dir. Diese Adresse wird beim Versender des Kontaktformulares angezeigt.
$header2.="MIME-Version: 1.0\n";
$header2.="Content-Type: text/plain;\n";
$header2.="X-Mailer: PHP/".phpversion();
$an2 = "\"$name\" <$email>";
mail($an2,$subject2,$danke,$header2);
header("Location: http://www.web.de/"); // Umleitung des Browsers
exit;
}
}
}
?>

Kann ich den header Befehl da noch irgenwie integrieren, und wenn nicht, kann ich das auch anders lösen? z.B. mit echo("<script></script>") oder so?
 
Hallo allerseits, ich habe das jetzt nochmal probiert indem ich

if ($HTTP_POST_VARS["Ok"] !="")
{
header("Location: neueSeite.php");
}

auch am Anfang des Scripts postiert habe.
Das bringt zwar keine fehlermeldung aber leider auch keine neueSeite.php.
Irgenwie mag ich schon fast nicht mehr mehr! :mad:
 
Hi,

das Script sieht soweit eigentlich OK aus. Noch ein Hinweis: es darf vor dem ersten <?PHP keine Leerzeile sein, da diese auch ausgegeben wird, und somit auch einen Header sendet.

Das kann aber nicht der Fehler sein, da in der Fehlermeldung ja auch die Zeile angegeben wird, wo der erste Header gesendet wird: Zeile 148 !

Hast Du das alles in einer Datei (also das Formular und die Auswertung) Wenn ja, dann trenne das mal in unterschiedliche Dateien. ;)


Dunsti
 
Stimmt eigentlich,
ich hab´s jetzt einfach auf 2 Seiten aufgeteilt. Damit hab ich das Problem auch so gelöst. Danke an alle für die Hilfe.
 
Zurück