也许有人可以帮我解决这个问题。创建了一个表单,我使用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>
答案 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中匹配。