您的当前位置:首页>全部文章>文章详情

thinkphp6实现阿里云短信验证码验证功能模块

发表于:2024-03-03 17:36:44浏览:74次TAG: #ThinkPHP #PHP

要在ThinkPHP 6中实现阿里云短信验证码验证功能模块,你需要按照以下步骤进行操作:
1.安装阿里云短信服务SDK:
首先,你需要在你的项目中安装阿里云短信服务的SDK。你可以通过Composer来安装。

composer require aliyuncs/aliyun-php-sdk-core  
composer require aliyuncs/aliyun-php-sdk-dysmsapi

2.配置阿里云短信服务:
在config目录下创建一个aliyun.php配置文件,并添加你的阿里云短信服务配置信息,如AccessKeyId、AccessKeySecret和SignName等。

// config/aliyun.php  
return [  
    'accessKeyId' => '你的AccessKeyId',  
    'accessKeySecret' => '你的AccessKeySecret',  
    'signName' => '你的签名名称',  
    'templateCode' => '你的短信模板Code',  
];

3.创建短信服务类:
在app\common\service或其他合适的目录下创建一个SmsService.php文件,用于封装阿里云短信服务的调用逻辑。

// app\common\service\SmsService.php  
namespace app\common\service;  

use Aliyun\Core\DefaultAcsClient;  
use Aliyun\Core\Profile\DefaultProfile;  
use Aliyun\Core\Profile\Profiles;  
use Aliyun\Api\Dysmsapi\V20170525\Models\SendSmsRequest;  
use Aliyun\Api\Dysmsapi\V20170525\Models\SendSmsResponse;  

class SmsService  
{  
    protected $accessKeyId;  
    protected $accessKeySecret;  
    protected $signName;  
    protected $templateCode;  

    public function __construct()  
    {  
        $config = config('aliyun');  
        $this->accessKeyId = $config['accessKeyId'];  
        $this->accessKeySecret = $config['accessKeySecret'];  
        $this->signName = $config['signName'];  
        $this->templateCode = $config['templateCode'];  
    }  

    public function sendSms($phone, $params)  
    {  
        $profile = DefaultProfile::getProfile("cn-hangzhou", $this->accessKeyId, $this->accessKeySecret);  
        $acsClient = new DefaultAcsClient($profile);  

        $request = new SendSmsRequest();  
        $request->setPhoneNumbers($phone);  
        $request->setSignName($this->signName);  
        $request->setTemplateCode($this->templateCode);  
        $request->setTemplateParam(json_encode($params));  

        try {  
            $response = $acsClient->getAcsResponse($request);  
            return $response->Code == 'OK';  
        } catch (\Exception $e) {  
            return false;  
        }  
    }  
}

4.使用短信服务类:
在你的控制器或业务逻辑中,可以调用SmsService的sendSms方法来发送短信验证码。

// app\controller\UserController.php  
namespace app\controller;  

use app\common\service\SmsService;  

class UserController  
{  
    public function sendVerificationCode()  
    {  
        $phone = input('post.phone'); // 获取用户输入的手机号  
        $code = rand(100000, 999999); // 生成随机6位验证码  
        // 存储验证码,例如:cache($phone, $code, 600); // 假设使用缓存存储600秒  

        $params = [  
            'code' => $code,  
        ];  

        $smsService = new SmsService();  
        $result = $smsService->sendSms($phone, $params);  

        if ($result) {  
            return json(['status' => 1, 'msg' => '短信发送成功']);  
        } else {  
            return json(['status' => 0, 'msg' => '短信发送失败']);  
        }  
    }  
}

5.处理用户输入:
你需要一个表单或API接口来让用户输入他们的手机号,并触发发送验证码的操作。

6.验证验证码:
当用户提交验证码时,你需要验证他们输入的验证码是否与之前发送的一致。这通常是在用户提交表单或