Automatische Weiterleitung PHP -

mein_name

Erfahrenes Mitglied
Hallo!

Hab folgendes Problem:

Ich habe ein PHP-Skript (php_mailer.php), in dem Daten, die von einem Formular (order.htm)kommen an eine Emailadresse )sendet! Nach dem Senden sollte sofort eine neue Seite geladen werden - diese heißt order-gesendet.html.

Code:
if ($error_handler == "false") {
  if (@mail($to, $subject, $message, $header))
	  {	
		  Header("Location:datei.htm"); 
		  echo "<font color=\"#FFFFFF\"><b>Your order has been sent!<br/><br/><a href=\"order.htm\">&raquo;zurück</a></b></font>"; 
		 
	  }
	  else
	  {
	  	  $mail_processed = "Your order could not be processed.";
	  }
}
?>

Ich habe schon unzählige Möglichkeiten ausprobiert, hier zu sehen mit Header, hab auch schon die refresh-Funktion ausprobiert. Nichts funktioniert! Habe auch schon die echo-Funktionen herausgenommen, da man solche vorher nicht mache soll!
Was kann ich machen, damit eine neue Seite geöffnet wird, bzw. was mache ich falsch?

Vielen Dank für eure Antworten
 
Was wird denn angezeigt nachdem du das Formular absendest?
Mit Header ist schon richtig, allerdings sollte Location immer eine vollständige URI beinhalten.

Vielleicht hat Mail auch einen Fehler produziert den du durch das @ Unterdrückst.
 
Zuletzt bearbeitet:
Ja habs auch schon mit vollständiger URL ausprobiert - er überspringt es und nimmt mir das echo danach oder wenn ich das wegmache kommt gar nichts!
 
PHP:
Header("Location: http://www......../datei.htm");
exit();

Wozu danach überhaupt noch was ausgeben wenn man weitergeleitet werden soll? :p
 
Naja das war ja nur zum Test!

Ich werde jetzt auch noch nicht weitergeleitet. Es wird einfach schwarz.

Geb euch hier mal den gesamten Code der PHP-Datei! Code ist leider nicht von mir, vielleicht übersehen ich deshalb etwas.

Code:
<?php

	$to = "email_adress";
	$subject = "#### ONLINE BESTELLUNG ####";
                $error_handler = "false";

	if (isset($_POST['user_name']) && $_POST['user_name']!="")
	  $message = $_POST['user_name']."\n";
	else {
	  $error_name = "Please enter your name.";
	  $error_handler = "true";
	  }
	
	if (isset($_POST['user_email']) && $_POST['user_email']!="")
	  $message .= $_POST['user_email']."\n";
	else {
	  $error_email = "Please enter your E-Mail-Address.";
	  $error_handler = "true";
	  }
		
	if (isset($_POST['cd_indien']) && $_POST['cd_indien']!="")
	$message .= "OST Indien = ".$_POST['cd_indien']."\n";
	
	if (isset($_POST['cd_gala']) && $_POST['cd_gala']!="")
	$message .= "Gala im Bad zur Sonne = ".$_POST['cd_gala']."\n";
	
	if (isset($_POST['cd_band_live']) && $_POST['cd_band_live']!="")
	$message .= "The Band Live = ".$_POST['cd_band_live']."\n";
	
	if (isset($_POST['cd_u2']) && $_POST['cd_u2']!="")
	$message .= "Plays U2 = ".$_POST['cd_u2']."\n<br/>";
	
	if (isset($_POST['cd_sn99']) && $_POST['cd_sn99']!="")
	$message .= "The Souly Nights 99 = ".$_POST['cd_sn99']."\n";
	
	if (isset($_POST['cd_oots']) && $_POST['cd_oots']!="")
	$message .= "OOTS = ".$_POST['cd_oots']."\n<br/>";
	
	if (isset($_POST['lp_pp']) && $_POST['lp_pp']!="")
	$message .= "Power Project LP = ".$_POST['lp_pp']."\n";
	
	if (isset($_POST['video_konstanz']) && $_POST['video_konstanz']!="")
	$message .= "Live in Konstanz = ".$_POST['video_konstanz']."\n";

	$header .= "From: \"name\" <leo@soul.at>\r\n";
	$header .= "Reply-To: \"name\" <leo@soul.at>\r\n";
	$header .= 'X-Mailer: PHP/' . phpversion() . "\r\n"; 
	$header .= 'X-Sender-IP: ' . $REMOTE_ADDR . "\r\n";
	$header .= "MIME-Version: 1.0\n"; 
	$header .= "Content-type: text/html; charset=iso-8859-1\n"; 

if ($error_handler == "false") {
  if (@mail($to, $subject, $message, $header))
	  {	
		Header("Location: http://www.domain.at/order-gesendet.html");
		exit();  
		 
	  }
	  else
	  {
	  	  echo "Fehler";
	  }
}
?>

Vielen Dank!
 
Nochmal: Bitte mach das @ vor dem "mail" weg.
Dann hättest sofort gesehen das er Probleme mit dem Empfänger hat.
Ändere die erste Zeile:
PHP:
$to = "deine@email.adresse";

Kommen immernoch Fehler am Anfang vom Script dieses:
PHP:
var_dump($_POST);
Das Formular mit Testdaten ausfüllen, absenden und das was dann kommt hier angeben.

Und warum ist der Browser dann schwarz? Ich mein... schwarz? ?
 
Naja das ist mir schon klar, dass diese Emailadresse nicht funktioniert, hab das nur hineingeschrieben, damit ich meine richtige nicht angeben muss!

Es funktioniert ja wunderbar - nach der Bestellung bekomme ich immer die Bestellung per Mail zugesandt. Nur das Öffnen der neuen htm danach funktioniert nicht - es bleibt schwarz, weil der Hintergrund schwarz ist und es kommt einfach nichts!
 
Fehler:


Warning: Cannot modify header information - headers already sent by (output started at /homepages/43/d234172984/htdocs/php_mailer.php:2) in /homepages/43/d234172984/htdocs/php_mailer.php on line 57


Also ich denke mal, dass er schon vorher was an den header sendet und so meine Weiterleitung nicht funktioniert? Aber wo sende ich was?

lg
davidb
 
Das kann mehrere Ursachen haben. Wenn du zum Beispiel das Dokument als UTF-8 mit BOM kodierst. Oder ein einfaches Leerzeichen, das auch schon einen Header sendet.

In deinem Fall, wird in Zeile 2 ein Header gesendet.
PHP:
<?php

	$to = "email_adress";
	$subject = "#### ONLINE BESTELLUNG ####";

Entferne mal die Leerzeichen dort.

Eine andere Lösung wäre die Verwendung der Ausgabepufferung-Funktionen.
 
Zurück