2016-03-01 68 views
0

我有以下代碼來檢查用戶輸入是否是一個有效的電子郵件,可能有幾個問題已經關於此,但沒有人似乎驗證PHP函數。驗證電子郵件使用PHP的問題

/* check if valid email*/ 
public function isValidEmail($email){ 
    if(filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     return true; 
    } 
    return false; 
} 

如果我們使用此功能測試:

isValidEmail('[email protected]') 

這應返回false因爲像?=字符的電子郵件地址中。有沒有更嚴格的方式來檢查電子郵件?

+0

通過「什麼都不寫」 - 你的意思是它返回真正的測試輸入? – Epodax

+0

您將變量作爲'$ epost'傳遞給函數,然後以'$ email'的形式訪問它 - 這不會檢查傳入的變量。 – Luke

+0

拼寫錯誤,問題更新, – sdfgg45

回答

2

這裏的問題是,?=是完全有效的電子郵件地址。從Wikipedia on the RFC controlling email addresses

的電子郵件地址的本地部分可以使用這些ASCII字符:
這些特殊字符:!#$%&「* + -/=^_`{|}〜( ASCII:33,35-39,42,43,45,47,61,63,94-96,123-126)

如果你想確保電子郵件地址確實存在,只是意識到那條路是very difficult