Detaillierte Erläuterung der Schritte zur Implementierung der SMS-Bestätigungscode-Funktion von Laravel

php中世界最好的语言
Freigeben: 2023-03-25 22:24:02
Original
2353 Leute haben es durchsucht

Dieses Mal erkläre ich Ihnen ausführlich die Schritte zur Implementierung der Funktion zum Senden von Bestätigungscodes per SMS mit Laravel. Was sind die Vorsichtsmaßnahmen für die Implementierung der Funktion zum Senden? Verifizierungscode per SMS mit Laravel. Das Folgende ist ein praktischer Fall, schauen wir uns das an.

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 zu den Anbietern 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 [
  &#39;KEY&#39; =>env(&#39;ALISMS_KEY&#39;,null),
  &#39;SECRETKEY&#39;=>env(&#39;ALISMS_SECRETKEY&#39;,null),
 ];
Nach dem Login kopieren

4. Schreiben Sie in die .env-Datei:

ALISMS_KEY=23305789
ALISMS_SECRETKEY=**************
Nach dem Login kopieren

Hinweis: ALISMS_KEY und ALISMS_SECRETKEY sind Paare von Zugriffsschlüsseln (AccessKeyId und AccessKeySecret), die von Alibaba Cloud generiert werden.

Erste Schritte:

1. Sie müssen Rufen Sie den SMS-Dienst auf. SMS wird im

Controller eingeführt:

 

use iscmsAlismsSendsmsPusher as Sms;

public function construct(Sms $sms)
 {
  $this->sms=$sms;
 }
 public function index()
 {
  $result=$this->sms->send("$phone","$name","$content","$code");
 }
Nach dem Login kopieren

Parameterbeschreibung: $phone, $name, $content, $code

  • $phone bezieht sich auf die SMS-Nummer des Empfängers der SMS,

  • $name bezieht sich auf die SMS-Signatur. Sie können die SMS auf Ali signieren Dayu unter http://www.alidayu.com/admin /service/sign Find

  • $content bezieht sich auf den variablen Inhalt in der SMS-Vorlage, zum Beispiel

in Ihrer eigenen Ali Big Fish-Vorlage gibt es die folgende SMS-Vorlage

Vorlagenname: Identitätsüberprüfungs-Verifizierungscode

Vorlagen-ID: SMS_3910275

* Inhalt der Vorlage: Bestätigungscode $[code], Sie führen $ {product}Identitätsüberprüfung durch, erzählen Sie es niemandem, bis Sie sterben!

Dann sollte der entsprechende $content

   {
  code:"生成的验证码",
  product:"示例项目"
 }
Nach dem Login kopieren

Jetzt kann es normal verwendet werden, aber ich weiß nicht, warum die Konsole während der Verwendung einen Fehler von code=11 Code zurückgegeben hat, Nachdem ich bei Taobao nachgesehen hatte, lag es am ISV-Berechtigungsproblem. Danach habe ich die Benutzerberechtigungskontrolle in Alibaba Cloud maximal geöffnet, aber dieser Fehler ist immer noch aufgetreten. Das Problem ist immer noch aufgetreten wurde noch gelöst, also habe ich das native in Laravel geschrieben.

Laden Sie zunächst das SDK-Paket für den SMS-Dienst von der offiziellen Alibaba Cloud-Website herunter

Das SDK-Toolpaket enthält insgesamt 2 Klassenbibliotheken, ein Aliyun-php-sdk-core-Paket und das Das andere ist das Paket alicom-dysms-api. Fügen Sie diese beiden Pakete als Abhängigkeiten zur Projektklassenbibliothek hinzu.

Wählen Sie die PHP-Version des SDK-Pakets aus und entpacken Sie das komprimierte Paket. Es enthält vier Ordner: api_demo, api_sdk, msg_demo, msg_sdk

Erstellen Sie eine neue Datei mit dem Namen libs im App-Ordner Kopieren Sie im Laravel-Projektordner api_sdk und msg_sdk in den libs-Ordner.

Suchen Sie die Datei „composer.json“ im Stammverzeichnis, suchen Sie die in „composer.json“ definierte Classmap-Option und schreiben Sie die beiden importierten Pakete:

Terminal Geben Sie den Projektordner ein und führen Sie Folgendes aus:

composer dumpautoload
Nach dem Login kopieren

Auf diese Weise wird die Klassenbibliothek eines Drittanbieters in Laravel eingeführt.

Codedatei erstellen

Ich habe es einfach gekapselt:

<?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);
  }
 }
Nach dem Login kopieren

之后用就实例化调用方法就可以了。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

怎么让360搜索引擎收录php改写方法

PHP使用Curl实现模拟登录及抓取数据步骤详解

PHP使用file_get_contents发送http请求步骤详解

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Schritte zur Implementierung der SMS-Bestätigungscode-Funktion von Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage