2011-12-12 52 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.'; 
} 
相關問題