Laravel 容联云通讯实现手机短信验证用户注册(Laravel 短信验证)

发布时间:2017-09-11 编辑:小张个人博客 查看次数:6637

分享一篇基于Laravel5.1框架实现发送短信验证的相关功能,前几天在做到用户注册和个人中心的安全管理时,借助第三方短信平台(容联云通讯)在Laravel5.1框架中进行手机验证的设置。非常不错具有参考借鉴价值,需要的朋友可以参考下。

Laravel框架简介:
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。

Laravel短信验证码实现步骤:

容联云通讯相关配置选项(SendTemplateSMS.php):

<?php
namespace App\Tool\SMS;
use App\Models\M3Result;

class SendTemplateSMS{

//主帐号,对应开官网发者主账号下的 ACCOUNT SID
private $accountSid= '8aaf0***************11170071';

//主帐号令牌,对应官网开发者主账号下的 AUTH TOKEN
private  $accountToken= 'e549*********************f41c5';

//应用Id,在官网应用列表中点击应用,对应应用详情中的APP ID
//在开发调试的时候,可以使用官网自动为您分配的测试Demo的APP ID
private $appId='8aaf*********************1be0076';

//请求地址
//沙盒环境(用于应用开发调试):sandboxapp.cloopen.com
//生产环境(用户应用上线使用):app.cloopen.com
private $serverIP='sandboxapp.cloopen.com';

//请求端口,生产环境和沙盒环境一致
private $serverPort='8883';

//REST版本号,在官网文档REST介绍中获得。
private $softVersion='2013-12-26';

/**
 * 发送模板短信
 * @param to 手机号码集合,用英文逗号分开
 * @param datas 内容数据 格式为数组 例如:array('Marry','Alon'),如不需替换请填 null
 * @param $tempId 模板Id
 */
public function sendTemplateSMS($to,$datas,$tempId)
{
    $m3_result = new M3Result;

    // 初始化REST SDK
    $rest = new CCPRestSDK($this->serverIP,$this->serverPort,$this->softVersion);
    $rest->setAccount($this->accountSid,$this->accountToken);
    $rest->setAppId($this->appId);

    // 发送模板短信
    //  echo "Sending TemplateSMS to $to <br/>";
    $result = $rest->sendTemplateSMS($to,$datas,$tempId);
    if($result == NULL ) {
        $m3_result->status = 3;
        $m3_result->message = 'result error!';
    }
    if($result->statusCode != 0) {
        $m3_result->status = $result->statusCode;
        $m3_result->message = $result->statusMsg;
    }else{
        $m3_result->status = 0;
        $m3_result->message = '发送成功';
    }

    return $m3_result;
}
}

数据返回接口文件定义:

<?php
namespace App\Models;

class M3Result {
  public $status;
  public $message;
 
  public function toJson(){
    return json_encode($this, JSON_UNESCAPED_UNICODE);
  }
}

Laravel发送手机号验证码实现逻辑:

<?php
namespace App\Http\Controllers\Scrvice;

use Illuminate\Routing\Controller;
use App\Tool\SMS\sendTemplateSMS;  // 引入榕联云通讯类
use Illuminate\Http\Request;
use App\Models\M3Result;  // 返回数据接口
use App\Entity\TempPhone;  // 手机号验证码临时表

// 发送手机验证码
public function sendSMS(Request $request){
$m3_result = new M3Result;
// 获取注册手机号并判断是否为空
$phone = $request->input('phone', '');
if($phone == '') {
    $m3_result->status = 1;
    $m3_result->message = '手机号不能为空';
    return $m3_result->toJson();
}
// 判断手机号格式是否正确
if(strlen($phone) != 11 || $phone[0] != '1') {
    $m3_result->status = 2;
    $m3_result->message = '手机格式不正确';
    return $m3_result->toJson();
}
// 调用榕联云通讯提供类
$sendTemplateSMS = new SendTemplateSMS;
$code = '';
// 生成随机验证码
$charset = '123456789';
$_len = strlen($charset) - 1;
for ($i = 0;$i < 6;++$i) {
    $code .= $charset[mt_rand(1, $_len)];
}
// 发送验证码 第一个参数是 手机号,第二是个array(验证码,有效时间),第三个是短信模板编号
$m3_result = $sendTemplateSMS->sendTemplateSMS($phone, array($code, 60), 1);

// 验证码发成功后 写入数据库
if($m3_result->status == 0) {
    // 查询手机号是否已存在 如果存在修改保存
    $tempPhone = TempPhone::where('phone', $phone)->first();
    if($tempPhone == null) {
        $tempPhone = new TempPhone;
    }
    $tempPhone->phone = $phone;  // 手机号
    $tempPhone->code = $code;   // 验证码
    $tempPhone->time = date('Y-m-d H-i-s', time() + 60*60);  // 有效时间
    $tempPhone->save();
}
return $m3_result->toJson();

以上所述就是给大家介绍基于Laravel框架实现发送短信验证功能代码,希望对大家有所帮助!

出处:小张个人博客

网址:http://blog.023xs.cn/

您的支持是对博主最大的鼓励,感谢您的认真阅读。欢迎转载,但请保留该声明。

顶部

Copyright © 小张个人博客 All Rights Reserved 渝ICP备15006773号-1

联系方式:[email protected] | 本站文章仅供学习和参考

渝公网安备 50024102500267号