PHP-Handy-SMS-Bestätigungscode-Implementierungsprozess, detaillierte Erklärung PHP-Beispiel

jacklove
Freigeben: 2023-04-01 18:34:02
Original
3012 Leute haben es durchsucht

Dieser Artikel stellt hauptsächlich den Implementierungsprozess des PHP-Handy-SMS-Verifizierungscodes im Detail vor. Er hat einen bestimmten Referenzwert.

Ich habe im Registrierungsteil geschrieben. Sie müssen zur Registrierung Ihre Mobiltelefonnummer verwenden und einen SMS-Bestätigungscode senden.

Nutzen Sie den SMS-Dienstanbieter von Yunpian. Natürlich können Sie den konkreten SMS-Dienstanbieter frei wählen.

1. Implementierungsprozess

Geben Sie Ihre Mobiltelefonnummer ein und klicken Sie, um den Bestätigungscode zu erhalten
Nachdem Sie den korrekten SMS-Bestätigungscode übermittelt haben, ist die Registrierung abgeschlossen

2. Implementierungsideenkarte

3. Registrieren Sie Cloud-Slices und entwickeln Sie Informationszertifizierungs- und Vorlageneinstellungen , worauf hier nicht näher eingegangen wird.

4. Installieren Sie easy-sms , eine von Anzhengchao geschriebene Komponente zum Senden von Textnachrichten Funktion zum Senden von Nachrichten.


composer require "overtrue/easy-sms"
//新建配置文件
touch config/easysms.php
Nach dem Login kopieren


Fügen Sie dann den folgenden Inhalt in die Datei easysms.php ein:


 <?php

  return [

    &#39;timeout&#39;=>5.0,
    &#39;default&#39;=>[
      // 网关调用策略,默认:顺序调用
      &#39;strategy&#39; => \Overtrue\EasySms\Strategies\OrderStrategy::class,

      // 默认可用的发送网关
      &#39;gateways&#39; => [
        &#39;yunpian&#39;,
      ],
    ],
    // 可用的网关配置
    &#39;gateways&#39; => [
      &#39;errorlog&#39; => [
        &#39;file&#39; => &#39;/tmp/easy-sms.log&#39;,
      ],
      &#39;yunpian&#39; => [
        &#39;api_key&#39; => env(&#39;YUNPIAN_API_KEY&#39;),
      ],
    ],

];
Nach dem Login kopieren


Dann erstellen Sie einen ServiceProvider


php artisan make:provider EasySmsServiceProvider
Nach dem Login kopieren


Ändern Sie die Datei

app/ Providers/EasySmsServiceProvider.php


<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Overtrue\EasySms\EasySms;

class EasySmsServiceProvider extends ServiceProvider
{
  /**
   * Bootstrap services.
   *
   * @return void
   */
  public function boot()
  {
    //
  }

  /**
   * Register services.
   *
   * @return void
   */
  public function register()
  {
    $this->app->singleton(EasySms::class,function ($app){

      return new EasySms(config(&#39;easysms&#39;));

    });

    $this->app->alias(EasySms::class,&#39;easysms&#39;);
  }
}
Nach dem Login kopieren


Öffnen Sie abschließend config/app.php und fügen Sie AppProvidersEasySmsServiceProvider::class hinzu,

< in Anbietern 🎜>5. Holen Sie sich den API_KEY des Cloud-Teils

Konfigurieren Sie YUNPIAN_API_KEY in .env.

Besorgen Sie sich den Bestätigungscode von den Controller-Code (Code und Schlüssel im Cache ersetzen)



public function getVerificationCode($request)
  {
    if(FALSE === $this->validateApiRequest($request->all(),
        [&#39;mobile&#39; => &#39;required|regex:/^1[34578]\d{9}$/|unique:users&#39;],[
          &#39;mobile.required&#39;=>&#39;请输入手机号&#39;,
          &#39;mobile.regex&#39;=>&#39;手机号格式不正确&#39;,
          &#39;mobile.unique&#39;=>&#39;手机号已存在&#39;
        ])){
      return false;
    }

    $mobile = trim($request->get(&#39;mobile&#39;));
    $code = str_pad(random_int(1,9999),4,0,STR_PAD_LEFT);


    try{
       $easySms->send($mobile,
        [&#39;content&#39;=>"【UKNOW】您的验证码是{$code}。如非本人操作,请忽略本短信"]       );

    }catch(\GuzzleHttp\Exception\ClientException $exception){

      $response = $exception->getResponse();
      $result =json_decode($response->getBody()->getContents(),true);
      $this->setMsg($result[&#39;msg&#39;]?? &#39;短信发送异常&#39;);
      return false;
    }

    $key = &#39;verificationCode&#39;.str_random(15);
    $expiredAt = now()->addMinutes(1);
    Cache::put($key,[&#39;mobile&#39;=>$mobile,&#39;code&#39;=>$code],$expiredAt);

    return [
      &#39;verification_key&#39;=>$key,
      &#39;expiredAt&#39;=>$expiredAt->toDateTimeString(),
      &#39;verification_code&#39;=>$code
      ];
}
Nach dem Login kopieren


7. Verifizierung vergleichen Code


public function userStore($mobile, $verification_key,$code,$password,$password_confirmation)
 {

  $params = [
   &#39;mobile&#39;=>$mobile,
   &#39;verification_key&#39;=>$verification_key,
   &#39;code&#39;=>$code,
   &#39;password&#39;=>$password,
   &#39;password_confirmation&#39;=>$password_confirmation
  ];
  //参数判断
  if (
   FALSE === $this->validateApiRequest($params, [
    &#39;mobile&#39; => &#39;required|regex:/^1[34578]\d{9}$/|unique:users&#39;,
    &#39;code&#39; => &#39;required&#39;,
    &#39;verification_key&#39;=>&#39;required&#39;,
    &#39;password&#39;  => &#39;required|min:6|confirmed&#39;,
    &#39;password_confirmation&#39; => &#39;required&#39;,
   ], [
    &#39;mobile.required&#39; => &#39;请输入手机号&#39;,
    &#39;mobile.regex&#39; => &#39;手机号格式不正确&#39;,
    &#39;mobile.unique&#39; => &#39;手机号已存在&#39;,
    &#39;code.required&#39; => &#39;请输入短信验证码&#39;,
    &#39;password.required&#39; => &#39;请输入密码&#39;,
    &#39;password.min&#39;   => &#39;密码不得小于6位&#39;,
    &#39;password.confirmed&#39; => &#39;密码前后不一致&#39;,
    &#39;password_confirmation.required&#39;=>&#39;请再次输入密码&#39;,
    &#39;verification_key.required&#39;=>&#39;请输入短信验证码&#39;
   ])
  ) {
   return false;
  }

  $verifyData = Cache::get($verification_key);
  if( !$verifyData){
   $this->setMsg(&#39;验证码已失效&#39;);
   return false;
  }
  if(!hash_equals($code,(string)$verifyData[&#39;code&#39;])){
   $this->setMsg(&#39;验证码错误&#39;);
   return false;
  }

  Cache::forget($verification_key);
  $user = User::create([
   &#39;mobile&#39;=>$mobile,
   &#39;password&#39;=>bcrypt($password)
  ]);
  if(!$user){
   $this->setMsg(&#39;注册失败&#39;);
   return false;
  }
  return true;
}
Nach dem Login kopieren


Der obige Prozess stellt die grundlegenden Schritte des Mobiltelefon-Bestätigungscodes dar.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich sein wird. Ich hoffe auch, dass jeder die chinesische PHP-Website unterstützt.


Artikel, die Sie interessieren könnten:

PHP ermittelt 0 und leere PHP-Instanzen durch verschiedene Funktionen

PHP-Tipps zur Identifizierung umgedrehter Bilder, die mit dem iPhone aufgenommen wurden

PHP-Implementierung des PHP-Beispiels für die Verifizierungsfunktion des Anmeldebestätigungscodes

Das obige ist der detaillierte Inhalt vonPHP-Handy-SMS-Bestätigungscode-Implementierungsprozess, detaillierte Erklärung PHP-Beispiel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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