在提交按钮单击之前显示错误消息

时间:2014-06-15 08:54:17

标签: php validation html-email

也许有人可以帮我解决这个问题。创建了一个表单,我使用PHP来验证电子邮件输入。页面加载时显示Error变量,而单击提交按钮时则不显示。我该如何解决这个问题。

<?php
if($_SERVER['REQUEST_METHOD']==="POST"){





$emailErr = "";
$email = "";

 if (empty($_POST["email"])) {
 $emailErr = "Email is required";
 } else {
 $email = test_input($_POST["email"]);
 // check if e-mail address syntax is valid
 if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
   $emailErr = "Invalid email format"; 
 }
  }
 }

?>                           <!---[1]-->
<form id="myform" action="formval2.php" method="post" onsubmit="return checkinfo()">

 <label for="name">First Name</label>
 <input type="text" name="FirstName" id="fname"><span id="errorname"></span>
 <br/>

<label for="FirstName">Lastt Name</label> 
 <input type="text" name="LastName" id="lname"><span id="errorlname"></span>
<br/>

 <label for="password">Password</label>
 <input type="password" name="Password" id="pw"><span id="errorpw"></span>
 <br/>

 <label for="email">Email</label>
 <input type="email" name="Email" id="email"><span id="erroremail"><?php print "$emailErr";?  ></span>
 <br/>
<input type="submit" value="submit" onclick="val()"/>

</form>

2 个答案:

答案 0 :(得分:1)

您的比较似乎使用单个=。在PHP中,比较是双==。所以改变你的比较:

 if($_SERVER['REQUEST_METHOD']=="POST"){

这应解决问题。

答案 1 :(得分:0)

这会更好用

if(isset($_POST["email"])) {

    $emailErr = "";
    $email = "";



    if (filter_var($_POST["email"], FILTER_VALIDATE_EMAIL) === false) {
        $emailErr = "Email is not valid";
    } else {
        $email = test_input($_POST["email"]);
    }
}else {
    $emailErr = "Email is required";
}

已更改,因此仅查看是否设置了$_POST["email"],因为如果我们知道用户已发布表单,我们无需检查两次。此外,您的正则表达式无效,PHP已经具有可以验证电子邮件地址的功能。

修改

<input type="email" name="Email" id="email">应为<input type="email" name="email" id="email">,因此名称在HTML和PHP中匹配。