如何创建验证电子邮件地址的PHP Web表单?

时间:2010-10-16 03:39:03

标签: php validation forms

我环顾四周,似乎无法找到一种方法来创建一个没有提交按钮(仅限输入)的简单表单,该按钮会检查以确保输入的信息确实是电子邮件地址。任何帮助将不胜感激。

*免责声明我对PHP几乎一无所知。我意识到这很容易,我只是不明白。

3 个答案:

答案 0 :(得分:0)

HTML表单默认接受按Enter键提交表单,因此您无需执行任何额外操作。

对于电子邮件验证,请使用带有filter_var标记的FILTER_VALIDATE_EMAIL函数。

实施例

HTML文件:

<form method="post" action="yourfile.php">
    <input type="text" name="email" />
</form>

PHP文件:

<?php
$email = $_POST['email'];
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
    // Email is invalid, do something
}
else
{
   // Email is valid
}
?>

注意:根据此问题中的原因,请勿使用正则表达式解析电子邮件地址 - Using a regular expression to validate an email address

答案 1 :(得分:0)

澄清表单不是php实际上它实际上是html,它可能“转到”一个php文件。

要使按钮不可见:

<input type="submit" style="visibility:hidden">

验证电子邮件客户端(无需提交 - 或以简明的英语进入服务器并返回):

查看他的教程:

http://tutorialblog.org/client-side-form-validation-with-jquery/

非常简单!

如果您真的想要服务器端验证,我会查看他的教程:

http://www.w3schools.com/php/filter_validate_email.asp

我也非常非常简单,你不必掌握任何语言。

祝你好运

答案 2 :(得分:0)

这里有几点:

1)电子邮件地址的用户名组件确实有一组“基本”规则

但是,这些规则实际上非常复杂和复杂。要创建匹配100%有效字符串的正则表达式,并且几乎不可能匹配0%的无效字符串。

2)RFC指出应该验证电子邮件地址的用户名部分的唯一服务器是该域的主机

也就是说,发送到 joe@server.com 的电子邮件应该只有服务器处理“服务器”的服务器验证“ joe ”组件.COM ”。

3)即使是通过任何正则表达式测试的地址,也可能无效/

我可以说我的电子邮件地址是 thisdoesnotexist12756@gmail.com ,这可能是一个潜在有效的地址,但这并不意味着它存在,活跃或是我的。

http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx

处理电子邮件地址并检查其有效性的

更好的解决方案是使用正则表达式执行极其基本的检查(只需检查地址是否包含至少一个“@”符号,以及至少一个“。”符号位于最右边的“@”右侧,然后向该地址发送一封电子邮件,其中包含一个链接,然后通过另一个表单回发(使用$ _GET参数)来建议该消息通过指定的电子邮件成功收到。

示例:

  1. 用户访问您的表单
  2. 用户输入所有数据
  3. (可选)您的表单使用javascript快速检查电子邮件地址,以确保存在模式/.+\@.+..+/。
  4. 用户提交表单
  5. 然后,您的PHP表单处理程序(“脚本”)将重新检查表单的内容,包括使用preg_match()检查/.+\@.+..+/
  6. 的电子邮件地址
  7. 您的PHP脚本将表单内容保存到表中,但将该表标记为“ pending
  8. 然后,您的PHP脚本会生成一封指向地址的电子邮件,其中包含指向您网站上的PHP脚本的链接(即http://www.server.com/validate.php?entry=1),并要求用户点击该脚本以验证其提交
  9. validate.php 中的脚本会查看它的$_GET['entry']参数,如果数据库表中有一行与该值匹配,则会将其标记为“有效
  10. 诚然,这是一个非常漫长而复杂的过程,但是,如果你想100%确定用户提交的电子邮件地址,至少可以在收到时发送电子邮件地址。表单提交,这是唯一可以完成的方式。

    还应该注意的是,有许多服务允许用户设置临时电子邮件地址,加上普通的电子邮件地址绝不是永久性的,因此今天验证的地址明天可能不会这样做。