Laravel 開発ノート: データ検証とフィルタリングのベスト プラクティス
Laravel 開発では、データ検証とフィルタリングは非常に重要な部分であり、アプリケーションのデータ検証とフィルタリングによってアプリケーションのデータ検証が保証されます。プログラムによって受信されたデータは有効かつ安全で、予期された形式です。この記事では、開発者が Laravel プロジェクトでデータを効果的に処理できるように、データ検証とフィルタリングのベスト プラクティスをいくつか紹介します。
Laravel は、強力で使いやすいデータバリデーターを提供します。検証ルールとエラー メッセージは、コントローラーのメソッドで validate
関数を使用してデータ バリデーターに渡すことができます。例:
public function store(Request $request) { $validatedData = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users', 'password' => 'required|string|min:8', ]); // 存储数据... }
上記のコードは、リクエスト内の name
、email
、および password
フィールドを検証し、次の場合は対応するフィールドを返します。検証に失敗しました。というエラー メッセージが表示されます。
Laravel が提供する通常の検証ルールに加えて、開発者は特定のビジネス ニーズに合わせて検証ルールをカスタマイズすることもできます。これは、カスタム検証ルール クラスを作成することで実現できます。たとえば、電話番号が特定の形式に一致するかどうかを確認する必要がある場合は、次のように実行できます:
namespace AppRules; use IlluminateContractsValidationRule; class PhoneNumber implements Rule { public function passes($attribute, $value) { // 执行电话号码验证逻辑... } public function message() { return '电话号码不符合要求。'; } }
次に、次のようにコントローラーでカスタム検証ルールを使用します:
public function store(Request $request) { $validatedData = $request->validate([ 'phone' => ['required', new PhoneNumber], ]); // 存储数据... }
ユーザー入力データを受信する前に、悪意のある攻撃を防ぐためにデータ フィルタリングを実行する必要があります。 Laravel には、ユーザー入力のフィルタリングに役立つ多くのフィルターが用意されています。一般的に使用されるフィルターの 1 つは、入力から HTML タグを削除する strip_tags
関数です。例:
public function store(Request $request) { $filteredData = $request->input('content'); $filteredData = strip_tags($filteredData); // 对数据进行处理... }
Laravel の strip_tags
フィルター関数を使用すると、ユーザー入力を処理する前に、データに悪意のある HTML タグが含まれていないことを確認できます。
データベース クエリを作成するときは、Laravel のクエリ ビルダーを使用してデータをフィルタリングすることをお勧めします。クエリ ビルダーは、SQL インジェクション攻撃を効果的に防止し、柔軟なフィルタリング メカニズムを提供します。たとえば、クエリ ビルダーの where
メソッドを使用してクエリ結果をフィルタリングできます。
$users = DB::table('users')->where('active', true)->get();
上記のコードは、値を持つ active
フィールドのみを返します。 true ユーザー レコード。
encrypt 関数と
decrypt 関数を使用してデータを暗号化および復号化できます。例:
$encryptedData = encrypt($sensitiveData); $decryptedData = decrypt($encryptedData);
以上がLaravel 開発ノート: データ検証とフィルタリングのベストプラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。