mayer: Fehler im Formmailerscript !?

Hallo PHP-Spezialisten,

ich als Newbie in Sachen PHP hab ein Problem mit einem Formmailerscript. Das Script funktioniert in Verbindung mit einem HTML-Formular und dort hinterlegten Hidden-Feldern einwandfrei.

Jetzt habe ich es erweitert um ein Pflichtfeld ("Mail") und um eine Fehlerseite ("fehler"), wenn jemand das Feld "Mail" nicht ausfüllt.

Nun funktioniert zwar die Fehlerseite und derjenige der das Pflichtfeld Mail nicht ausgefüllt hat bekommt die Fehlerseite mit dem Hinweis. Passt. Doch wenn alles in Ordnung ist funktioniert jetzt mit dem geänderten Script die Dankesseite ("topage") nicht mehr!!

Ich denke, es liegt wohl an dem zweimaligen verwenden der Header-Weiterleitung, aber ich weiß nicht wie es anders geht.

Für die Fehlermeldung (fehler):

if(empty($Mail)) header('Location: '.$HTTP_POST_VARS['fehler']); exit;

Und für die Dankesseite (topage):

// Redirecten
header('Location: '.$HTTP_POST_VARS['topage']); exit;

Oder ist es doch ein anderer Fehler? Sieht einer von Euch den Fehler? Danke schon mal.

Gruß
mayer

Hier der Script komplett:

<?

// Einstellungen
$domain = 'meinewebsite.de';
$dontsend = array('to','subject','topage','senden','fehler'); // Dateien, die nicht angezeigt werden

// Formular überprüfen
function error($msg){
echo '<font color="red"><b>Fehler:</b></font><br>';
echo $msg;
exit;
}
$msg = '';
if(!$HTTP_POST_VARS) error('Direktaufruf nicht möglich!<br>');
if(!isset($HTTP_POST_VARS['to'])) $msg .= '- Empfängerfeld fehlt<br>';
if(!isset($HTTP_POST_VARS['Mail'])) $msg .= '- Absenderfeld (eMail) fehlt<br>';
if(!isset($HTTP_POST_VARS['subject'])) $msg .= '- Betreff fehlt<br>';
if(!isset($HTTP_POST_VARS['topage'])) $msg .= '- Dankesseite fehlt<br>';
if(!isset($HTTP_POST_VARS['fehler'])) $msg .= '- Fehlerseite fehlt<br>';
$empf  = split("@", strtolower($HTTP_POST_VARS['to']));
if($empf[1] != strtolower($domain) && isset($HTTP_POST_VARS['to'])) $msg .= 'Es können nur eMails an

die Domain <b>'.$domain.'</b> gesendet werden!';

if($msg != '') error($msg);

if(empty($Mail)) header('Location: '.$HTTP_POST_VARS['fehler']); exit;

$mailtext  = '<font face="Arial" size="2">';
$mailtext .= 'Mail generiert aus Website Test <br>';
isset($HTTP_REFERER) ? $mailtext .= 'Absender: <b>'.$Mail.'</b> <br><br>' : $mailtext .= '

<br><br>';

reset($HTTP_POST_VARS);
foreach($HTTP_POST_VARS as $key => $value){
if(!in_array($key, $dontsend)) $mailtext .=

'<b>'.$key.':</b>&nbsp;&nbsp;&nbsp;'.htmlspecialchars($value).' <br>';
}
$mailtext .= '</font>';

// Mailen
mail($HTTP_POST_VARS['to'], $HTTP_POST_VARS['subject'], $mailtext, "From:

".$HTTP_POST_VARS['Mail']." <".$HTTP_POST_VARS['Mail'].">\nContent-Type: text/html");

// Redirecten
header('Location: '.$HTTP_POST_VARS['topage']); exit;

?>

  1. Hallo,

    bekommst du irgendwelche fehlermeldungen?
    Oder wird einfach bloss die Seite nicht angezeigt?

    Ich tippe mal, dass bei folgender Zeile geschweifte Klammern fehlen:

    if(empty($Mail)) header('Location: '.$HTTP_POST_VARS['fehler']); exit;

    probier einfach mal zu schreiben:

    if(empty($Mail))
    {
      header('Location: '.$HTTP_POST_VARS['fehler']);
      exit;
    }

    ohne die klammern brichst du das Skript an dieser Stelle immer ab, egal, ob umgeleitet wurde, oder nicht.

    mbr