限制以HTML文本格式提交的电子邮件扩展名

时间:2012-03-16 14:24:02

标签: php forms

如何使用PHP限制可以在HTML form中提交的电子邮件地址扩展名?例如,我想要求所有用户输入@gmail.com电子邮件地址。

<小时/> 编辑:我已尝试使用if语句和substr()返回提交的电子邮件地址中的最后十个字符(如果它包含正确的电子邮件地址扩展名,则应为@gmail.com)。但是,这可能不是最有效/最安全的方法。有没有人知道任何其他更安全的方法来解决这个任务。

示例:

if(isset($_POST['submit'])) {
    $email = trim(strtolower($_POST['email']));

    if(substr($email, -10) != '@gmail.com') {
        //show error message here
    } else {
        //continue script
    }

2 个答案:

答案 0 :(得分:2)

新的html 5元素应该让你这样做,因为他们会接受一个'pattern'属性,你可以插入一个正则表达式来限制字符串的结尾到@ gmail.com。您可以使用javacsript / jquery执行相同的操作,并根据提交时的脚本验证表单。 \ @ gmail.com $应该这样做。

答案 1 :(得分:1)

是的,whiterainbow说的很好,但它的客户端验证,很容易被绕过。你应该这样做,但也要在表单验证php脚本中检查它。应该是这样的:

/*Say the user entered email_add@gmail.com*/
$website = explode("@", $_POST['email']);
/*$website is now => array(0 => "email_add", 1 => "gmail.com")*/
$website = end($website);      // Grab the last element of the array

if($website != "gmail.com")
{// Show some error here}

/*SUBSTITUTE METHOD: A Shorter method that elias suggested in a comment below*/
if (!stristr($_POST['email'],'@gmail.com'))
{// Show some error here}

P.S - 有一种较短的方法来获取阵列的最后一个元素并且爆炸,不能记住它从我的脑海里......谷歌它