php中的电子邮件验证不起作用,尝试了filter_var和preg_match
我试图验证用户是否输入了密码和电子邮件地址,电子邮件地址是否有效,以及pwd是否正确 该代码可以很好地检查是否输入了密码和电子邮件地址,以及密码是否正确。但是电子邮件验证失败了。无论我在表单中输入什么,我都会被重定向,失败消息永远不会显示 为什么? 谢谢 这是我的密码:php中的电子邮件验证不起作用,尝试了filter_var和preg_match,php,html,Php,Html,我试图验证用户是否输入了密码和电子邮件地址,电子邮件地址是否有效,以及pwd是否正确 该代码可以很好地检查是否输入了密码和电子邮件地址,以及密码是否正确。但是电子邮件验证失败了。无论我在表单中输入什么,我都会被重定向,失败消息永远不会显示 为什么? 谢谢 这是我的密码: <?php $check_email = $_POST['who']; $regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0
<?php
$check_email = $_POST['who'];
$regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/';
if (preg_match($regex, $check_email)) {
header("Location: xyz.php?name=".urlencode($_POST['who']));
return;
} else {
$failure = "E-mail must have an @-sign";**
<h1>Please Log In</h1>
<?php
**if ( $failure !== false ) {
echo('<p style="color: red;">'.htmlentities($failure)."</p>\n");
}**
?>
<form method="POST">
<label for="nam">E-Mail</label>
<input type="text" name="who" id="nam"><br/>
<label for="id_1723">Password</label>
<input type="text" name="pass" id="id_1723"><br/>
<input type="submit" value="Log In">
<input type="submit" name="cancel" value="Cancel">
</form>
</div>
</body>
电子邮件
密码
您缺少大量关键语法首先,您必须验证是否设置了$\u POST变量
其次,如果您想要最简单的方法,您必须使用filter\u var
第三,您缺少很多文件末尾的括号。
第四,在PHP中,星号是多余的。
旁注:记住使用mysqli\u real\u escape\u字符串清理用户输入
这是你的新代码
<?php
if(isset($_POST['who']))
{
$check_email = $_POST['who'];
if (filter_var($check_email, FILTER_VALIDATE_EMAIL))
{
header("Location: xyz.php?name=".urlencode($_POST['who']));
return;
}
else
{
$failure = "E-mail must have an @-sign";
}
?>
<h1>Please Log In</h1>
<?php
if (!empty($failure))
{
echo('<p style="color: red;">'.htmlentities($failure)."</p>\n");
}
}
?>
<form method="POST">
<label for="name">E-Mail</label>
<input type="text" name="who" id="nam"><br/>
<label for="id_1723">Password</label>
<input type="text" name="pass" id="id_1723"><br/>
<input type="submit" value="Log In">
<input type="submit" name="cancel" value="Cancel">
</form>
</div>
</body>
请登录
电子邮件
密码
使用函数:filter\u var(“example@gmail.com“,FILTER\u VALIDATE\u EMAIL)对我有效:如果PHP中已经有一个内置函数,为什么还要麻烦你:FILTER\u var($EMAIL,FILTER\u VALIDATE\u EMAIL)
?谢谢,我试过了,也不起作用……我建议你看看W3学校,因为许多问题都与基本的PHP语法有关代码>应退出
after headerFirst-感谢您抽出时间详细撰写评论。第二,我没有发布整个代码,因为它看起来太长了。我只发布了相关信息,因为所有其他验证都在运行。因此,在原始代码中,$\u POST变量确实得到了验证。第三,我也尝试了filter_var,但它也不起作用。第四,星号只是为了突出显示代码的相关部分。我尝试了上面的代码,但电子邮件没有经过验证。就好像根本没有检查……最终功能过滤器或预匹配根本不是问题。这是php中的命令集。但有时你总是盯着错误的问题。。。