Bei der Benutzerregistrierung und der Verwaltung der persönlichen Center-Sicherheit ist es häufig erforderlich, SMS zum Senden von Bestätigungscodes zu verwenden. Der folgende Artikel führt Sie hauptsächlich in die Implementierungsmethode zum Senden von Bestätigungscodes per SMS in Laravel ein Für weitere Informationen können Freunde, die ihn benötigen, darauf verweisen.
Vorwort
Vor einiger Zeit wollte ich eine SMS-Verifizierungscode-Funktion implementieren, aber diese blieb lange hängen.
Zuerst habe ich den SMS-Dienst von Alibaba Cloud genutzt. Der erste Zugriffsprozess ist wie folgt:
SMS-Dienst auf Alibaba Cloud aktivieren Was Als nächstes müssen Sie Folgendes tun:
1. Beantragen Sie eine Signatur. 2. Beantragen Sie eine Vorlage. 3. Erstellen Sie einen Accesskey. Erwähnenswert ist, dass Sie den Accesskey über den von Alibaba Cloud bereitgestellten Unterbenutzer erstellen können kann sicherer sein 4, Aufladen
Laravel hat viele Erweiterungspakete für SMS-Dienste. Die Verwendung ist wie folgt:
1. Führen Sie Folgendes aus: composer require iscms/alisms-for-laravel
2. Fügen Sie Folgendes hinzu: iscmsAlismsAlidayuServiceProvider::class
unter Anbieter von configapp.php, ähnlich wie:
3 , dadurch wird eine alisms.php-Datei im Konfigurationsordner mit folgendem Inhalt hinzugefügt: php artisan vendor:publish
<?php return [ 'KEY' =>env('ALISMS_KEY',null), 'SECRETKEY'=>env('ALISMS_SECRETKEY',null), ];
ALISMS_KEY=23305789 ALISMS_SECRETKEY=**************
Hinweis: ALISMS_KEY und ALISMS_SECRETKEY sind die von Alibaba Cloud generierten Zugriffsschlüsselpaare (AccessKeyId und AccessKeySecret)
Erste Schritte:
1. Geben Sie SMS in den Controller ein, wo Sie den SMS-Dienst anrufen müssen:use iscmsAlismsSendsmsPusher as Sms;
public function __construct(Sms $sms) { $this->sms=$sms; } public function index() { $result=$this->sms->send("$phone","$name","$content","$code"); }
zu finden ist
{ code:"生成的验证码", product:"示例项目" }
composer dumpautoload
<?php // namespace App\Http\Controllers\sms; use Aliyun\Core\Config; use Aliyun\Core\Profile\DefaultProfile; use Aliyun\Core\DefaultAcsClient; use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest; use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest; use App\Http\Controllers\Controller; // 加载区域结点配置 Config::load(); class SmsController extends Controller { /** * 构造器 * @param string $accessKeyId 必填,AccessKeyId * @param string $accessKeySecret 必填,AccessKeySecret */ public function __construct($accessKeyId="######",$accessKeySecret="#######") { // 短信API产品名 $product = "Dysmsapi"; // 短信API产品域名 $domain = "dysmsapi.aliyuncs.com"; // 暂时不支持多Region $region = "cn-hangzhou"; // 服务结点 $endPointName = "cn-hangzhou"; // 初始化用户Profile实例 $profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret); // 增加服务结点 DefaultProfile::addEndpoint($endPointName, $region, $product, $domain); // 初始化AcsClient用于发起请求 $this->acsClient = new DefaultAcsClient($profile); } /** * 发送短信范例 * @param [type] $phoneNumbers 必填, 短信接收号码 * @param string $signName 必填, 短信签名,应严格"签名名称"填写, * @param string $templateCode 必填, 短信模板Code,应严格按"模板CODE"填写, * @param [type] $outId 选填, 假如模板中存在变量需要替换则为必填项 * @return [type] [description] */ public function sendSms($phoneNumbers,$signName="XX软件",$templateCode="SMS_XXXXXX",$outId=null) { // 初始化SendSmsRequest实例用于设置发送短信的参数 $request = new SendSmsRequest; // 必填,设置雉短信接收号码 $request->setPhoneNumbers($phoneNumbers); // 必填,设置签名名称 $request->setSignName($signName); // 必填,设置模板CODE $request->setTemplateCode($templateCode); $num = rand(100000,999999); // 可选,设置模板参数 $request->setTemplateParam(json_encode( Array( "code" => "$num" ) )); // 可选,设置流水号 if($outId) { $request->setOutId($outId); } // 发起访问请求 $acsResponse = $this->acsClient->getAcsResponse($request); } /** * 查询短信发送情况范例 * @param [type] $phoneNumbers 必填, 短信接收号码 * @param [type] $sendDate 必填,短信发送日期,格式Ymd,支持近30天记录查询 * @param integer $pageSize 必填,分页大小 * @param integer $currentPage 必填,当前页码 * @param [type] $bizId 选填,短信发送流水号 * @return [type] [description] */ public function queryDetails($phoneNumbers,$sendDate,$pageSize=10,$currentPage=1,$bizId=null) { // 初始化QuerySendDetailsRequest实例用于设置短信查询的参数 $request = new QuerySendDetailsRequest(); $request->setPhoneNumber($phoneNumbers); $request->setSendDate($sendDate); $request->setPageSize($pageSize); $request->setCurrentPage($currentPage); if($bizId) { $request->setBizId($bizId); } $acsResponse = $this->acsClient->getAcsResponse($request); } }
Zusammenfassung
Artikel, die Sie interessieren könnten:PHP-ReceiveMail-Implementierung PHP-Beispiel für den Empfang einer E-Mail-Funktion
Generierungsmethode der PHP-PHP-Technik für gemeinsam genutzte Bilder
Laravel 5.4 + Vue + Vux + Der Umgebungsabgleichsprozess von Element stellt PHP-Beispiele vor
Das obige ist der detaillierte Inhalt vonImplementierungsmethode zum Senden eines Bestätigungscodes per SMS in einem Laravel-PHP-Beispiel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!