PHP ネイティブ実装
フィルタリングとは異なり、検証は入力データから情報を削除するのではなく、ユーザー入力が期待どおりであるかどうかを確認するだけです。 。電子メール アドレスの場合は、ユーザーが電子メール アドレスを入力していることを確認し、電話番号の場合は、ユーザーが電話番号を入力していることを確認します。
検証とは、特定の形式に準拠した正しいデータがアプリケーションのストレージ層に保存されていることを確認することです。無効なデータが見つかった場合は、データ ストレージ操作を中止し、対応するエラー メッセージを表示してユーザーに注意を促す必要があります。正しいデータを入力します。検証により、データベース内の潜在的なエラーも回避できます。たとえば、MySQL が DATETIME 型の値を予期し、DATE 文字列が指定された場合、MySQL はエラーを報告するか、またはデフォルト値を使用します。無効なデータが破壊されます。
入力データの検証を実装するには、特定の FILTER_VALIDATE_* フラグを filter_var 関数に渡すことができます。PHP は、ブール値、電子メール アドレス、浮動小数点数、整数、IP、正規表現、URL を検証するためのフラグを提供します (詳細については http を参照してください)。 ://php.net/manual/en/filter.filters.validate.php )。次の例は、電子メール アドレスを検証する方法を示しています。
<?php$input = 'yaojinbu@163.com';$isEmail = filter_var($input, FILTER_VALIDATE_EMAIL);if ($isEmail !== FALSE) { echo 'success';} else { echo 'failed';}
検証が成功した場合は、検証対象の値が返され、検証が失敗した場合は false が返されます。
PHP コンポーネントの助けを借りて
filter_var 関数は検証用に多くの識別子を提供しますが、これに頼ってすべてのデータを検証できるわけではありません。 filter_var 関数のほかに、より複雑な検証関数の完成に役立つ次のコンポーネントもあります:
注: 入力データは検証と検証の両方が必要です。期待を満たし、安全であることを確認するためにフィルタリングされています。
Laraval でのデータ検証の実装
データ検証のほとんどのシナリオはフォーム送信で行われ、ほぼすべてのニーズを満たすことができる、Laravel についてのデータ検証の方法も提供します。公式ドキュメントを参照してください: http://laravelacademy.org/post/3279.html。ここでは、ユーザー登録を例として、検証メソッドが AuthController で定義されているものについて簡単に説明します。たとえば、このルールは、電子メール フィールドが必須であること、電子メール アドレスである必要があること、最大長が 255 であること、および users テーブル内で一意であることを示します。検証プロセス全体の実装を見てみましょう。検証プロセスは RegistersUsers トレイト (IlluminateFoundationAuthRegistersUsers) で呼び出されます。
このメソッドは、最初に AuthController の検証メソッドを呼び出して、検証プロセス (IlluminateValidationValidator) の初期化を完了します。次に、fails メソッドが失敗するかどうかを検証し、fails メソッドが pass メソッドを呼び出します。 pass メソッドは、最終的に各ルール (初期化中に配列に変換される) を走査し、validate メソッドを呼び出します。メソッド:
OK ここでは、各ルールに対応する検証メソッドが最終的に組み立てられ、呼び出されることがわかります。電子メールを例に挙げると、この検証メソッドは Validator で定義されています (実際には、検証メソッドです)。各ルールは、ここで対応する検証メソッドを見つけることができます):
コードを通して、PHP によって提供される filter_var が呼び出され、受信フィールドが有効なメールかどうかを検証するために FILTER_VALIDATE_EMAIL フラグが渡されることがわかります。住所。他の検証ルールの実装については、興味のある学生は Validator クラスを学ぶことができます。