今天我已經瞭解到可以通過兩種方式驗證電子郵件。一種方法是通過正則表達式,另一種方式是通過filter_var()
函數。使用PHP filter_var()或使用正則表達式進行郵件驗證
如果有人能告訴我filter_var
的驗證有多強,如果有關於從正則表達式切換到它的想法有任何建議或建議,那麼它會很好。
今天我已經瞭解到可以通過兩種方式驗證電子郵件。一種方法是通過正則表達式,另一種方式是通過filter_var()
函數。使用PHP filter_var()或使用正則表達式進行郵件驗證
如果有人能告訴我filter_var
的驗證有多強,如果有關於從正則表達式切換到它的想法有任何建議或建議,那麼它會很好。
正如馬克·拜爾斯所說,filter_var確實證明了任何嚴格有效的東西,我認爲這是一件好事。例如,使用Gmail:
您的電子郵件地址爲[email protected]。你想在網站x.com上註冊。您不完全信任該網站,並且您通過電子郵件地址註冊[email protected]。 Gmail會自動將其重定向到您自己的收件箱。因此,如果這個不受信任的網站將您的電子郵件地址出售給某人,並且您收到一封電子郵件,郵件地址爲[email protected],那麼您知道是誰將您的電子郵件地址發送出去了!
當你編寫自己的正則表達式時,你可能不會考慮這樣的事情,並且對於使用這種語法的人(像我一樣),它可能變得非常煩人。我總是使用filter_validate()。這樣,我知道一個有效的電子郵件地址將始終被驗證。
無論如何,說實話:無論您使用自己的正則表達式還是filter_validate,我仍然可以編寫一個將被驗證的虛假電子郵件地址。您可以接受任何內容併發送「激活您的帳戶」電子郵件,以確保用戶可以從您的網站接收和閱讀電子郵件。
如果您使用filter_var
它將驗證[email protected]
這些嚴格來說是有效的,但您可能不希望在您的應用程序中允許這樣的地址。
如果使用正則表達式,您可以更多地控制允許和禁止的內容。
儘管驗證電子郵件地址的最可靠方法是嘗試向其發送電子郵件並要求收件人點擊鏈接進行確認。這也將帶來另一個好處 - 可能有人可能在輸入電子郵件地址時輸入錯別字,以致結果仍然是有效的電子郵件地址,但不是正確的地址。
電子郵件地址過濾器('FILTER_VALIDATE_EMAIL')並不神奇。它只是使用正則表達式[(source)](http://svn.php.net/viewvc/php/php-src/trunk/ext/filter/logical_filters.c?view=markup#l525)工作 - 無論這是最適合您的需求,我無法回答。瞭解該工具正在做什麼(正則表達式接受/拒絕?)和*不使用單一工具*可能是您最安全的一步。 – salathe 2010-10-30 19:23:57