Thinkphp 3.2中注册发送短信验证码功能(未进行盗刷处理版本)

好多人都感觉脱离了增删改查的功能都很难,实际上不是的,可能有些教程只是讲了核心的部分,导致一些基础不太好的同学有些蒙逼,本人作为一个基础不太好的同学,今天就从基础开始说说i哈

1.首先,想用短信服务,就得先有个阿里云帐号,然后去购买短信,购买后,然后你去生成一个app_id和key的值,声称这个值不用代码,在阿里云后台就可以生成的,然后生成一个模版,这个你们自己找就行,然后生成一个短信签名,短信签名是干什么的呢?给你们举个列子,一般广告短信都是【阿里云】迎十一大酬宾。。。或者【链家】十一大优惠,短信签名就是【】里面的内容,一般人会放公司名字,当然也有人会放其他的,比如1折起等等,看自己需要,认证短信签名需要提供公司执照,公章,营业执照号,以及授权报告单,授权报告单在后台下载就是了,具体填写内容大概就是  某某人 全权代表某某公司 这么填就行。后面都一样了这些都不需要代码,都是在阿里云后台设置,这些你都搞定后,然后我们开始代码

2.首先在Thinkphp的Application/Common/function.php里添加如下方法(如果找不到这个文件,就ctrl+f搜索function.php因为tp里就这一个文件):

  1.  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中添加如下配置:
    1. 'ALI_SMS' => array(
    2.     'PRODUCT' => 'Dysmsapi',
    3.     'DOMAIN' => 'dysmsapi.aliyuncs.com',
    4.     'REGION' => 'cn-hangzhou',
    5.     'END_POINT_NAME' => 'cn-hangzhou',
    6.     'KEY_ID' => '你的KEY_ID',
    7.     'KEY_SECRET' => '你的KEY_SECRET'
    8.   ),

     

    4.还有一点最重要的去官网后台下载PHP的sdk ,然后放到Thinkphp/library/Vendor下,当然你们下不到,可以找我,我有简易版的sdk,群:84451248

     

    再最后,我还要说一下 很多朋友可能不知道前台怎么用,那我就给写一个简易版的调用吧 ,具体的防盗刷的话,到下一个文章中再详细说明,这里就先简单说个调用

     

    比如我首页要调用,那么我就View/Index/index。html加个 获取验证码 按钮,然后 用ajax异步 获取后台方法也好或者form 表单也好都可以 然后后台对应的action的方法里只需要

     

    sendSms('1500xxxx864',$randcount);就可以了,你们先试试,下次再讲如果防止盗刷。

     

     

     

     

     

posted @ 2017-10-31 23:21  大白驴  阅读(1276)  评论(1编辑  收藏  举报