Thinkphp 3.2中注册发送短信验证码功能(未进行盗刷处理版本)
好多人都感觉脱离了增删改查的功能都很难,实际上不是的,可能有些教程只是讲了核心的部分,导致一些基础不太好的同学有些蒙逼,本人作为一个基础不太好的同学,今天就从基础开始说说i哈
1.首先,想用短信服务,就得先有个阿里云帐号,然后去购买短信,购买后,然后你去生成一个app_id和key的值,声称这个值不用代码,在阿里云后台就可以生成的,然后生成一个模版,这个你们自己找就行,然后生成一个短信签名,短信签名是干什么的呢?给你们举个列子,一般广告短信都是【阿里云】迎十一大酬宾。。。或者【链家】十一大优惠,短信签名就是【】里面的内容,一般人会放公司名字,当然也有人会放其他的,比如1折起等等,看自己需要,认证短信签名需要提供公司执照,公章,营业执照号,以及授权报告单,授权报告单在后台下载就是了,具体填写内容大概就是 某某人 全权代表某某公司 这么填就行。后面都一样了这些都不需要代码,都是在阿里云后台设置,这些你都搞定后,然后我们开始代码
2.首先在Thinkphp的Application/Common/function.php里添加如下方法(如果找不到这个文件,就ctrl+f搜索function.php因为tp里就这一个文件):
-
1 function sendSms($phone,$code){ 2 Vendor('Alisms.Core.Config'); 3 //use Aliyun\Core\Profile\DefaultProfile; 4 Vendor('Alisms.Core.Profile.DefaultProfile'); 5 //use Aliyun\Core\DefaultAcsClient; 6 Vendor('Alisms.Core.DefaultAcsClient'); 7 //use Aliyun\Api\Sms\Request\V20170525\SendSmsRequest; 8 Vendor('Alisms.Api.Sms.Request.V20170525.SendSmsRequest'); 9 //use Aliyun\Api\Sms\Request\V20170525\QuerySendDetailsRequest; 10 Vendor('Alisms.Api.Sms.Request.V20170525.QuerySendDetailsRequest'); 11 // 加载区域结点配置 12 \Aliyun\Core\Config::load(); 13 // 初始化用户Profile实例 14 $profile = \Aliyun\Core\Profile\DefaultProfile::getProfile(C('ALI_SMS.REGION'), C('ALI_SMS.KEY_ID'), C('ALI_SMS.KEY_SECRET')); 15 // 增加服务结点 16 \Aliyun\Core\Profile\DefaultProfile::addEndpoint(C('ALI_SMS.END_POINT_NAME'), C('ALI_SMS.REGION'), C('ALI_SMS.PRODUCT'), C('ALI_SMS.DOMAIN')); 17 // 初始化AcsClient用于发起请求 18 $acsClient = new \Aliyun\Core\DefaultAcsClient($profile); 19 // 初始化SendSmsRequest实例用于设置发送短信的参数 20 $request = new \Aliyun\Api\Sms\Request\V20170525\SendSmsRequest(); 21 // 必填,设置雉短信接收号码 22 $request->setPhoneNumbers($phone); 23 // 必填,设置签名名称 24 $request->setSignName('老陈的博客'); 25 // 必填,设置模板CODE 26 $request->setTemplateCode('SMS_84150026'); 27 $params = array( 28 'code' => $code 29 ); 30 // 可选,设置模板参数 31 $request->setTemplateParam(json_encode($params)); 32 // 可选,设置流水号 33 //if($outId) { 34 // $request->setOutId($outId); 35 //} 36 // 发起访问请求 37 $acsResponse = $acsClient->getAcsResponse($request); 38 // 打印请求结果 39 // var_dump($acsResponse); 40 return $acsResponse; 41 }
3.在Application\Common\Conf\config.php中添加如下配置:- 'ALI_SMS' => array(
- 'PRODUCT' => 'Dysmsapi',
- 'DOMAIN' => 'dysmsapi.aliyuncs.com',
- 'REGION' => 'cn-hangzhou',
- 'END_POINT_NAME' => 'cn-hangzhou',
- 'KEY_ID' => '你的KEY_ID',
- 'KEY_SECRET' => '你的KEY_SECRET'
- ),
4.还有一点最重要的去官网后台下载PHP的sdk ,然后放到Thinkphp/library/Vendor下,当然你们下不到,可以找我,我有简易版的sdk,群:84451248
再最后,我还要说一下 很多朋友可能不知道前台怎么用,那我就给写一个简易版的调用吧 ,具体的防盗刷的话,到下一个文章中再详细说明,这里就先简单说个调用
比如我首页要调用,那么我就View/Index/index。html加个 获取验证码 按钮,然后 用ajax异步 获取后台方法也好或者form 表单也好都可以 然后后台对应的action的方法里只需要
sendSms('1500xxxx864',$randcount);就可以了,你们先试试,下次再讲如果防止盗刷。