在做用户注册和个人中心的安全管理时,我实现借助第三方短信平台(阿里大于(鱼))在Laravel框架中进行手机验证的设置;阿里大于,是阿里通信旗下优质便捷的云通信服务平台,整合了三大运营商的通信能力,为开发者提供简洁易用的短信/语音API,三网合一通道,按需付费。

安装laravel阿里大于(鱼)服务




1




​composer ​​​​require​​ ​​iscms/alisms-​​​​for​​​​-laravel​



注册服务(config/app.php)

在文件中找到Providers数组,写入




1




​iscms/Alisms/AlidayuServiceProvider::​​​​class​



生成阿里大于(鱼)配置文件(config文件夹)




1




​php artisan vendor:publish​



修改阿里大于(鱼)配置文件(alisms.php)文件为:




1


2


3


4


5




​<?php​


​return​​ ​​[ ​


​'KEY'​​ ​​=>env(​​​​'ALISMS_KEY'​​​​,null),​


​'SECRETKEY'​​​​=>env(​​​​'ALISMS_SECRETKEY'​​​​,null)​


​];​



laravel根目录下找到.env文件,把阿里大鱼的App key和配置成全局变量(http://www.alidayu.com/)




1


2




​ALISMS_KEY=234*****3​


​ALISMS_SECRETKEY=****************​



在您需要调用短信服务的控制器中,引用SMS




1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


17


18


19


20


21


22


23


24


25




​use​​ ​​iscms\Alisms\SendsmsPusher ​​​​as​​ ​​Sms;​


 


​public​​ ​​function​​ ​​__construct(Sms ​​​​$sms​​​​)​


​{​


​$this​​​​->sms=​​​​$sms​​​​;​


​}​


​public​​ ​​function​​ ​​Alidayu(Request ​​​​$request​​​​){​


​$phone​​ ​​= ​​​​$request​​ ​​->input(​​​​'phone'​​​​,​​​​'1508*****55'​​​​); ​​​​// 用户手机号,接收验证码​


​$name​​ ​​= ​​​​'小张个人博客'​​​​;  ​​​​// 短信签名,可以在阿里大鱼的管理中心看到​


​$num​​ ​​= rand(100000, 999999); ​​​​// 生成随机验证码​


​$smsParams​​ ​​= [​


​'number'​​ ​​=> ​​​​"$num"​


​];​


​$content​​ ​​= json_encode(​​​​$smsParams​​​​); ​​​​// 转换成json格式的​


​$code​​ ​​= ​​​​"SMS_63****73"​​​​;   ​​​​// 阿里大于(鱼)短信模板ID​


​$request​​ ​​->session()->put(​​​​'alidayu'​​​​,​​​​$num​​​​);  ​​​​// 存入session 后面做数据验证​


 


​$result​​​​=​​​​$this​​​​->sms->send(​​​​$phone​​​​,​​​​$name​​​​,​​​​$content​​​​,​​​​$code​​​​);​


​echo​​ ​​"验证码:"​​​​.session(​​​​'alidayu'​​​​).​​​​'<br/>'​​​​;​


​if​​​​(property_exists(​​​​$request​​​​,​​​​'result'​​​​)){​


​// 使用PHP函数json_encode方法将给定数组转化为JSON:​


​return​​ ​​json_encode([​​​​'ResultData'​​ ​​=> ​​​​'成功'​​​​, ​​​​'info'​​ ​​=> ​​​​'已发送'​​​​]);​


​}​​​​else​​​​{​


​return​​ ​​json_encode([​​​​'ResultData'​​ ​​=> ​​​​'失败'​​​​, ​​​​'info'​​ ​​=> ​​​​'重复发送'​​​​]);​


​}​



参数说明:

$phone 手机号,用户输入的手机号

$name  短信签名,阿里大鱼申请的短信签名的名字

$content 替换短信模板中的变量,JSON字符串格式,所有值都是字符串,不能有整形

$code   阿里大鱼申请的短信模ID:SMS_39***4

阿里大于(鱼)短信模板(http://www.alidayu.com/)




1


2


3




​模板名称: 身份验证​


​模板ID: SMS_39***4​


​*模板内容:验证码${code},您正在进行个人身份验证,打死不要告诉别人哦!​



那么里面存在着变量${code}需要替换成验证码,那么对应的$content 就应该为{code:"生成的验证码,如:123456"}

到这里Laravel5使用阿里大于(鱼)发送短信验证码应该没有问题了,开始发送短信吧~ ^_^

alisms-for-laravel:https://packagist.org/packages/iscms/alisms-for-laravel



非学,无以致疑;非问,无以广识