PHP注册脚本-强制特定电子邮件域

PHP注册脚本-强制特定电子邮件域,php,email,Php,Email,我目前在我的网站上有一个注册脚本,要求电子邮件来自特定域 因此,在这个例子中,我们会说用户需要使用@gmail.com电子邮件注册 $gmail = 'gmail.com'; $emailCheck = strpos($_POST['email'],$gmail); 在继续之前,我会检查用户提交的电子邮件是否包含gmail.com if($emailCheck === false) { $err[]='Only @gmail.com email addresses are cu

我目前在我的网站上有一个注册脚本,要求电子邮件来自特定域

因此,在这个例子中,我们会说用户需要使用@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. //
}
我遇到的问题是,如果用户填写user@yahoo.com该脚本提供了错误信息。如果用户提供user@gmail.com这是它应该做的。但是,如果用户只输入电子邮件的第一部分,而不输入@gmail.com,那么它也可以工作,运行SQL查询并将值输入数据库

任何帮助都将不胜感激

$input=trim($_POST['email']);
$input=trim($_POST['email']);
if (preg_match("/^\S+@gmail\.com$/i", $input) {

// INSERT IN DB, ETC. //

}
else {
$err[]='Only valid <your_login>@gmail.com email addresses are currently accepted.';
}
if(preg_match(“/^\S+@gmail\.com$/i”,$input){ //插入数据库等// } 否则{ $err[]=“当前只接受有效的@gmail.com电子邮件地址。”; }
根据您发布的代码,输入不包含“gmail.com”的电子邮件地址将不会执行第二个
if
正文中的语句,因为将设置$err。您确定这是正在执行的代码吗?这不是一个真正的答案,但我建议使用if(count($err)<1)并声明$err=[]关于你的$gmail变量。修复了它,事实上,你是对的。我还运行了一个检查,以确保它是一个有效的电子邮件地址,然后再将它支付给($emailCheck),如果($emailCheck)导致$emailCheck被跳过,而不是每次提交一封完整的电子邮件!