国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目次
データ検証とは何ですか?
なぜデータ検証が重要なのですか?
通常、アプリケーションでは、クライアント側(cè)の検証とサーバー側(cè)の検証という2種類の検証を使用できます。
#クライアント検証
検証はサーバー上にあるため、ユーザーはそれを変更できません。これは、サーバーに送信されたデータが有効であることを?qū)g際に確認する唯一の方法です。
メソッドを備えた基本的な
メソッドを使用して、許可するファイルタイプを指定します。
Laravelには多くの組み込みの検証ルールが付屬していますが、特定のユースケースに合わせてカスタム検証ルールを作成する必要がある場合があります。
獨自の検証ルールをテストします

Laravel検証の究極のガイド

Mar 06, 2025 am 12:46 AM

The ultimate guide to Laravel Validation

データ検証は、Webアプリケーションの重要なコンポーネントです。セキュリティの脆弱性、データの破損、およびユーザー入力を使用するときに発生する可能性のあるさまざまな問題を防ぐのに役立ちます。

この記事では、データ検証とは何か、なぜそれが非常に重要なのかを調(diào)べます。クライアント側(cè)の検証をサーバー側(cè)の検証と比較し、クライアント側(cè)の検証を依存すべきではない理由を説明します。

次に、Laravelアプリケーションで一般的に使用する便利な検証ルールを紹介します。最後に、獨自の検証ルールを作成する方法を?qū)Wび、それらをテストして、それらが期待どおりに機能することを確認します。

データ検証とは何ですか?


データ検証は、データを使用しようとする前にデータの有効性をチェックするプロセスです。これは、たとえば、要求に必要なフィールドが存在するかどうか、またはフィールドが特定のパターンと一致するかどうか、またはデータベースでユニークであるかなど、より複雑なチェックをチェックする簡単なアイテムです。

通常、Webアプリケーションでデータを検証する場合、データが無効な場合は、ユーザーにエラーメッセージを返す必要があります。

これは、セキュリティの脆弱性、データの破損を防ぎ、データの精度を向上させるのに役立ちます。したがって、データが有効である場合にのみ、リクエストを処理し続けます。

覚えておいてください、ユーザーからのデータを信頼することはできません(少なくとも確認する前に?。?

なぜデータ検証が重要なのですか?


データ検証が重要である理由は、以下を含む多くの理由があります。

#セキュリティを改善

アプリケーションでデータを検証する最も重要な理由の1つは、セキュリティを改善することです。使用する前にデータを確認することにより、アプリまたはユーザーを攻撃するために悪意のある入力が使用される可能性を減らすことができます。

#誤ったデータストレージを防止

フィールドが整數(shù)になることを期待していると想像してくださいが、ユーザーはファイルを渡します。アプリの他の場所でそのデータを使用しようとすると、これはさまざまな問題を引き起こす可能性があります。

別の例を挙げると、ユーザーが投票に投票できるWebアプリケーションを構(gòu)築しているとします。投票は、

時間とAppModelsPollモデルで指定された時間の間にのみ投票できます。投票を設(shè)定するときにopens_at時間の前に誰かが誤って設(shè)定するとどうなりますか?アプリでこれをどのように処理するかによって、これはさまざまな問題を引き起こす可能性があります。 closes_at closes_atモデルに保存する前にデータを検証することにより、アプリケーションのデータ精度を改善し、誤ったデータが保存される可能性を減らすことができます。 opens_at

#職人コマンドが正しく入力されていることを確認してください

HTTPリクエストで渡されたデータを確認できることに加えて、職人コマンドを確認することもできます。これにより、開発者は誤って無効な値を入力し、アプリケーションに問題を引き起こすことができなくなります。

クライアントの検証とサーバー検証

通常、アプリケーションでは、クライアント側(cè)の検証とサーバー側(cè)の検証という2種類の検証を使用できます。

#クライアント検証

クライアント検証は、データをサーバーに送信する前にブラウザで実行される検証です。 JavaScriptまたはHTML屬性を使用して実裝できます。

たとえば、

HTMLの數(shù)字フィールドに簡単な検証を追加して、ユーザーが入力した番號が1?10であることを確認できます。

<input type="number" min="1" max="10" required>
この入力フィールドには4つの別々の部分があり、クライアントの検証に役立ちます。

    :これは、入力が數(shù)字であるべきであることをブラウザに伝えます。ほとんどのブラウザでは、ユーザーが番號以外のものを入力することができなくなります。モバイルデバイスでは、通常のキーボードの代わりに數(shù)値キーボードを持ち出すこともあります。これは、ユーザーエクスペリエンスにとって非常に有益です。
  • type="number"
  • :これは、入力された數(shù)が少なくとも1でなければならないことをブラウザに伝えます。
  • min="1"
  • :これは、入力された數(shù)が最大10でなければならないことをブラウザに伝えます。
  • max="10"
  • :これは、フォームを送信する前にフィールドが必要であり、記入する必要があることをブラウザに伝えます。
  • required ほとんどのブラウザでは、ユーザーが無効な値(またはまったく値なし)でフォームを送信しようとする場合、ブラウザはフォームの送信をブロックし、ユーザーにエラーメッセージまたはプロンプトを表示します。
これは、ユーザーをガイドし、アプリケーションの全體的なユーザーエクスペリエンスを改善するために非常に有益です。しかし、それはそれが考慮すべきということだけです:ガイド。アプリケーションの唯一の形式の検証として、クライアント認証のみに依存するべきではありません。

誰かがブラウザで開発者ツールを開いた場合、設(shè)定したクライアントの確認を簡単に削除してバイパスできます。

さらに、悪意のあるユーザーがアプリを攻撃しようとする場合、通常、自動化されたスクリプトを使用してリクエストをサーバーに直接送信することを覚えておくことが重要です。これは、設(shè)定したクライアントの検証がバイパスされることを意味します。

#サーバー側(cè)の検証

サーバー側(cè)の検証は、サーバー上のアプリケーションバックエンドで実行される検証です。 Laravelアプリケーションのコンテキストでは、これは通常、コントローラーまたはフォームリクエストクラスで実行される検証です。

検証はサーバー上にあるため、ユーザーはそれを変更できません。これは、サーバーに送信されたデータが有効であることを?qū)g際に確認する唯一の方法です。

したがって、アプリでサーバー側(cè)の検証を常に有効にすることを常に有効にしてください。理想的には、リクエストから読み取ろうとする各フィールドは、ビジネスロジックを?qū)g行するために使用しようとする前に検証する必要があります。

Laravelが確認をどのように処理するか

これで、検証とは何か、なぜそれが重要なのかを理解したので、Laravelでそれを使用する方法を見てみましょう。

しばらくLaravelを使用している場合、Laravelにはフレームワークに組み込まれた驚くべき検証システムがあることがわかります。したがって、アプリの検証を開始するのは非常に簡単です。

Laravelでデータを検証する一般的な方法はいくつかありますが、最も一般的な方法の2つをカバーします。
  • データの手動検証
  • フォームリクエストクラスを使用してデータを確認します
#データの手動検証

データを手動で検証するには(コントローラーメソッドなど)、

ファサードを使用してIlluminateSupportFacadesValidatorメソッドを呼び出すことができます。 make

次に、2つのパラメーターを

メソッドに渡すことができます。 make

    - 検証したいデータ
  • data
  • -
  • に基づいてデータを検証したいルール rules
サイドノート:メソッドは、2つのオプションのパラメーターも受け入れます:make。これらを使用して、ユーザーに返されるエラーメッセージをカスタマイズできますが、この記事では説明しません。 messagesattributes 2つのフィールドを検証する可能性のある例を見てみましょう。 上記の例では、2つのフィールドを検証していることがわかります:

。これらの2つのフィールドの値をハードコードして、例をより明確にしますが、実際のプロジェクトでは、通常、これらのフィールドをリクエストから取得します。
<input type="number" min="1" max="10" required>
フィールドが設(shè)定されており、文字列であり、最大100文字の長さがあるかどうかを確認しています。また、

フィールドが設(shè)定されており、文字列であり、最大250文字の長さがあるかどうかを確認します。 title body検証裝置を作成した後、返されたtitleインスタンスのメソッドを呼び出すことができます。たとえば、検証が失敗したかどうかを確認するには、メソッドを呼び出すことができます:description

同様に、Validatorインスタンスで

メソッドを呼び出すこともできます:IlluminateValidationValidator fails

検証が失敗した場合、この
use Illuminate\Support\Facades\Validator;

$validator = Validator::make(
    data: [
        'title' => 'Blog Post',
        'description' => 'Blog post description',
    ],
    rules: [
        'title' => ['required', 'string', 'max:100'],
        'description' => ['required', 'string', 'max:250'],
    ]
);
メソッドは

を上げます。 Laravelは、作成された要求のタイプに基づいてこの例外を自動的に処理します(アプリのデフォルトの例外処理を変更しなかったと仮定します)。リクエストがWebリクエストの場合、Laravelはセッションでエラーを使用して、ユーザーを前のページにリダイレクトして表示します。リクエストがAPIリクエストの場合、Laravelは次のように検証エラーのJSON表現(xiàn)を含むAvalidate応答を返します。

$validator = Validator::make(
    data: [
        'title' => 'Blog Post',
        'description' => 'Blog post description',
    ],
    rules: [
        'title' => ['required', 'string', 'max:100'],
        'description' => ['required', 'string', 'max:250'],
    ]
);

if ($validator->fails()) {
    // 一個或多個字段驗證失敗。
    // 在此處進行處理...
}
#フォームリクエストクラスを使用して、データを確認します

validateLaravelアプリケーションでデータを検証するもう1つの一般的な方法は、フォームリクエストクラスを使用することです。フォームリクエストクラスは、拡張機能IlluminateValidationValidationExceptionを備えたクラスです。これは、承認チェックと著信リクエストの検証を?qū)g行するために使用されます。 422 Unprocessable Entity Laravelは、コントローラーメソッドのコードを?qū)g行する前にリクエストで渡されたデータの検証を自動的に実行するため、コントローラーメソッドを整頓するための優(yōu)れた方法であると思います。したがって、Validatorインスタンスで自分自身でメソッドを?qū)g行することを忘れないでください。

Validator::make(
    data: [
        'title' => 'Blog Post',
        'description' => 'Blog post description',
    ],
    rules: [
        'title' => ['required', 'string', 'max:100'],
        'description' => ['required', 'string', 'max:250'],
    ]
)->validate();
簡単な例を見てみましょう。新しいユーザーを作成できるようにする

メソッドを備えた基本的な

コントローラーがあるとします。
<input type="number" min="1" max="10" required>

コントローラーメソッドでは、メソッドパラメーターとしてAppHttpRequestsUsersStoreUserRequestフォームリクエストクラス(後で導入します)を受け入れることがわかります。これは、Laravelに、このメソッドがHTTPリクエストを介して呼び出されたときに、このリクエストクラスで確認を自動的に実行することを示します。

次に、コントローラーメソッドのリクエストインスタンスのvalidatedメソッドを使用して、リクエストから確認されたデータを取得します。これは、検証済みのデータのみを返すことを意味します。たとえば、コントローラー內(nèi)の新しいprofile_pictureフィールドを保存しようとする場合は、フォームリクエストクラスにも追加する必要があります。それ以外の場合は、validatedメソッドはそれを返さないので、$request->validated('profile_picture')nullを返します。

AppHttpRequestsUsersStoreUserRequestフォームリクエストクラスを見てみましょう:

use Illuminate\Support\Facades\Validator;

$validator = Validator::make(
    data: [
        'title' => 'Blog Post',
        'description' => 'Blog post description',
    ],
    rules: [
        'title' => ['required', 'string', 'max:100'],
        'description' => ['required', 'string', 'max:250'],
    ]
);

リクエストクラスには2つの方法が含まれていることがわかります。

  • :この方法は、ユーザーがリクエストを行う権利を持っているかどうかを判斷するために使用されます。メソッドがauthorizeを返す場合、a false応答がユーザーに返されます。メソッドが403 Forbiddenを返す場合、検証ルールが実行されます。 true
  • :このメソッドは、リクエストに応じて実行する必要がある検証ルールを定義するために使用されます。この方法では、リクエストに応じて実行する必要があるルールの配列を返す必要があります。 rules
メソッドでは、フィールドを設(shè)定する必要があり、文字列でなければならないことを指定し、最大長は100文字でなければなりません。また、

フィールドを設(shè)定し、電子メールでなければならないことを指定し、rulesテーブル(name列)で一意でなければなりません。最後に、email usersご覧のとおり、これは検証ロジックをコントローラーロジックから分離する素晴らしい方法であり、コードの読みやメンテナンスが容易になることがわかりました。 email password一般的に使用される検証ルールは、laravel

で使用されます

私がすでに述べたように、Laravel検証システムは非常に強力であり、アプリに検証を簡単に追加できます。

このセクションでは、私が好きないくつかの便利な検証ルールをすばやく紹介します。これは、ほとんどのユーザーがアプリで役立つと思うと思います。

Laravelで利用可能なすべてのルールを表示することに興味がある場合は、Laravelのドキュメントでそれらを見つけることができます:
http://www.miracleart.cn/link/45d5c43856059a4f97d43d6534be52d0 #arrayを確認します

実行する必要がある一般的なタイプの検証は、検証配列です。これは、渡されたIDアレイがすべて有効かどうかの確認から、検証リクエストで渡されたオブジェクト配列に特定のフィールドがあるかどうかを確認することになります。

配列の検証方法の例を見てみましょう。次に、実行中のことについて説明します。

<input type="number" min="1" max="10" required>
上記の例では、それぞれのフィールドを持つオブジェクトの配列を渡しています。

name検証のために、最初にemailフィールドが設(shè)定され、配列であることを定義します。次に、アレイの各アイテム(

方向を使用)は、

およびusersフィールドを含む配列であることを指定します。 users.* name次に、emailフィールド(

方向を使用)を設(shè)定する必要があり、文字列でなければならず、100文字を超えることはできないことを指定します。また、

フィールド(name方向を使用)を設(shè)定し、電子メールでなければならないことを指定し、テーブルのusers.*.name列で一意でなければなりません。 email users.*.email検証ルールでusersワイルドカードを使用できるようにすることにより、アプリケーションのデータ配列を簡単に確認できます。 email

#検証日

*Laravelは、使用できる便利な日付検証ルールを提供します。まず、フィールドが有効な日付であることを確認するには、

ルールを使用できます。

日付が特定の形式であるかどうかを確認する場合は、

ルールを使用できます。 date

日付が別の日付よりも早いか遅いかを確認する必要があるかもしれません。たとえば、リクエストに
use Illuminate\Support\Facades\Validator;

$validator = Validator::make(
    data: [
        'title' => 'Blog Post',
        'description' => 'Blog post description',
    ],
    rules: [
        'title' => ['required', 'string', 'max:100'],
        'description' => ['required', 'string', 'max:250'],
    ]
);
および

フィールドが含まれていると仮定し、date_formatが今日より遅れているか

であることを確認する必要があります。
$validator = Validator::make(
    data: [
        'title' => 'Blog Post',
        'description' => 'Blog post description',
    ],
    rules: [
        'title' => ['required', 'string', 'max:100'],
        'description' => ['required', 'string', 'max:250'],
    ]
);

if ($validator->fails()) {
    // 一個或多個字段驗證失敗。
    // 在此處進行處理...
}
ルール:

を使用できます opens_at 上記の例では、closes_atフィールドのルールのパラメーターとしてcloses_atを渡したことがわかります。 Laravelは、この文字列をopens_at関數(shù)を使用して有効なopens_atオブジェクトに変換し、そのオブジェクトと比較しようとします。 after

Validator::make(
    data: [
        'title' => 'Blog Post',
        'description' => 'Blog post description',
    ],
    rules: [
        'title' => ['required', 'string', 'max:100'],
        'description' => ['required', 'string', 'max:250'],
    ]
)->validate();
フィールドの場合、パラメーターとして

ルールに合格します。 Laravelは、これが検証されている別のフィールドであることを自動的に検出し、2つのフィールドを互いに比較します。 today 同様に、laravelは、日付が別の日付よりも早いかどうかを確認するために使用できるopens_atおよびafterルールも提供します。 strtotime DateTime#パスワードを確認

Web開発者として、私たちの仕事は、ユーザーがオンラインで安全に役立つことです。これを行う方法の1つは、パスワードを特定の長さであること、特定の文字を含めるなど、アプリケーションで適切なパスワードプラクティスを宣伝することです。 closes_at opens_atLaravelは、パスワードを確認するために使用できるクラスを提供することにより、作業(yè)を簡素化します。 after_or_equal

互いにリンクして、必要なパスワード検証ルールを作成できる方法が付屬しています。たとえば、ユーザーのパスワードに次の基準を満たしてほしいと仮定します。
  • 少なくとも8文字の長さ
  • には、少なくとも1つの文字
  • が含まれています
  • 少なくとも1つの大文字と1つの小文字
  • が含まれています
  • には少なくとも1つの數(shù)値が含まれています
  • には、少なくとも1つのシンボル
  • が含まれています
  • リークされたパスワードではありません(つまり、他のシステムデータ侵害でリークされたパスワードレコードを含むpwnedデータベースにはありません)

私たちの検証は次のようになるかもしれません:

<input type="number" min="1" max="10" required>

例に示すように、リンク可能な方法を使用して、必要なパスワード検証ルールを作成しています。しかし、これらのルールを複數(shù)の異なる場所(例:登録、リセット、アカウントページのパスワードを更新するなど)で使用し、少なくとも12文字を?qū)g施するためにこの検証を変更するとどうなりますか?これらのルールが使用されているすべてのものを反復し、それらを更新する必要があります。

これを簡素化するために、Laravelを使用すると、アプリケーション全體で使用できるパスワード検証ルールのデフォルトセットを定義できます。このような

メソッドを使用して、一連のデフォルトルールを定義できます。 AppProvidersAppServiceProvider これを行うと、検証ルールでbootを呼び出して、Password::defaults()で指定したルールを使用できます。

use Illuminate\Support\Facades\Validator;

$validator = Validator::make(
    data: [
        'title' => 'Blog Post',
        'description' => 'Blog post description',
    ],
    rules: [
        'title' => ['required', 'string', 'max:100'],
        'description' => ['required', 'string', 'max:250'],
    ]
);
#色を確認します

Password::defaults()私が取り組んだほぼすべてのプロジェクトには、何らかの形のカラーピッカーが含まれています。プロフィールの色を選択するユーザー、ページの一部の背景色、またはその他のコンテンツであろうと、それは一般的なコンテンツです。 AppServiceProvider

過去には、色が16進形式の有効な色であることを確認するために、正規(guī)表現(xiàn)を使用しなければなりませんでした(私はそれについてあまり知らないことを認めます)。ただし、Laravelには、使用する便利な
$validator = Validator::make(
    data: [
        'title' => 'Blog Post',
        'description' => 'Blog post description',
    ],
    rules: [
        'title' => ['required', 'string', 'max:100'],
        'description' => ['required', 'string', 'max:250'],
    ]
);

if ($validator->fails()) {
    // 一個或多個字段驗證失敗。
    // 在此處進行處理...
}
があります。

#検証ファイル

サーバーを介してファイルをアプリにアップロードする場合、保存しようとする前にファイルが有効であることを確認する必要があります。ご想像のとおり、Laravelは使用できるファイル検証ルールを提供します。

#FF00FFユーザーがPDF(.pdf)またはMicrosoft Word(.docx)ファイルをアップロードできるようにしたいとします。検証は次のようになる場合があります:hex_color

Validator::make(
    data: [
        'title' => 'Blog Post',
        'description' => 'Blog post description',
    ],
    rules: [
        'title' => ['required', 'string', 'max:100'],
        'description' => ['required', 'string', 'max:250'],
    ]
)->validate();
コードの例では、ファイルタイプを確認していることがわかり、最小および最大ファイルサイズの制限も設(shè)定しています。

メソッドを使用して、許可するファイルタイプを指定します。

およびメソッドは、ファイルサイズユニットを示す他の接尾辭を含む文字列を受け入れることもできます。たとえば、:を使用することもできます
{
  "message": "The title field is required. (and 1 more error)",
  "errors": {
    "title": [
      "The title field is required."
    ],
    "description": [
      "The description field is required."
    ]
  }
}

types

minmax

  • 10kb
  • 10mb さらに、
  • クラスの
  • メソッドを使用して、ファイルが畫像であることを確認することもできます。
    <input type="number" min="1" max="10" required>
    上記の例では、ファイルが畫像であることを確認し、最小および最大ファイルサイズの制限を設(shè)定し、最大サイズ(500 x 500ピクセル)を設(shè)定しています。

    アプリをファイルするために別のアプローチをとることをお勧めします。たとえば、ユーザーのブラウザからクラウドストレージ(S3など)に直接アップロードすることをお勧めします。これを希望する場合は、Filepondを使用してLaravelの記事で私のアップロードファイルをチェックしてください。

    #データベースにフィールドが存在することを確認します

    あなたがしたいと思うかもしれない別の一般的なチェックは、データベースに値が存在することを確認することです。

    たとえば、

    アプリにユーザーがいると、ルートを作成してチームに割り當てることができるとします。したがって、リクエストでは、リクエストに渡された

    user_idsテーブルに存在することを確認する必要がある場合があります。 users これを行うには、

    ルールを使用して、値が存在するかどうかを確認するテーブル名を渡すことができます。

    上記の例では、existsアレイで渡された各IDが

    テーブルの
    use Illuminate\Support\Facades\Validator;
    
    $validator = Validator::make(
        data: [
            'title' => 'Blog Post',
            'description' => 'Blog post description',
        ],
        rules: [
            'title' => ['required', 'string', 'max:100'],
            'description' => ['required', 'string', 'max:250'],
        ]
    );
    列に存在するかどうかを確認しています。

    user_idsこれは、使用しているデータが有効であり、使用しようとする前にデータベースに存在することを確認するための優(yōu)れた方法です。 users idさらに一歩進めたい場合は、

    句を

    ルールに適用して、実行中のクエリをさらにフィルタリングできます。

    上記の例では、

    配列で渡された各IDがwhereテーブルのexists列に存在するかどうかを確認しており、ユーザーの

    列が
    $validator = Validator::make(
        data: [
            'title' => 'Blog Post',
            'description' => 'Blog post description',
        ],
        rules: [
            'title' => ['required', 'string', 'max:100'],
            'description' => ['required', 'string', 'max:250'],
        ]
    );
    
    if ($validator->fails()) {
        // 一個或多個字段驗證失敗。
        // 在此處進行處理...
    }
    に設(shè)定されているかどうかを確認しています。したがって、未検証のユーザーIDに合格すると、検証が失敗します。

    user_ids#データベースのフィールドの一意性を確認しますusers ルールと同様に、Laravelは、データベース內(nèi)の値が一意であるかどうかを確認するために使用できるルールも提供します。 id たとえば、is_verifiedテーブルがあるとし、trueフィールドが一意であることを確認したいとします。

    ルール:

    を使用できます

    上記の例では、

    フィールドが設(shè)定されており、電子メールであり、existsテーブルのunique列で一意かどうかを確認しています。

    しかし、ユーザーがメールアドレスを更新できるプロフィールページでこの検証を使用しようとするとどうなりますか?ユーザーが更新しようとした電子メールアドレスを含むusersテーブルに行があるため、検証は失敗します。この場合、一意性をチェックするときにユーザーIDを無視するためにemailメソッドを使用できます。 unique

    Validator::make(
        data: [
            'title' => 'Blog Post',
            'description' => 'Blog post description',
        ],
        rules: [
            'title' => ['required', 'string', 'max:100'],
            'description' => ['required', 'string', 'max:250'],
        ]
    )->validate();
    メソッドを使用することを選択した場合は、Laravelのドキュメントでこの警告を必ず読んでください。

    "ユーザー制御の要求入力をignoreメソッドに渡さないでください。代わりに、雄弁なモデルのインスタンスから自己侵入IDやUUIDなど、システムによって生成された一意のIDのみを渡す必要があります。 また、は、ルールに追加の

    條項を追加したい場合があります。これを行うには、電子メールアドレスが特定のチームに固有のものであることを確認する必要がある場合があります(これは、別のチームの別のユーザーが同じメールを使用できることを意味します)。閉鎖を

    メソッドに渡すことでこれを行うことができます:unique where where獨自の検証ルールを作成します

    <input type="number" min="1" max="10" required>

    Laravelには多くの組み込みの検証ルールが付屬していますが、特定のユースケースに合わせてカスタム検証ルールを作成する必要がある場合があります。


    良さに感謝します、これはLaravelでも簡単です!

    カスタム検証ルールを構(gòu)築する方法、使用方法、テストを作成する方法を見てみましょう。

    この記事の目的のために、私たちは何を検証しているかについてあまり心配していません。カスタム検証ルールを作成する一般的な構(gòu)造とそれらをテストする方法を理解したいだけです。したがって、文字列がパリンドロームかどうかを確認するための簡単なルールを作成します。

    わからない場合、パリンドロームは、順方向と逆方向に同じことを読む単語、フレーズ、數(shù)字、または他の文字のシーケンスです。たとえば、「レースカー」はパリンドロームです。なぜなら、弦を反転させると、まだ「レースカー」だからです。そして、「Laravel」はパリンドロームではありません。なぜなら、弦を反転させると「レバラル」になるからです。

    開始するには、プロジェクトルートで次のコマンドを?qū)g行することにより、まず新しい検証ルールを作成します。

    これは、私たちのために新しい

    ファイルを作成する必要があります:

    use Illuminate\Support\Facades\Validator;
    
    $validator = Validator::make(
        data: [
            'title' => 'Blog Post',
            'description' => 'Blog post description',
        ],
        rules: [
            'title' => ['required', 'string', 'max:100'],
            'description' => ['required', 'string', 'max:250'],
        ]
    );
    Laravelは、ルールを?qū)g行するときに自動的に

    メソッドを呼び出します。このメソッドは、3つのパラメーターを受け入れます App/Rules/Palindrome.php

    $validator = Validator::make(
        data: [
            'title' => 'Blog Post',
            'description' => 'Blog post description',
        ],
        rules: [
            'title' => ['required', 'string', 'max:100'],
            'description' => ['required', 'string', 'max:250'],
        ]
    );
    
    if ($validator->fails()) {
        // 一個或多個字段驗證失敗。
        // 在此處進行處理...
    }
    :検証されているプロパティの名前。

    validate

    :検証されているプロパティの値。
    • $attribute:検証が失敗した場合に呼び出すことができる閉鎖。
    • したがって、$valueは、次のように検証ロジックを
    • メソッドに追加できます。
    • 上記のルールでは、ルールに渡された値が逆転する値と同じかどうかを確認するだけです。そうでない場合は、エラーメッセージを使用して$fail閉鎖を呼び出します。これにより、フィールドが検証に失敗します。検証が通過した場合、ルールは何も実行せず、アプリケーションを使用し続けることができます。
    ルールを作成したので、このようなアプリで使用できます。

    validateこれは、デモンストレーションのために作成した単純なルールですが、アプリケーションのためにより複雑なルールを構(gòu)築する方法のアイデアが得られることを願っています。

    獨自の検証ルールをテストします


    アプリの他のコードと同様に、検証ルールをテストして、予想どおりに機能することを確認することが重要です。それ以外の場合は、期待どおりに機能しないルールを使用するリスクがあります。

    これを行う方法を理解するには、前のセクションで作成したパリンドロームルールをテストする方法を見てみましょう。

    この特定のルールでは、2つの狀況をテストしたいと思います。

      値がパリンドロームの場合、ルールは通過します。
    • 値がパリンドロームではない場合、ルールは失敗します。
    より複雑なルールではより多くの狀況があるかもしれませんが、この記事の目的のために、私たちはそれを簡単に保ちます。

    ディレクトリにtests/Unit/Rulesという名前の新しいテストファイルを作成します。 PalindromeTest.php

    テストファイルを見てみましょう。次に、実行中のことについて説明します。

    上記のテストファイルでは、2つのテストを定義します。

    <input type="number" min="1" max="10" required>
    テスト名が示すように、最初のテストは、値がパリンドロームのときにルールが通過することを保証し、2番目のテストは、値がパリンドロームではないときにルールが故障することを保証します。

    rule_passes_with_a_valid_valuerule_fails_with_an_invalid_value屬性を使用して、テストのテストに有効な値と無効な値のリストを提供します。これは、テストをきれいに保ち、同じテストで複數(shù)の値をチェックできるようにするための素晴らしい方法です。たとえば、誰かが

    メソッドに新しい有効な値を追加した場合、テストはその値に対して自動的に実行されます。

    テストでは、有効な値を使用して、ルール上のPHPUnitFrameworkAttributesDataProviderメソッドを呼び出します。クロージャーをパラメーターに渡します(このパラメーターは、ルールの內(nèi)部検証が失敗した場合に呼び出されます)。閉鎖が実行された場合(つまり、検証が失敗した)、テストが失敗するはずであることを指定しました。閉鎖を?qū)g行せずにテストの終了に到達した場合、ルールが合格し、テストに合格する簡単なアサーションvalidValuesを追加できることがわかります。

    rule_passes_with_a_valid_valueテストでは、最初のテストと同じですが、今回は無効な値をルールに渡します。閉鎖が実行された場合(つまり、検証が失敗した)、閉鎖が呼び出されると予想されるため、テストが渡されることを指定しました。閉鎖を?qū)g行せずにテストの終了に到達した場合、アサーションは実行されず、Phpunitは私たちの警告をトリガーするはずです。ただし、テストがエラーを與えるよりも明示的に失敗することを確認する場合は、テストを作成するために少し異なるアプローチを取る必要がある場合があります。 validate fail結(jié)論assertTrue(true)

    この記事では、検証とは何か、なぜそれが重要であるかを調(diào)べます。クライアント側(cè)の検証をサーバー側(cè)の検証と比較し、アプリケーションの検証の唯一の形式としてクライアント側(cè)の検証を使用しない理由を調(diào)査しました。

    また、Laravelアプリで使用したい便利な検証ルールも取り上げました。最後に、獨自の検証ルールを作成する方法を検討し、それらをテストして、それらが期待どおりに機能することを確認します。

    これで、アプリケーションのセキュリティと信頼性を向上させるために、より多くの検証を使用し始めるのに十分な自信を持つ必要があることを願っています。

以上がLaravel検証の究極のガイドの詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當する法的責任を負いません。盜作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中國語版

SublimeText3 中國語版

中國語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP変數(shù)スコープは説明されています PHP変數(shù)スコープは説明されています Jul 17, 2025 am 04:16 AM

PHP変數(shù)スコープの一般的な問題とソリューションには次のものが含まれます。1。グローバル変數(shù)は関數(shù)內(nèi)でアクセスできず、グローバルキーワードまたはパラメーターを使用して渡す必要があります。 2。靜的変數(shù)は靜的で宣言され、1回のみ初期化され、値は複數(shù)の呼び出し間で維持されます。 3. $ _GETや$ _POSTなどのハイパーグローバル変數(shù)は、任意の範囲で直接使用できますが、安全なフィルタリングに注意を払う必要があります。 4.匿名関數(shù)は、使用キーワードを使用して親スコープ変數(shù)を?qū)毪工氡匾ⅳ?、外部変?shù)を変更する場合は、參照を渡す必要があります。これらのルールを習得すると、エラーを回避し、コードの安定性が向上するのに役立ちます。

ファイルアップロードをPHPで安全に処理する方法は? ファイルアップロードをPHPで安全に処理する方法は? Jul 08, 2025 am 02:37 AM

PHPファイルのアップロードを安全に処理するには、ソースとタイプを確認し、ファイル名とパスを制御し、サーバー制限を設(shè)定し、メディアファイルを2回プロセスする必要があります。 1.トークンを介してCSRFを防ぐためにアップロードソースを確認し、ホワイトリストコントロールを使用してFINFO_FILEを介して実際のMIMEタイプを検出します。 2。ファイルをランダムな文字列に変更し、検出タイプに従って非WEBディレクトリに保存する拡張機能を決定します。 3。PHP構(gòu)成は、アップロードサイズを制限し、一時的なディレクトリnginx/apacheはアップロードディレクトリへのアクセスを禁止します。 4. GDライブラリは寫真を再利用して、潛在的な悪意のあるデータをクリアします。

PHPでコードをコメントします PHPでコードをコメントします Jul 18, 2025 am 04:57 AM

PHPコメントコードには3つの一般的な方法があります。1。//#を使用して1行のコードをブロックすると、//を使用することをお勧めします。 2。使用/.../複數(shù)の行でコードブロックをラップするには、ネストすることはできませんが交差することができます。 3. / if(){}を使用するなどの組み合わせスキルコメントロジックブロックを制御するか、エディターショートカットキーで効率を改善するには、シンボルを閉じることに注意を払い、使用時にネストを避ける必要があります。

発電機はPHPでどのように機能しますか? 発電機はPHPでどのように機能しますか? Jul 11, 2025 am 03:12 AM

ageneratorinphpisamemory-efficientwaytoateate-overdeatatasetasetasetasetsinging valueseintimeintimeturningthemallatonce.1.generatorsususedeywordproducevaluesedemand、memoryusage.2を還元すること。2

PHPコメントを書くためのヒント PHPコメントを書くためのヒント Jul 18, 2025 am 04:51 AM

PHPコメントを書くための鍵は、目的と仕様を明確にすることです。コメントは、「何が行われたのか」ではなく「なぜ」を説明する必要があり、冗長性や単純さを避けてください。 1.読みやすさとツールの互換性を向上させるために、クラスおよびメソッドの説明にdocblock(/*/)などの統(tǒng)合形式を使用します。 2。JSジャンプを手動で出力する必要がある理由など、ロジックの背後にある理由を強調(diào)します。 3.複雑なコードの前に概要説明を追加し、手順でプロセスを説明し、全體的なアイデアを理解するのに役立ちます。 4. TodoとFixmeを合理的に使用して、To Doアイテムと問題をマークして、その後の追跡とコラボレーションを促進します。優(yōu)れた注釈は、通信コストを削減し、コードメンテナンスの効率を向上させることができます。

PHPの學習:初心者向けガイド PHPの學習:初心者向けガイド Jul 18, 2025 am 04:54 AM

tolearnphpefctivially、startbysettingupalocalserverenvironmentusingtoolslikexamppandacodeeditorlikevscode.1)instalxamppforapa Che、mysql、andphp.2)useocodeeditorforsyntaxsupport.3)testyoursetup withasimplephpfile.next、Learnpbasicsincludingvariables、ech

PHPのインデックスごとに文字列內(nèi)の文字にアクセスする方法 PHPのインデックスごとに文字列內(nèi)の文字にアクセスする方法 Jul 12, 2025 am 03:15 AM

PHPでは、四角い括弧または巻き毛裝具を使用して文字列固有のインデックス文字を取得できますが、正方形のブラケットをお勧めします。インデックスは0から始まり、範囲外のアクセスはnull値を返し、値を割り當てることができません。 MB_SUBSTRは、マルチバイト文字を処理するために必要です。例:$ str = "hello"; echo $ str [0];出力h; MB_Substr($ str、1,1)などの漢字は、正しい結(jié)果を得る必要があります。実際のアプリケーションでは、ループする前に文字列の長さをチェックする必要があり、ダイナミック文字列を有効性のために検証する必要があり、多言語プロジェクトはマルチバイトセキュリティ関數(shù)を均一に使用することをお勧めします。

クイックPHPインストールチュートリアル クイックPHPインストールチュートリアル Jul 18, 2025 am 04:52 AM

to installphpquickly、usexampponwindowsorhomebrewonmacos.1.onwindows、downloadandinstallxampp、selectcomponents、startapache、andplacefilesinhtdocs.2

See all articles