2011-12-12 89 views
0

我目前在我的网站上有注册脚本,要求电子邮件来自特定域名。PHP注册脚本 - 强制特定电子邮件域名

因此,对于这个示例,我们会说用户需要使用@ gmail.com电子邮件进行注册。

$gmail = 'gmail.com'; 
$emailCheck = strpos($_POST['email'],$gmail); 

我再检查,以确保用户的表单提交的电子邮件中包含gmail.com继续之前。

if($emailCheck === false) { 
     $err[]='Only @gmail.com email addresses are currently accepted.'; 
} 

我只能继续使用检查来查看是否有任何$ err []发生了注册。

if(!count($err)) { 

     // INSERT IN DB, ETC. // 
} 

我遇到的问题是,如果用户填写[email protected]脚本提供和错误。如果用户提供[email protected],它应该可以正常工作。但是,如果用户只是输入电子邮件的第一部分而不使用@ gmail.com,它也可以运行,运行SQL查询并将值输入到数据库中。

任何帮助将不胜感激!

+2

给你发布的代码,进入这不是包含“gmail.com”将不会在第二个'if'的身体,因为$ ERR将设置执行报表的电子邮件地址。你确定这是正在执行的代码吗? – CodeCaster

+0

不是一个真正的答案,但我会建议如果(count($ err)<1)并且还在$ gmail var中声明$ err = []。 –

+0

修正它实际上,你是对的。我还在运行支票以确保它是一个有效的电子邮件地址,然后付给if($ emailCheck),导致$ emailcheck被跳过,而没有提交完整的电子邮件! – Jako

回答

2
$input=trim($_POST['email']); 
if (preg_match("/^\[email protected]\.com$/i", $input) { 

// INSERT IN DB, ETC. // 

} 
else { 
$err[]='Only valid <your_login>@gmail.com email addresses are currently accepted.'; 
}