我讀了很多關於檢查數據庫中是否存在相同電子郵件的問題。然而,這些解決方案都沒有考慮到電子郵件提供商(例如google)允許用戶在其帳戶名稱中加點的情況。例如[email protected]
等於[email protected]
。檢查是否有已經註冊的電子郵件地址(包括點等)
我明白我可以去掉點並像這樣檢查它,這是個好主意嗎?
但我相信還有其他的事情需要在這裏考慮。
幫我檢查一下數據庫中是否有給定的電子郵件,並考慮了點和其他額外的因素。
UPDATE 這是我檢查是否有電子郵件地址的方式。
public function isemail($email)
{
$qw = $this->registry->dbi->prepare("SELECT `email` FROM `".PRE."membership` WHERE `email`=?;")->execute($email)->results();
if (empty($qw)) return false;
return true;
}
問題是,例如[email protected]
比[email protected]
不同,因爲有一個點。有些電子郵件允許點是相同的帳戶,有些則不是。我應該如何表現?
類似的解決方案
解決類似的問題都可以在這裏找到
How to check for a duplicate email address in PHP, considering Gmail ([email protected])
爲什麼重複地址有問題? – Blender 2013-02-25 00:41:55
因爲它是一個註冊系統,每個登錄必須有一封電子郵件。 – Davit 2013-02-25 00:43:27
期限在電子郵件地址rfc5322,rfc5321的本地部分有效。 [email protected]和[email protected]應該被認爲是不同的;在電子郵件地址上添加一個唯一的約束就足夠了。 (如果主持人選擇將我@和我@映射到不在您控制範圍內的同一個用戶;那麼可以選擇將我@和mu @映射到同一個用戶/帳戶) – wildplasser 2013-02-25 00:50:12