如何使用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
}
答案 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 - 有一种较短的方法来获取阵列的最后一个元素并且爆炸,不能记住它从我的脑海里......谷歌它