Сообщение об ошибке формы не отображается - PullRequest
0 голосов
/ 14 февраля 2012

Моя форма дает мне сообщение об успехе, когда все обязательные поля заполнены, и я нажимаю кнопку отправить.Но нет сообщения об ошибке или сообщения об успехе, когда поле отсутствует.Кто-нибудь заметит ошибку?Я понятия не имею о 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 голосов
/ 14 февраля 2012

MrJ прав, вы не должны основывать свое решение на 1 поле. Вы можете рассмотреть возможность замены всех emptys() s на isset(). Согласно руководству по php, empty не вызовет ошибку, если переменная не определена, и это, похоже, то, что вы пытаетесь достичь.

0 голосов
/ 14 февраля 2012

На первый взгляд, если вы не заполните текстовое поле электронной почты, тогда ничего не будет отображаться, поэтому вы ошиблись: попробуйте изменить его на:

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

To:

if(isset($_POST)){

Обновление

Более того, после подбора кода вы несколько раз написали died() - это должно бытьdie()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...