


Verwenden Sie Laravel SMS, um die Funktion zum Senden eines SMS-Bestätigungscodes zur Überprüfung zu erstellen
Dieser Artikel stellt Ihnen die Verwendung von Laravel-SMS zum Erstellen eines Verifizierungsmoduls für SMS-Verifizierung vor. Es ist sehr gut und hat Referenzwert.
Laravel implementiert die SMS-Bestätigungscode-Funktion. Bei der Suche nach Informationen habe ich zwei beliebte Pakete gefunden:
Eines ist die Laravel-SMS-Adresse https://github.com/toplan/laravel-sms
Eine davon ist die einfache SMS-Adresse https://github.com/overtrue/easy-sms.
Das Projekt muss eine Funktion zum Senden und Überprüfen von SMS-Bestätigungscodes implementieren. Die vorherige Methode war etwas umständlich. Nach Ratschlägen von Experten habe ich herausgefunden, dass stattdessen das Paket laravel-sms verwendet werden kann. Es ist einfach zu konfigurieren und zu verwenden. Daher dieses Beispiel.
In diesem Beispiel werden Laravel 5.5, Api Starter Kit und Laravel Sms 2.6 verwendet.
Der in diesem Beispiel verwendete SMS-Dienstanbieter ist Yunpian.
Installieren
Im Projektstammverzeichnis ausführen (empfohlen):
composer require toplan/laravel-sms:~2.6 composer require toplan/laravel-sms:~2.6
Sie können auch Folgendes hinzufügen:
"toplan/laravel-sms": "2.6" "toplan/laravel-sms": "2.6"
im Anforderungsfeld von Composer.json und es dann im Projektstammverzeichnis ausführen:
composer update composer update
Fügen Sie:
Toplan\PhpSms\PhpSmsServiceProvider::class, Toplan\Sms\SmsManagerServiceProvider::class, Toplan\PhpSms\PhpSmsServiceProvider::class, Toplan\Sms\SmsManagerServiceProvider::class,
zum Provider-Array von config/app.php hinzu und fügen Sie hinzu: zu das Aliase-Array:
'PhpSms' => Toplan\PhpSms\Facades\Sms::class, 'SmsManager' => Toplan\Sms\Facades\SmsManager::class, 'PhpSms' => Toplan\PhpSms\Facades\Sms::class, 'SmsManager' => Toplan\Sms\Facades\SmsManager::class,
Im Projektstammverzeichnis ausführen:
php artisan vendor:publish --provider="Toplan\PhpSms\PhpSmsServiceProvider" php artisan vendor:publish --provider="Toplan\Sms\SmsManagerServiceProvider" php artisan vendor:publish --provider="Toplan\PhpSms\PhpSmsServiceProvider" php artisan vendor:publish --provider="Toplan\Sms\SmsManagerServiceProvider"
wird Im Konfigurationsordner werden zwei Konfigurationsdateien generiert: phpsms.php und laravel-sms.php.
Proxy-Informationen und ein ausgewogener Planungsplan können in phpsms.php konfiguriert werden.
Das Sende- und Verifizierungsschema für den Bestätigungscode kann in laravel-sms.php konfiguriert werden.
Gleichzeitig wird die Datei 2015_12_21_111514_create_sms_table.php nach Databasemigrations kopiert. Wird zum Generieren der laravel_sms-Tabelle verwendet.
Konfiguration
Hier nehmen wir nur Wolkenschnitte als Beispiel.
phpsms.php konfigurieren
Legen Sie die Proxy-Informationen des Cloud-Slice im Agnets-Array in phpsms.php fest.
'YunPian' => [ //用户唯一标识,必须 'apikey' => '在这里填写你的 APIKEY', ], 'YunPian' => [ //用户唯一标识,必须 'apikey' => '在这里填写你的 APIKEY', ],
Legen Sie das Schema-Array fest und konfigurieren Sie das ausgewogene Planungsschema.
'scheme' => [ 'YunPian', ], 'scheme' => [ 'YunPian', ],
Laravel-sms.php konfigurieren
Eingebautes Routing festlegen.
'route' => [ 'enable' => true, 'prefix' => 'laravel-sms', 'middleware' => ['api'], ], 'route' => [ 'enable' => true, 'prefix' => 'laravel-sms', 'middleware' => ['api'], ],
Stellen Sie das Anforderungsintervall in Sekunden ein.
'interval' => 60, 'interval' => 60,
Regeln zur Nummernüberprüfung festlegen.
'validation' => [ 'phone_number' => [ //需验证的字段 'isMobile' => true, //本字段是否为手机号 'enable' => true, //是否需要验证 'default' => 'mobile_required', //默认的静态规则 'staticRules' => [ //全部静态规则 'mobile_required' => 'required|zh_mobile', ], ], ], 'validation' => [ 'phone_number' => [ //需验证的字段 'isMobile' => true, //本字段是否为手机号 'enable' => true, //是否需要验证 'default' => 'mobile_required', //默认的静态规则 'staticRules' => [ //全部静态规则 'mobile_required' => 'required|zh_mobile', ], ], ],
Bestätigungscode-Regeln festlegen.
'code' => [ 'length' => 4, //验证码长度 'validMinutes' => 10, //验证码有效时间长度,单位为分钟 'repeatIfValid' => true, //验证码有效期内是否重复使用 'maxAttempts' => 0, //验证码最大尝试验证次数,0 或负数则不启用 ], 'code' => [ 'length' => 4, //验证码长度 'validMinutes' => 10, //验证码有效时间长度,单位为分钟 'repeatIfValid' => true, //验证码有效期内是否重复使用 'maxAttempts' => 0, //验证码最大尝试验证次数,0 或负数则不启用 ],
Bestätigungscode-Inhalts-SMS festlegen.
'content' => function ($code, $minutes, $input) { return "您的验证码是:{$code} ({$minutes}分钟内有效,如非本人操作,请忽略)"; }, 'content' => function ($code, $minutes, $input) { return "您的验证码是:{$code} ({$minutes}分钟内有效,如非本人操作,请忽略)"; },
Bei Bedarf können Sie die Datenbankprotokollierung aktivieren. Sie müssen vorab PHP artisan migrate ausführen, um die Tabelle laravel_sms zu generieren.
'dbLogs' => 'ture', 'dbLogs' => 'ture',
API-Implementierung
Erstellen Sie eine neue SmsCodeUtil.php unter app/Utils, und Implementieren Sie die darin enthaltenen Funktionen zum Senden und Verifizieren des Bestätigungscodes. Auf diese Weise können jederzeit andere Klassen aufgerufen werden, was die Wiederverwendbarkeit des Codes verbessert.
Sendemodul
Die Mobiltelefonnummer muss vor dem Senden überprüft werden, einschließlich:
validateSendable() :验证是否满足发送间隔 validateFields() :验证数据合法性
Nach bestandener Verifizierung verwenden Sie requestVerifySms(), um den Verifizierungscode zu senden.
Der spezifische Code lautet wie folgt:
use SmsManager; trait SmsCodeUtil { public function sendSmsCode() { $result = SmsManager::validateSendable(); if(!$result['success']) { return respondUnprocessable($result['message']); } $result = SmsManager::validateFields(); if(!$result['success']) { return respondUnprocessable($result['message']); } $result = SmsManager::requestVerifySms(); if(!$result['success']) { return respondUnprocessable($result['message']); } return respondSuccess($result['message']); } } use SmsManager; trait SmsCodeUtil { public function sendSmsCode() { $result = SmsManager::validateSendable(); if(!$result['success']) { return respondUnprocessable($result['message']); } $result = SmsManager::validateFields(); if(!$result['success']) { return respondUnprocessable($result['message']); } $result = SmsManager::requestVerifySms(); if(!$result['success']) { return respondUnprocessable($result['message']); } return respondSuccess($result['message']); } }
Verifizierungsmodul
Beim Anmelden müssen Sie möglicherweise Ihre Mobiltelefonnummer und Ihren Bestätigungscode bestätigen. Daher muss die Verifizierungsfunktion für den Verifizierungscode zu SmsCodeUtil.php hinzugefügt werden. Der Code wurde hier auf dem offiziellen Github bereitgestellt und kann leicht geändert werden.
public function validateSmsCode() { //验证数据 $validator = Validator::make(inputAll(), [ 'phone_number' => 'required|confirm_mobile_not_change|confirm_rule:mobile_required', 'sms_code' => 'required|verify_code', ]); if ($validator->fails()) { //验证失败后建议清空存储的发送状态,防止用户重复试错 SmsManager::forgetState(); respondUnprocessable(formatValidationErrors($validator)); } } public function validateSmsCode() { //验证数据 $validator = Validator::make(inputAll(), [ 'phone_number' => 'required|confirm_mobile_not_change|confirm_rule:mobile_required', 'sms_code' => 'required|verify_code', ]); if ($validator->fails()) { //验证失败后建议清空存储的发送状态,防止用户重复试错 SmsManager::forgetState(); respondUnprocessable(formatValidationErrors($validator)); } }
Funktionstest
Als nächstes konfigurieren Sie das Routing und den Controller, Test ob die Funktion normal ist.
Sie können host-domain/laravel-sms/info
gleichzeitig öffnen, um den SMS-Versand des Bestätigungscodes und den Bestätigungsstatus anzuzeigen.
Wenn die Datenbankprotokollierung aktiviert ist, können Sie detaillierte Informationen zu den SMS-Versandergebnissen in der Tabelle laravel_sms anzeigen.
Zuerst api.php hinzufügen:
$api->post('/auth/send-sms-code', 'Auth\LoginController@sendSmsCode'); $api->post('/auth/validate-sms-code', 'Auth\LoginController@validateSmsCode'); $api->post('/auth/send-sms-code', 'Auth\LoginController@sendSmsCode'); $api->post('/auth/validate-sms-code', 'Auth\LoginController@validateSmsCode');
Dann LoginController.php hinzufügen:
use App\Utils\SmsCodeUtil; class LoginController extends Controller { use SmsCodeUtil; ... } use App\Utils\SmsCodeUtil; class LoginController extends Controller { use SmsCodeUtil; ... }
Verwenden Sie dann Postman oder andere ähnliche Tools, um die API-Funktionalität zu testen.
Bestätigungscode senden
POST 服务器地址/api/auth/send-sms-code { "phone_number": "手机号" } POST 服务器地址/api/auth/send-sms-code { "phone_number": "手机号" }
Wenn er erfolgreich verifiziert und gesendet wurde , Es wird zurückgegeben:
{ "message": "短信验证码发送成功,请注意查收", "status_code": 200 } { "message": "短信验证码发送成功,请注意查收", "status_code": 200 }
Die gleichzeitig eingegebene Telefonnummer erhält den Bestätigungscode.
Wenn die Überprüfung fehlschlägt oder das Senden fehlschlägt, wird die entsprechende Fehlermeldung zurückgegeben.
Bestätigungscode für die Verifizierung
POST 服务器地址/api/auth/validate-sms-code { "phone_number": "手机号", "sms_code": "验证码" } POST 服务器地址/api/auth/validate-sms-code { "phone_number": "手机号", "sms_code": "验证码" }
Wenn die Verifizierung bestanden ist, dann keiner kehrt zurück.
Wenn die Überprüfung fehlschlägt, wird die entsprechende Fehlermeldung zurückgegeben.
Lokalisierte Eingabeaufforderungsinformationssprache
Ermöglicht die Anpassung einiger Eingabeaufforderungsinformationen in laravel-sms.php. Wenn Sie die restlichen Eingabeaufforderungsinformationen in die Landessprache konvertieren möchten, müssen Sie diese separat behandeln.
Stellen Sie zunächst sicher, dass die Spracheinstellung in config/app.php korrekt ist. Dies ist auf zh_cn eingestellt.
'locale' => 'zh_cn', 'locale' => 'zh_cn',
然后在 resources\lang\zh_cn 文件夹下新建 validation.php,并填入本地化信息:
return [ 'required' => '缺少:attribute参数', 'zh_mobile' => '非标准的中国大陆手机号', 'confirm_mobile_not_change' => '提交的手机号已变更', 'verify_code' => '验证码不合法或无效', 'attributes' => [ 'phone_number' => '手机号', 'sms_code' => '验证码', ], ]; return [ 'required' => '缺少:attribute参数', 'zh_mobile' => '非标准的中国大陆手机号', 'confirm_mobile_not_change' => '提交的手机号已变更', 'verify_code' => '验证码不合法或无效', 'attributes' => [ 'phone_number' => '手机号', 'sms_code' => '验证码', ], ];
重新 POST 相关地址,可以看到对应的提示信息语言已经本地化。
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
Laravel5.2使用Captcha生成验证码实现登录的方法
Das obige ist der detaillierte Inhalt vonVerwenden Sie Laravel SMS, um die Funktion zum Senden eines SMS-Bestätigungscodes zur Überprüfung zu erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Datenbankoperationen in PHP werden durch ORM vereinfacht, das Objekte in relationalen Datenbanken abbildet. EloquentORM in Laravel ermöglicht Ihnen die Interaktion mit der Datenbank mithilfe einer objektorientierten Syntax. Sie können ORM verwenden, indem Sie Modellklassen definieren, Eloquent-Methoden verwenden oder in der Praxis ein Blog-System erstellen.

Analyse des PHP-Unit-Test-Tools: PHPUnit: Geeignet für große Projekte, bietet umfassende Funktionalität und ist einfach zu installieren, kann jedoch ausführlich und langsam sein. PHPUnitWrapper: geeignet für kleine Projekte, einfach zu verwenden, optimiert für Lumen/Laravel, verfügt jedoch über eingeschränkte Funktionalität, bietet keine Code-Coverage-Analyse und hat begrenzte Community-Unterstützung.

Die neuesten Versionen von Laravel 9 und CodeIgniter 4 bieten aktualisierte Funktionen und Verbesserungen. Laravel9 übernimmt die MVC-Architektur und bietet Funktionen wie Datenbankmigration, Authentifizierung und Template-Engine. CodeIgniter4 nutzt die HMVC-Architektur, um Routing, ORM und Caching bereitzustellen. In Bezug auf die Leistung sorgen das auf Dienstanbietern basierende Designmuster von Laravel9 und das leichte Framework von CodeIgniter4 für eine hervorragende Leistung. In praktischen Anwendungen eignet sich Laravel9 für komplexe Projekte, die Flexibilität und leistungsstarke Funktionen erfordern, während CodeIgniter4 für schnelle Entwicklung und kleine Anwendungen geeignet ist.

Laravel – Artisan Commands – Laravel 5.7 bietet eine neue Möglichkeit, neue Befehle zu behandeln und zu testen. Es enthält eine neue Funktion zum Testen von Handwerkerbefehlen und die Demonstration wird unten erwähnt?

Vergleichen Sie die Datenverarbeitungsfunktionen von Laravel und CodeIgniter: ORM: Laravel verwendet EloquentORM, das eine relationale Klassen-Objekt-Zuordnung bereitstellt, während CodeIgniter ActiveRecord verwendet, um das Datenbankmodell als Unterklasse von PHP-Klassen darzustellen. Abfrage-Builder: Laravel verfügt über eine flexible verkettete Abfrage-API, während der Abfrage-Builder von CodeIgniter einfacher und Array-basiert ist. Datenvalidierung: Laravel bietet eine Validator-Klasse, die benutzerdefinierte Validierungsregeln unterstützt, während CodeIgniter über weniger integrierte Validierungsfunktionen verfügt und eine manuelle Codierung benutzerdefinierter Regeln erfordert. Praxisfall: Beispiel einer Benutzerregistrierung zeigt Lar

Bei der Auswahl eines Frameworks für große Projekte haben Laravel und CodeIgniter jeweils ihre eigenen Vorteile. Laravel ist für Anwendungen auf Unternehmensebene konzipiert und bietet modularen Aufbau, Abhängigkeitsinjektion und einen leistungsstarken Funktionsumfang. CodeIgniter ist ein leichtes Framework, das sich eher für kleine bis mittelgroße Projekte eignet und Wert auf Geschwindigkeit und Benutzerfreundlichkeit legt. Für große Projekte mit komplexen Anforderungen und einer großen Anzahl von Benutzern sind die Leistung und Skalierbarkeit von Laravel besser geeignet. Für einfache Projekte oder Situationen mit begrenzten Ressourcen sind die leichten und schnellen Entwicklungsfunktionen von CodeIgniter idealer.

Für Anfänger bietet CodeIgniter eine sanftere Lernkurve und weniger Funktionen, deckt aber die Grundbedürfnisse ab. Laravel bietet einen größeren Funktionsumfang, weist jedoch eine etwas steilere Lernkurve auf. In Bezug auf die Leistung schneiden sowohl Laravel als auch CodeIgniter gut ab. Laravel verfügt über eine umfangreichere Dokumentation und aktive Community-Unterstützung, während CodeIgniter einfacher und leichtgewichtiger ist und über starke Sicherheitsfunktionen verfügt. Im praktischen Fall der Erstellung einer Blogging-Anwendung vereinfacht EloquentORM von Laravel die Datenmanipulation, während CodeIgniter mehr manuelle Konfiguration erfordert.

Leitfaden zum Testen von PHP-Einheiten und -Integrationen Unit-Tests: Konzentrieren Sie sich auf eine einzelne Code- oder Funktionseinheit und verwenden Sie PHPUnit, um Testfallklassen zur Überprüfung zu erstellen. Integrationstests: Achten Sie darauf, wie mehrere Codeeinheiten zusammenarbeiten, und verwenden Sie die Methoden setUp() und TearDown() von PHPUnit, um die Testumgebung einzurichten und zu bereinigen. Praktischer Fall: Verwenden Sie PHPUnit, um Unit- und Integrationstests in Laravel-Anwendungen durchzuführen, einschließlich der Erstellung von Datenbanken, dem Starten von Servern und dem Schreiben von Testcode.
