PHP异常错误消息

时间:2017-01-02 09:52:55

标签: php html exception try-catch

我有一个php和html代码。我有4个输入电子邮件发送(名称,到,主题,消息),我有异常验证。现在我的编码工作:如果第一个输入是空的然后显示错误消息,如果第二个输入为空(并且第一个不为空)显示错误消息等...我想显示每个错误消息,如果我点击发送不是一个通过一个与php异常。任何想法我该如何解决?

具有异常处理的PHP代码:

if (isset($_POST['Send'])) {
    class emailException extends Exception {}
    class email_validException extends Exception {}
    class subjectException extends Exception {}
    class messageException extends Exception {}

    $name = $_POST['name'];
    $to = $_POST['to'];
    $subject = $_POST['subject'];
    $message = $_POST['message'];
    try {
        if($name == "") {
            throw new Exception("Töltsd ki a mezőt(1)!");
        }
        if($to == "") {
            throw new emailException("Töltsd ki a mezőt(2)!");
        }
        // Email cim ellenőrzése
        if (!filter_var($to, FILTER_VALIDATE_EMAIL)) {
            throw new email_validException("Hibás email cím!");
        }
        if($subject == "") {
            throw new subjectException("Töltsd ki a mezőt(3)!");
        }
        if($message == "") {
            throw new messageException("Töltsd ki a mezőt(4)!");
        }
        if ($name != "" && $to != "" && $subject != "") {
            echo "Email elküldve";
            $name = "";
            $to = "";
            $subject = "";
            $message = "";
        }
    }
    catch(emailException $e1) {
        $error_mail = $e1->getMessage();
    }
    catch(email_validException $e1) {
        $error_mail_valid = $e1->getMessage();
    }
    catch(subjectException $e2) {
        $error_subj = $e2->getMessage();
    }
    catch(messageException $e3) {
        $error_message = $e3->getMessage();
    }
    catch(Exception $e) {
        $error = $e->getMessage();
    }
}

HTML输入表单:

<form name="myForm" onsubmit="//return validateForm();" method="post" action="feladat9.php">
    <p><input type="text" name="name" placeholder="Név" value="<?php echo $name; ?>"><label id="error_name"><?php echo $error ?></label></p>
    <p><input type="text" name="to" placeholder="Címzett" value="<?php echo $to; ?>"><label id="error_email"><?php
            echo "$error_mail $error_mail_valid";?></label></p>
    <p><input type="text" name="subject" placeholder="Tárgy" value="<?php echo $subject; ?>"><label id="error_subject"><?php echo $error_subj ?></label></p>
    <p><input type="text" name="message" placeholder="Üzenet" value="<?php echo $message; ?>"><label id="error_message"></label><?php echo $error_message ?></p>
    <input type="submit" value="Send" id="send" name="Send">
</form>

1 个答案:

答案 0 :(得分:1)

如果您想显示所有错误,则不应使用&#39;抛出新异常&#39;概念,因为异常停止下一步执行跳转到捕获部分。

您可以尝试这样:

Fooable

和$ errors变量可用于显示错误。

相关问题