BackEnd

Laravelの便利なメールアドレスのバリデーション設定

投稿日:2021年10月25日 更新日:

はじめに

最近、Laravelを使用した案件でメールアドレスでユーザー登録をしてもらう際に、バリデーションを掛けているにも拘らず不正なメールアドレスが登録される不具合がありました。
バリデーションルール設定不足が原因だったのですが、メールアドレスのバリデーション設定について調べる良い機会になったので、紹介したいと思います。

不具合内容

バリデーションルール設定

FormRequestクラスを継承して以下の様にルール設定していました。
email と設定したら、後はLaravel側でいい感じにバリデーションしてくれていると思っていました。

不正なメールアドレス例

実際には以下の様なメールアドレスがバリデーションを通ってしまいました。

・〜@gmailcom(ドット抜け)
・〜@gmail(.com抜け)
・〜 @gmail.com(半角スペース)
・〜.@gmail.com(@マーク前にドット)

対応

結論から言うと、追加設定で対応する事が出来ました。Laravel5.8以降で使用可能となっています。
設定は以下5種類があります。

email:rfc

RFC準拠になっているかチェックする。RFC 5321, 5322, 6530, 6531, 6532が対象とのことです。

email:strict

上記の email:rfc のバリデーション時により厳格にチェックする。
Warningも出した時点でバリデーションエラーとするようです。

email:dns

メールアドレスのドメインが有効かどうかをチェックする。
内部では、dns_get_recordメソッドで DNS_MXDNS_ADNS_AAAA のレコードからドメインチェックしているようです。

email:spoof

偽装文字コードが使用されていないかチェックする。偽装メールアドレス防止などに有効の様です。
内部では、Spoofcheckerクラスを使用してチェックしているようです。

email:filter

RFC準拠になっているかチェックする。
内部でfilter_var()メソッドを使用してチェックしているようです。

修正

ルール検証

以下のコードで検証した所、 strict 又は dns のどちらかでバリデーションに成功しました。

修正後バリデーションルール設定

という事で、修正後のバリデーションルールは以下となりました。
今回は、 strictdns を設定する事で無事に不正メールアドレスをはじく事が出来ました。

さいごに

メールアドレスバリデーションが簡単に実装出来て非常に便利ですね。

おすすめ書籍

PHPフレームワークLaravel Webアプリケーション開発 バージョン8.x対応 PHPフレームワークLaravel Webアプリケーション開発

blog-page_footer_336




blog-page_footer_336




-BackEnd
-,

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

rails

関連するモデルのレコードを一緒に作成する方法

1 はじめに1.1 前提条件2 実装2.1 モデルの作成2.2 コントローラの作成2.3 Viewの作成3 さいごに はじめに フォームからレコードを作成する際に、関連するモデルのレコードを一緒に作成 ...

Stripe Connectを使って継続課金にクーポンを適用する

1 はじめに2 クーポンについて2.1 クーポンのタイプ2.2 期間2.3 引き換え回数制限2.4 その他3 クーポンの作成4 クーポンの使用4.1 定期支払にクーポンを適用4.2 Checkoutで ...

laravel logo

laravel-enumを使ってみたら快適だった

1 はじめに2 enumについて3 環境4 導入5 enumクラス5.1 生成5.2 enumクラス編集5.3 日本語化6 マイグレーション6.1 生成6.2 編集7 プロパティのキャスト8 さいごに ...

Go言語

Go言語で使えるmigrationライブラリ

1 はじめに2 migrationライブラリ2.1 goose2.2 sql-migrate2.3 migu2.4 pop2.5 sqldef3 sqldefを使ってみる3.1 導入3.2 テーブルを ...

rails

deviseを使ってユーザ登録フォームを作る

1 はじめに1.1 前提条件2 deviseについて2.1 deviseとは2.2 deviseでできること3 登録処理の実装3.1 Gemのインストール3.2 deviseのインストール3.3 デフ ...

フォロー

blog-page_side_responsive

2021年10月
 12
3456789
10111213141516
17181920212223
24252627282930
31  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。