摘要:所以在用戶注冊(cè)的時(shí)候,我們通常會(huì)絞盡腦汁來驗(yàn)證一個(gè)郵箱地址的有限性。本文并不是簡單地討論使用正則表達(dá)式來驗(yàn)證一個(gè)郵箱地址是否正確,而是希望通過更多的手段來真正驗(yàn)證一個(gè)郵箱地址的郵箱性。
原文來自 Laravist 社區(qū): https://www.codecasts.com/blo...
一個(gè)郵件地址是否有效關(guān)系一定程度上決定了這個(gè)用戶是否是優(yōu)質(zhì)用戶,或者說成為優(yōu)質(zhì)用戶的潛質(zhì)更大。所以在用戶注冊(cè)的時(shí)候,我們通常會(huì)絞盡腦汁來驗(yàn)證一個(gè)郵箱地址的有限性。
本文并不是簡單地討論使用正則表達(dá)式來驗(yàn)證一個(gè)郵箱地址是否正確,而是希望通過更多的手段來真正驗(yàn)證一個(gè)郵箱地址的郵箱性。
本文驗(yàn)證一個(gè)郵件地址有效性的內(nèi)容包含以下幾個(gè)內(nèi)容:
最常規(guī)的正則表達(dá)式的匹配
郵件的 DNS 有效性
檢驗(yàn) MX 記錄的有效性
屏蔽一次性郵件服務(wù)商
更多細(xì)節(jié),比如發(fā)起發(fā)信請(qǐng)求
validator.pizza啊哈,在這里推薦大家可以使用 https://www.validator.pizza 郵件驗(yàn)證服務(wù),免費(fèi),準(zhǔn)確率還很高。具體的實(shí)現(xiàn)方式是通過向 validator.pizza 發(fā)起 HTTP 請(qǐng)求,用來驗(yàn)證用戶郵箱地址是否有效,比如,普通的 PHP 代碼可以是這個(gè)樣子:
$email = "[email protected]"; // 這是一個(gè) laravist 社區(qū)注冊(cè)的垃圾郵件 $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 的項(xiàng)目當(dāng)中,我們還可以直接擴(kuò)展 Validator 來實(shí)現(xiàn)郵件地址有效性的驗(yàn)證,在 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; } }, "郵箱地址不可用"); }
然后在驗(yàn)證的時(shí)候可以這樣使用:
$this->validate(request(),["email"=>"required|isValid"])
這樣一來,基本上就可以應(yīng)付 90% 以上的郵件地址驗(yàn)證,包含一次性郵件地址驗(yàn)證和有效性驗(yàn)證。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/23091.html
摘要:上篇鏈接年,用更現(xiàn)代的方法使用上年,用更現(xiàn)代的方法使用中公鑰的發(fā)布與交換討論公鑰安全交換的中文文章比較少,而這一環(huán)是整個(gè)加密體系的重中之重。年月,有攻擊者惡意向公鑰服務(wù)器提交了對(duì)兩個(gè)著名網(wǎng)友的簽名背書。此事件中的受害者的證書就被簽名了次。上篇鏈接:2021年,用更現(xiàn)代的方法使用PGP(上)2021年,用更現(xiàn)代的方法使用PGP(中)PGP 公鑰的 發(fā)布 與 交換討論公鑰安全交換的中文文章比較少...
閱讀 882·2021-11-18 10:02
閱讀 1705·2019-08-30 15:56
閱讀 2578·2019-08-30 13:47
閱讀 2649·2019-08-29 12:43
閱讀 864·2019-08-29 11:19
閱讀 1795·2019-08-28 18:23
閱讀 2680·2019-08-26 12:23
閱讀 3020·2019-08-23 15:29