我一直在尝试在PHP代码中找到验证电子邮件的方法。我只能给你部分代码,因为它真的很长。我想要做的是让一个人通过点击提交按钮输入他们的电子邮件地址,如果他们以不可接受的格式输入了他们的电子邮件,则会显示一条错误消息。但我的问题是:我怎样才能将标签与#34;功能验证电子邮件($ field)"?换句话说,我知道如何组合(第A部分)和(第B部分),这很容易。但我真正想做的是将(B部分)与(C部分)结合起来而不是使用(A部分)。那可能吗?我可以以某种方式包括" isset"内部"功能验证电子邮件($ field)"?我必须有一个提交按钮,我必须能够验证电子邮件。
(PART A) <?php //formtest2.php
if (isset($_POST['email'])) $email = $_POST['email'];
else $email = "(Not entered)";
?>
(PART B) <?php
function validate_email($field)
{
if ($field == "") return "No email was entered<br>";
else if (!((strpos($field, ".") > 0) &&
(strpos($field, "@") > 0)) ||
preg_match("/[^a-zA-Z0-9.@_-]/", $field))
return "The email address is invalid<br>";
return "";
}
?>
(PART C) <body>
Your email is: $email<br>
<form method="post" action="brownuniversity.php">
What is your email address?
<input type="text" name="email">
<input type="submit">
</form>
</body>
答案 0 :(得分:0)
首先,你要改变这一切,
function validate_email($field)
{
if ($field == "") return "No email was entered<br>";
else if (!((strpos($field, ".") > 0) &&
(strpos($field, "@") > 0)) ||
preg_match("/[^a-zA-Z0-9.@_-]/", $field))
return "The email address is invalid<br>";
return "";
}
这一点。
function validate_email( $field ){
if (preg_match("/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/", $field)){
return true;
}
return false;
}
您必须在其他地方执行错误消息,但这更便于携带。 (我给你一个更好的电子邮件Regx),现在你可以这样做
if(isset($_POST['email'])){
$email = trim( $_POST['email'] ); //remove any whitespaces from pasting email.
if(validate_email($email)){
//send mail or whatever
}else{
//show errors
}
}
你仍然需要检查是否isset(验证中的$ _POST ['email']实际上不是检查它的地方,它应该只关心数据是否有效,如果有的话在调用函数之前你还需要检查表单是否已发布,并且isset满足这些需求。我更新了答案,你真的不需要验证消息,因为它不是设置,因为如果是这种情况他们没有提交表格,则应始终在表单提交上设置。