我有一个PHP表单来获取用户的姓名和电子邮件。 对于电子邮件字段,我想验证该字段是否已填写且该电子邮件地址是否有效。 我使用下面的代码
验证电子邮件字段是否已填写有效,但不是电子邮件验证。
<tr>
<td align="right">
Email:
</td><td align="left">
<input type="text" size="25" name="email" value="<? echo $_GET['email']; ? >"/">
<?
#checking if email exists
if ($error_code && !($_GET['email'])) {
echo "<b>Please include your email address.</b>";
}
# validating email
if (!filter_var(($_GET['email']), FILTER_VALIDATE_EMAIL) === true) {
echo "<b>This is not a valid email address.</b>";
}
?>
即使在输入电子邮件地址之前,也会显示消息“这不是有效的电子邮件地址”,如果我输入错误的电子邮件地址并提交表单,则不会显示正确的消息。 有什么问题,为什么在提交值之前验证电子邮件错误?
答案 0 :(得分:0)
考虑测试isset($_GET['email'])
包装所有验证。此外,如果此数据来自表单,请检查您的方法是否真的是GET,否则您想要使用$_POST
检查参数。
答案 1 :(得分:0)
试试这个
if (filter_var($_GET['email'], FILTER_VALIDATE_EMAIL) != true) {
echo "<b>This is not a valid email address.</b>";
}
在发布表单之前看到结果的原因是因为在进行验证之前,您没有检查$_GET
数组是否已设置。
所以你可以做点像......
if(isset($_GET['email'])){
if ($error_code && empty($_GET['email'])) {
echo "<b>Please include your email address.</b>";
}
if (filter_var($_GET['email'], FILTER_VALIDATE_EMAIL) != true) {
echo "<b>This is not a valid email address.</b>";
}
}
答案 2 :(得分:0)
试试这个,请告诉我这是否有帮助
<?
#checking if email exists
if ($error_code && !($_GET['email'])) {
echo "<b>Please include your email address.</b>";
}
//# validating email
if (!filter_var($_GET['email'], FILTER_VALIDATE_EMAIL)) {
echo "<b>This is not a valid email address.</b>";
}
?>