PHP header()-Funktion geht hier nicht

psdler

Mitglied
Hallo!

Ich habe ein Problem mit der header()-Funktion. Ich will nach dem Versenden einer E-Mail mit Daten aus einem Formular (geht alles soweit) bei erfolgreichem Mail-Versand eine Seite anzeigen.

Das mail-Senden Script wird ausgeführt und die Mail wird erfolgreich versendet, aber das Script leitet dann nicht weiter um.

Soweit der fehlerhafte Ausschnitt aus meinem Code:
PHP:
 $rc = mail($empfaenger, $betreff, $nachricht, $mailheader);
      if ($rc)
      {
		  	header('Location: http://beispielseite.de/mail_versandt.html');
			exit;
      }
      else
      {
            echo "Es gab einen Fehler beim Versenden der E-Mail an " . $empfaenger;
      }
}
else
{
      // mindestens ein Feld nicht gefüllt
      $fehler = substr($fehler, 0, -2); // letztes Komma und Leer weg
      echo "Bitte geben Sie " . $fehler . " an!";
}

Es kommt danach nur eine weiße Seite und oben in der Adresszeile steht noch die Adresse vom mail-Senden-Script.

Habt ihr eine Idee woran das liegen kann?

Grüße,
psdler
 
Eine WEisse Seite bedeutet meist das ein Fehler aufgetreten ist und der Error-Level zu niedrig oder gar nicht gesetzt ist.

setz doch mal an den Anfang deines mail-Senden Scriptes:

PHP:
error_reporting('E_ALL');
ini_set('display_errors', 1);

und führ es nochmal wie gewohnt aus.
 
Habe ich gesetzt - da kommt immer noch eine weiße Seite.
Leider keine Fehlermeldung - die Syntax meine Codes ist richtig, ne?

Danke soweit.
 
Ja das funktioniert komischerweise.

Muss es nicht heißen:
PHP:
$rc = mail($empfaenger, $betreff, $nachricht, $mailheader); 
      if ($rc = true;) 
//hier true?! - was sagt es ohne?
      { ...
 
Nein muss es nicht, die IF-Bedingung prüft automatisch ob die Variable in Klammern true ist. Ausserdem weist du mit einem einfachen Gleichheitszeichen der Variablen den Wert zu.

Was sagt denn anstatt dem if "var_dump($rc)"?
 
Hmm, da kommt dann HTTP 500-Fehler.

Hier siehst du mal das ganze Script:

PHP:
<?php
session_start();

error_reporting('E_ALL');
ini_set('display_errors', 1); 

if (isset($_SESSION['captcha']) AND $_POST["c_code"] == $_SESSION['captcha'])
{
	// richtiges Captcha: Session-Variable sicherheitshalber vernichten
	unset($_SESSION['captcha']);
}
else
{
	// kein Captcha oder falsch
	die ("Die Eingabe des Codes war falsch!");
}
?>

<?php


$fehler = "";

if (empty($_POST['name']))
{
      $fehler = "Ihren Namen, ";
}

if (empty($_POST['email']))
{
      $fehler = "Ihre E-Mail, ";
}

if (empty($_POST['betreff']))
{
      $fehler = "einen Betreff, ";
}

if (empty($_POST['nachricht']))
{
      $fehler = "eine Nachricht, ";
}

if (empty($fehler))
{
	// Teile des Mail-Texts
	$break = "\r\n";
	$verknuepfung = 'Auf uns gekommen durch: ' . $break;
	$datum = date("d.m.Y - H:i") . $break;
	$telefon = 'Telefonnummer: ';
	$anders_feld .= "&nbsp;";
	$trennstrich = "------------------------------";
	$von = "von " . $break;
	
	$ipadresse = 'IP-Adresse: ';
	$ip = $_SERVER['REMOTE_ADDR'];

      // Mail verschicken
      $empfaenger =  "mail@mail.com";

      $betreff = $_POST['betreff'];

      $nachricht  = $datum . $von . $_POST['name'] . $break  . $trennstrich . $break  . $break;
      $nachricht .= $_POST['nachricht'] . $break .  $break;
      $nachricht .= $trennstrich . $break;
      $nachricht .= $telefon . $_POST['telefon'] . $break . $break;
      $nachricht .= $verknuepfung . $_POST['verknuepfung'] . ' ' . '-' . ' ' . $_POST['anders_feld'] . $break . $break;
	  $nachricht .= $ipadresse . $ip;

      $mailheader  = "From: " . $_POST["email"] . $break;
      $mailheader .= "Content-Type: text/plain; charset = \"UTF-8\"" . $break; // Text und Zeichensatz (wenn nicht UTF-8, muss der Text decoded werden)
      // $mailheader .= "Content-Type: text/html; charset = \"UTF-8\"" . $break; // alternativ: HTML und Zeichensatz (wenn nicht UTF-8, muss der Text decoded werden)
      $mailheader .= $break; // Header endet mit Leerzeile

      $rc = mail($empfaenger, $betreff, $nachricht, $mailheader);
      var_dump($rc)
      {
		header('Location: http://www.ebay.de');
		exit;
      }
      else
      {
            echo "Es gab einen Fehler beim Versenden der E-Mail an " . $empfaenger;
      }
}
else
{
      // mindestens ein Feld nicht gefüllt
      $fehler = substr($fehler, 0, -2); // letztes Komma und Leer weg
      echo "Bitte geben Sie " . $fehler . " an!";
}
?>
 
Ich dachte eher so:

PHP:
$rc = mail($empfaenger, $betreff, $nachricht, $mailheader);
      var_dump($rc);
      exit(); 
      if($rc)
      {
        header('Location: http://www.ebay.de');
        exit;
      }
      else
      {
            echo "Es gab einen Fehler beim Versenden der E-Mail an " . $empfaenger;
      }
 
Zurück