PHP中的表单验证-同时显示错误和成功消息

时间:2018-11-11 11:12:54

标签: php

我正在学习编码,并创建了一个简单的表单,其中包含错误消息 显示在每个输入字段的正下方。但是,当我检查表格时  成功消息与错误消息同时出现  正确输入所有字段并显示时的显示  已验证。你能帮忙吗?提前谢谢你。这是我的 代码。

 Caused by: android.view.InflateException: Binary XML file line #39: Error inflating class com.me.AccountParticle
    at android.view.LayoutInflater.createView(Layo

和HTML

</php>

$errorMessage = "";
$successMessage = "";
$emailError = "";
$emailconfirmError = "";
$nameError = "";
$messageError = "";
$servicesError = "";


$name = $email = $emailConfirm = $services = $message = "";

$email = isset($_POST['email']) ? $_POST['email'] : '';
$emailConfirm = isset($_POST['emailConfirm']) ? $_POST['emailConfirm'] : '';


if ($_POST) {

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

        $emailError .="The email is required";

    }

    if (!$_POST['emailConfirm']) {

        $emailconfirmError .="Please confirm your email <br>";

    }
    if ($_POST['emailConfirm'] && $email != $emailConfirm) {

       $emailconfirmError .="The email addresses do not match <br>";   
}

    if (!$_POST['name']) {

        $nameError .="The name field is required <br>";

    }

    if (!$_POST['services'])  {

       $servicesError .="Please select a service required <br>";

    }

    if (!$_POST['message']) {

        $messageError .="The message field is required <br>";

    }


    if ($_POST['email'] && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) {

       $emailError .= "The email address is invalid.<br>";

    }

    if ($name = $email = $emailConfirm = $services = $message != "") {

        echo $emailError;
        echo $emailconfirmError;
        echo $name;
        echo $services;
        echo $message;

    }else {

        $emailTo = "kamala_guliyeva@hotmail.com";

        $services = $_POST['services'];

        $message = $_POST['message'];

        $headers = "From: ".$_POST['email'];



    if (mail($emailTo, $services, $message, $headers)) {

            $successMessage = '<div class="alert alert-success" role="alert">Thank you for your message. We\'ll get back to you ASAP!</div>';


        } else {

            $errorMessage = '<div class="alert alert-danger" role="alert"><p>Your message couldn\'t be sent - please try again</div>';

        }
    }
}        

1 个答案:

答案 0 :(得分:0)

您在这里遇到了一些问题...

所以第一件事就是您如何进行检查。

if(!$_POST) {

不是检查帖子已发布的有效方法,您需要执行类似的操作

if(isset($_POST) && !empty($_POST)) {

因为您正在检查POST数组是否已实际设置并且然后不为空,并且&&运算符是短路运算符,所以更合适,因为如果不满足任何一个条件,则检查将失败。

类似地,您在比较中说if(!$ _ POST ['email']){无效,因为您实际上是在询问“帖子数组中的电子邮件部分是否不正确”,您需要在哪里询问“如果不是空白并且是有效的电子邮件地址”

您需要了解= ==和===运算符之间的区别。您可以在此处找到更多信息:The 3 different equals

这里还有filter_var函数:http://php.net/manual/en/function.filter-var.php

if($_POST['email']!=="" && filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
    //all good
} else {
   //set your error message
}

您可以使用正则表达式来验证“名称”,请参见手册http://php.net/manual/en/function.preg-match.php中的preg_match

除了所有这些,如果您想实时监视字段和错误消息等,您将不得不考虑合并Javascript并使用AJAX与您的脚本进行通信,然后将响应解析回适当的div。

看看Rasmus 30秒的AJAX教程将为您提供一个http://rajshekhar.net/blog/archives/85-Rasmus-30-second-AJAX-Tutorial.html的起点

不过,最好的做法是同时进行客户端和服务器端验证,希望这对每个人来说都不是一个完整的答案。