検索
ホームページバックエンド開発PHPチュートリアルLaravelでSMS認証コード送信機能を開発するための「仕様書」(写真)

Laravel は、シンプルでエレガントな PHP Web 開発フレームワーク (PHP Web フレームワーク) です。次に、この記事を通じて、Laravel の「標準」開発 SMS 認証コード 送信機能を共有します。必要な友達はそれを参照してください

Laravel の概要

Laravel は、次のセットです。シンプルでエレガントな PHP Web 開発フレームワーク (PHP Web フレームワーク)。ヌードルのような乱雑なコードから解放され、完璧なネットワーク APP を構築するのに役立ち、コードの各行が簡潔で表現力豊かになります。

Laravel には、高度な PHP ActiveRecord 実装である Eloquent ORM がすでにあります。関係の両側に「制約」を簡単に適用できるため、データを完全に制御し、ActiveRecord の利便性をすべて享受できます。 Eloquent は、Fluent のクエリ ビルダー (クエリ ビルダー) のすべてのメソッドをネイティブにサポートします。

Laravelの「標準」開発SMS認証コード送信機能需要シナリオ

携帯電話やメールに送信できる「認証コード」または「メッセージ通知」を送信します。

完成

まず、Laravelでの仕様としてはLaravelの「メッセージ通知」を使用することになっており、ここではシナリオに基づいて「認証コード」を使用します。この要件は、ほぼすべてのソフトウェア システムで使用されます。

通知シーンを作成します

最初のステップは、phpArtisan make:notification を使用して通知クラスを作成することです。デフォルトで、toMail と toArray を介した 3 つのメソッドが存在します。検証コードが送信されたら、送信します。 このコントロール クラスの名前は VerificationCode です。

次に、検証コードのデータ モデルとデータ テーブルの移行を作成します。phpArtisan make:model "VerificationCode" -m を使用して、データ モデルと移行を直接簡単に作成できます。

ThinkSNS+ の移行は次のとおりです:

2 番目のステップは、データ Model クラス を開き、その中に IlluminateNotificationsNotifiable トレイトを追加することです:

コードから、次の追加も行っていることがわかります。 「ソフト削除」では、携帯電話番号またはメールアドレスに基づいて認証コードが送信されるため、他の組み込みトリックは必要なく、「メッセージ通知データテーブル」に記録する必要もありません。 RouteNotificationFor メソッドでは、送信する必要があるアカウント (携帯電話番号または電子メール アドレス) を直接返すことを選択します。

ファクトリーモードに参加し、

database/factories/ModelFactory.phpを開き、通知データモデルに関するファクトリー定義を追加します:

このようにして、factory(ZhiyiPlusModelsVerificationCode)を渡すことができます。 ::class) ファクトリ関数を使用して、検証コードを迅速に作成し、通知を送信します。

通知特性が検証コード データ モデルに追加されるのはなぜですか?

まず、LaravelではデフォルトでUserモデルにIlluminateNotificationsNotifiableトレイトが追加されているので、$user->notify()ですぐにユーザーに通知を送信できるのですが、仕様書にはこんな一文があります:

覚えておいてください、IlluminateNotificationsNotifiable トレイトはどのモデルでも使用できますが、User モデルにのみ含めることに限定されるわけではありません。これは Laravel の公式ドキュメントの原文であり、IlluminateNotificationsNotifiable が使用されるだけではないことを意味します。ユーザーモデルについて。

したがって、検証コードモデルへの IlluminateNotificationsNotifiable の追加は、Laravel 通知の正しい使用と完全に一致しています。

通知クラスを開発します まず、データ テーブルの移行には、通知チャネル識別子であるフィールド チャネルがあり、この値を使用して検証コードの送信方法とこの操作を決定できます。通知クラスの経由で実装されています:

この通知チャネルを実装している限り、この値は任意の値にすることができます。組み込みのチャネル データベース、メール、nexmo がいくつかあります

メール確認コードの送信を完了します実際、通知クラスを作成するときに、このステップで行う必要があることはほとんどありません。 toMail メソッドが完成したので、メッセージの内容を直接変更できるようになります。

SMS認証コードの送信を完了します

SMSの送信にはovertrue/easy-smsパッケージを使用します。これはAn Zhengchaoによって開発されたSMS送信クライアントであり、実装も同様です。素晴らしい。 (Tucao: コントラクトの呼び出し方法に従ってゲートウェイを通過しないなど、いくつかの詳細に問題がありますが)

まず SMS を利用してクライアントパッケージコンポーザーに送信するのは、overtrue/easy-sms が必要で、それから新しいconfiguration/config/smsを作成します。 .php の内容については、SMS ホームページに説明を追加するだけです (記事の文字数を減らすために、Alibaba の設定のみを保持します)。

さまざまなシナリオ用にチャネル構成を追加しました。たとえば、検証コード シーン コードは、メッセンジャー

が構成

を読みやすくするために使用されます。

次に、AppServiceProvider.php を開き、以下をレジスタに追加します:

この時点で、Laravel への EasySms の統合は完了していますが、実際の機能はまだ開発されていません。

SMS送信チャネルを開発する

なぜ開発するのか?まず、easy-sms は多くの機能をサポートしています。送信プラットフォームごとに通知送信チャネル クラスを開発することを検討することも、SMS 送信チャネル クラスを 1 つだけ開発することもできます。 SMS 戦略。検証コードを複数のプラットフォームに送信するメカニズム。 まず、新しい app/Notifications/Channels/SmsChannel.php ファイルを作成します。Laravel には生成機能がないため、これを自分で作成する必要があります。 SmsChannel の内容は次のとおりです。

easy-sms に基づいた SMS 通知送信チャネルが完成しました。

開発シナリオ

メッセージを送信

この部分は完全に easy-sms 開発に属し、次の内容の新しい VerificationCodeMessage.php を作成します:

その後、VerificationCode 検証コード通知に戻ります。クラスに toSms メソッドを追加します。私のコードは次のとおりです。

シナリオ構成 (検証コードのさまざまなチャネルのテンプレートなど)。これにより、メッセージ送信者は送信に基づいて使用シナリオの構成を決定できます。ゲートウェイ。

もう一度文句を言いますが、easy-sms のコントラクト設計にもこの考えがあるはずですが、実際のゲートウェイが呼び出されたときに、getContent/getTemplate/getData はゲートウェイをまったく通過しません。 。 。

さて、開発は完了しました。

検証コードを送信します

検証コードのデータモデルを作成するときに「ファクトリー」に追加されたため、ファクトリー関数を直接使用できます。デモを送信します:

これで完了です。 , easy-sms とても良いバッグです。

以上がLaravelでSMS認証コード送信機能を開発するための「仕様書」(写真)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?PHPセッションを失敗させる可能性のあるいくつかの一般的な問題は何ですか?Apr 25, 2025 am 12:16 AM

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッション関連の問題をどのようにデバッグしますか?PHPでセッション関連の問題をどのようにデバッグしますか?Apr 25, 2025 am 12:12 AM

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()が複数回呼び出されるとどうなりますか?session_start()が複数回呼び出されるとどうなりますか?Apr 25, 2025 am 12:06 AM

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでセッションのライフタイムをどのように構成しますか?PHPでセッションのライフタイムをどのように構成しますか?Apr 25, 2025 am 12:05 AM

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

セッションを保存するためにデータベースを使用することの利点は何ですか?セッションを保存するためにデータベースを使用することの利点は何ですか?Apr 24, 2025 am 12:16 AM

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでカスタムセッション処理をどのように実装しますか?PHPでカスタムセッション処理をどのように実装しますか?Apr 24, 2025 am 12:16 AM

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

セッションIDとは何ですか?セッションIDとは何ですか?Apr 24, 2025 am 12:13 AM

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

ステートレス環境(APIなど)でセッションをどのように処理しますか?ステートレス環境(APIなど)でセッションをどのように処理しますか?Apr 24, 2025 am 12:12 AM

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター