• 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 AliyunCoreProfileDefaultProfile;
       4   Vendor('Alisms.Core.Profile.DefaultProfile');
       5   //use AliyunCoreDefaultAcsClient;
       6   Vendor('Alisms.Core.DefaultAcsClient');
       7   //use AliyunApiSmsRequestV20170525SendSmsRequest;
       8   Vendor('Alisms.Api.Sms.Request.V20170525.SendSmsRequest');
       9   //use AliyunApiSmsRequestV20170525QuerySendDetailsRequest;
      10   Vendor('Alisms.Api.Sms.Request.V20170525.QuerySendDetailsRequest');
      11   // 加载区域结点配置
      12   AliyunCoreConfig::load();
      13   // 初始化用户Profile实例
      14   $profile = AliyunCoreProfileDefaultProfile::getProfile(C('ALI_SMS.REGION'), C('ALI_SMS.KEY_ID'), C('ALI_SMS.KEY_SECRET'));
      15   // 增加服务结点
      16   AliyunCoreProfileDefaultProfile::addEndpoint(C('ALI_SMS.END_POINT_NAME'), C('ALI_SMS.REGION'), C('ALI_SMS.PRODUCT'), C('ALI_SMS.DOMAIN'));
      17   // 初始化AcsClient用于发起请求
      18   $acsClient = new AliyunCoreDefaultAcsClient($profile);
      19   // 初始化SendSmsRequest实例用于设置发送短信的参数
      20   $request = new AliyunApiSmsRequestV20170525SendSmsRequest();
      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.在ApplicationCommonConfconfig.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);就可以了,你们先试试,下次再讲如果防止盗刷。

  • 相关阅读:
    centos 7.3 配置vnc 服务 图形界面登录
    安装vnc出现的问题
    HDFS文件系统的JAVA-API操作(一)
    kafka offset的存储问题
    kafka查询topic属性含义
    java静态类、静态方法、静态代码块,静态变量及实例方法,实例变量初始化顺序及内存管理,机制
    avg函数忽略null值
    为服务开启BBR加速
    正则表达式转义所有特殊符号
    Scala 运算符优先顺序
  • 原文地址:https://www.cnblogs.com/HoverM/p/7764403.html
Copyright © 2020-2023  润新知