-2

我制作了一个小的 PHP 脚本来检查电子邮件是否有效。唯一的问题是它不检查点是否在“@”后面。它接受这样的电子邮件: Hi.Hello@hotmailcom 当它应该只接受像 HiHello@hotmail.com 这样的电子邮件时

这是我的脚本:

<?php
$mail = $_POST['mail'];

    function checkmail($mail)
        {
            if ((strpos ($mail, '@') !== false) && (strpos ($mail, ".") !==false))
            {                   
                return true;
            }
            else
            {
                return false;
            }
        }

if(checkmail($mail))    
{
echo"Goed"; 
}   
else    
{       
echo"Fout";     
}

?>

提前致谢!

4

3 回答 3

3

不要重新发明轮子,使用filter_var('bob@example.com', FILTER_VALIDATE_EMAIL),或者在你的情况下更好filter_input(INPUT_POST, 'mail', FILTER_VALIDATE_EMAIL)

http://php.net/filter_var
http://php.net/filter_input

于 2012-06-28T09:10:08.567 回答
1

如上述帖子所述,您可以使用filter_varPHP 函数,但前提是您的 PHP 版本大于5.2.0。如果您想要一些更通用的电子邮件验证,您还可以使用正则表达式,请参阅此处此处了解详细信息。

于 2012-06-28T09:19:08.640 回答
1
if (
(strpos ($mail, '@') !== false) && 
(strpos ($mail, '@') == strrchr($mail, '@')) && 
(strripos($mail, ".") > strpos ($mail, '@'))
)
{return true;}

// explication:
//
// (strpos ($mail, '@') !== false) => '@' character is in the string
// (strpos ($mail, '@') == strrchr($mail, '@')) => '@' character is unique
// (strripos($mail, ".") > strpos ($mail, '@')) => last position of '.' character is      
// greater than '@' character position 
于 2020-04-14T12:35:25.793 回答