摘要:所以在用戶注冊的時候,我們通常會絞盡腦汁來驗證一個郵箱地址的有限性。本文并不是簡單地討論使用正則表達式來驗證一個郵箱地址是否正確,而是希望通過更多的手段來真正驗證一個郵箱地址的郵箱性。
原文來自 Laravist 社區: https://www.codecasts.com/blo...
一個郵件地址是否有效關系一定程度上決定了這個用戶是否是優質用戶,或者說成為優質用戶的潛質更大。所以在用戶注冊的時候,我們通常會絞盡腦汁來驗證一個郵箱地址的有限性。
本文并不是簡單地討論使用正則表達式來驗證一個郵箱地址是否正確,而是希望通過更多的手段來真正驗證一個郵箱地址的郵箱性。
本文驗證一個郵件地址有效性的內容包含以下幾個內容:
最常規的正則表達式的匹配
郵件的 DNS 有效性
檢驗 MX 記錄的有效性
屏蔽一次性郵件服務商
更多細節,比如發起發信請求
validator.pizza啊哈,在這里推薦大家可以使用 https://www.validator.pizza 郵件驗證服務,免費,準確率還很高。具體的實現方式是通過向 validator.pizza 發起 HTTP 請求,用來驗證用戶郵箱地址是否有效,比如,普通的 PHP 代碼可以是這個樣子:
$email = "666@qq.com"; // 這是一個 laravist 社區注冊的垃圾郵件 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.validator.pizza/email/" . $email); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($ch); curl_close($ch); var_dump($response);
或者在 Laravel 的項目當中,我們還可以直接擴展 Validator 來實現郵件地址有效性的驗證,在 AppServiceProvider 的 boot() 方法添加下面的代碼:
public function boot() { Validator::extend("isValid", function ($attribute, $value, $parameters, $validator) { $request = (new Client())->get("https://www.validator.pizza/email/" . $value); $body = json_decode($request->getBody()->getContents()); switch ( $body ) { case $body->status == 400: return false; case !$body->mx: return false; case $body->disposable: return false; default: return true; } }, "郵箱地址不可用"); }
然后在驗證的時候可以這樣使用:
$this->validate(request(),["email"=>"required|isValid"])
這樣一來,基本上就可以應付 90% 以上的郵件地址驗證,包含一次性郵件地址驗證和有效性驗證。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/23091.html
摘要:上篇鏈接年,用更現代的方法使用上年,用更現代的方法使用中公鑰的發布與交換討論公鑰安全交換的中文文章比較少,而這一環是整個加密體系的重中之重。年月,有攻擊者惡意向公鑰服務器提交了對兩個著名網友的簽名背書。此事件中的受害者的證書就被簽名了次。上篇鏈接:2021年,用更現代的方法使用PGP(上)2021年,用更現代的方法使用PGP(中)PGP 公鑰的 發布 與 交換討論公鑰安全交換的中文文章比較少...
閱讀 870·2021-11-18 10:02
閱讀 1671·2019-08-30 15:56
閱讀 2570·2019-08-30 13:47
閱讀 2639·2019-08-29 12:43
閱讀 851·2019-08-29 11:19
閱讀 1783·2019-08-28 18:23
閱讀 2669·2019-08-26 12:23
閱讀 3007·2019-08-23 15:29