表单错误消息未显示

时间:2012-02-13 20:35:16

标签: php forms

当填写所有必填字段并点击发送时,我的表单会给我一条成功消息。 但是缺少字段时没有错误消息或成功消息。有人发现错误吗? 我不知道PHP,所以要善良!

请帮忙,明天我需要这个!

<?php

function died($error) {
    // your error code can go here
    echo "Wir freuen uns sehr leid, aber es gab Fehler(s) mit dem Formular, das Sie   vorgelegt gefunden. ";
    echo "Diese Fehler werden unten angezeigt.<br /><br />";
    echo $error."<br /><br />";
    echo "Bitte gehen Sie zurück und diese Fehler zu beheben.<br /><br />";
    die();
 }


if(!empty($_POST['email'])) {

    // CHANGE THE TWO LINES BELOW
    $email_to = "xxxx@xxx.xxx";
    $email_subject = "Nachricht von Website Kontaktformular";


    // validation expected data exists
    if(empty($_POST['vorname']) || empty($_POST['nachname']) || empty($_POST['email']) || empty($_POST['nachricht'])) {
        died('Es tut uns leid, aber es scheint ein Problem mit dem Formular, das Sie vorgelegt werden.');       
    }

    $vorname = $_POST['vorname']; // required
    $nachname = $_POST['nachname']; // required
    $email_from = $_POST['email']; // required
    $email = $_POST['email']; // geändert
    $telefon = $_POST['telefon']; // not required
    $nachricht = $_POST['nachricht']; // required

    $error_message = "";
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
    if(!preg_match($email_exp,$email_from)) {
        $error_message .= 'Die Email Adresse, die Sie eingeben, nicht gültig zu sein scheint.<br />';
    }
    $string_exp = "/^[A-Za-z .'-]+$/";


    if(!preg_match($string_exp,$vorname)) {
        $error_message .= 'Die Vorname Sie eingeben, nicht gültig zu sein scheint.<br />';
    }
    if(!preg_match($string_exp,$nachname)) {
        $error_message .= 'Die Nachname Sie eingeben, nicht gültig zu sein scheint.<br />';
    }
    if(strlen($nachricht) < 2) {
        $error_message .= 'Die Nachricht, die Sie eingeben, nicht gültig zu sein scheint.<br    />';
    }
    if(strlen($error_message) > 0) {
        died($error_message);
    }
    $email_message = "Formular einzelheiten unten.\n\n";

    function clean_string($string) {
        $bad = array("content-type","bcc:","to:","cc:","href");
        return str_replace($bad,"",$string);
    }

    $email_message .= "Vorname: ".clean_string($vorname)."\n";
    $email_message .= "Nachname: ".clean_string($nachname)."\n";
    $email_message .= "Email: ".clean_string($email)."\n";
    $email_message .= "Telefon: ".clean_string($telefon)."\n";
    $email_message .= "Nachricht: ".clean_string($nachricht)."\n";


    // create email headers
    $headers = 'From: '.$email."\r\n".
        'Reply-To: '.$email."\r\n" .
        'X-Mailer: PHP/' . phpversion();
    @mail($email_to, $email_subject, $email_message, $headers);  
    ?>

    <!-- place your own success html below -->
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
        <p style="font-size:1.125em; font-family:Arial, Helvetica, sans-serif; background-color:#a6bf48; margin-top:90px; text-align:center; margin-left:auto; margin-right:auto; width:960px; padding:20px;">
            Vielen Dank für ihre Nachricht! Ich werde mich sobald wie möglich mit ihnen in Verbindung setzen.<br><br>
            <a href="psychologin.html" style="color:#FFF">Zurück</a>
        </p>
    </body>
    </html>

    <?php
}
die();
?>

2 个答案:

答案 0 :(得分:0)

乍一看,如果你没有填写电子邮件文本字段,那么什么都不会出现,所以你把它放在错误的地方 - 尝试从以下地方更改:

if(!empty($_POST['email'])){

要:

if(isset($_POST)){

<强>更新

此外,在整理代码时,您已经写过几次died() - 这应该是die()

答案 1 :(得分:0)

MrJ是对的,你不应该把你的决定点放在1个领域。您可能需要考虑将所有emptys()替换为isset()。根据php手册,如果没有定义变量,空将不会启动错误,这似乎是你想要完成的。