当前位置:Gxlcms > php框架 > 关于thinkphp下阿里大于短信验证

关于thinkphp下阿里大于短信验证

时间:2021-07-01 10:21:17 帮助过:43人阅读

下面由thinkphp框架教程栏目给大家介绍thinkphp下阿里大于短信验证,希望对需要的朋友有所帮助!

本方法基于Thinkphp,用到了jquery.validate,当然具体项目中也可以不用,下面我就按步骤来写下来。

1.准备

1.登陆
http://www.alidayu.com,进入网址
用淘宝号登陆即可
2.进入管理中心

a55e3de0f44114382ed5eed297f6b20.png

3.配置
(1)配置短信签名

348c818d07719f5552c0550d1827f6f.png

02581cb4c1b54ec3ce9851fd319ca47.png

(2)配置短信模板

98e22ddbd41997329e0a6602040aba2.png

1ae79040a243415fa741b84d5196266.png

建好后,需要的东西就是APPkey APPsecret

cfe3576e98976efe62e67543ede07a8.png

9645bd776a18d5fcab8f0d1edee6f2f.png

还可以进行测试

dcf245c7d69b9f904b50d2905191c90.png

2.数据库

839b3a67184d84db3d59226f4ec02dc.png

3.后端

  • 引入
    下载阿里大于类文件,放在/Thinkphp/Library/org/Alidayu(文件夹要大写,坑过自己,部署到服务器后出问题)

8c2c09bf644de4222723e3dafe526f5.png

  • 通用类里

  1. // 生成短信验证码
  2. public function createSMSCode($length = 4){
  3. $min = pow(10 , ($length - 1));
  4. $max = pow(10, $length) - 1;
  5. return rand($min, $max);
  6. }
  7. //发送验证码
  8. public function send_phone($phone){
  9. $code=$this->createSMSCode($length = 4);
  10. import('Org.Alidayu.top.TopClient');
  11. import('Org.Alidayu.top.ResultSet');
  12. import('Org.Alidayu.top.RequestCheckUtil');
  13. import('Org.Alidayu.top.TopLogger');
  14. import('Org.Alidayu.top.request.AlibabaAliqinFcSmsNumSendRequest');
  15. $c = new \TopClient;
  16. $appkey="你的appkey";
  17. $secret="你的secret;
  18. $c ->appkey = $appkey ;
  19. $c ->secretKey = $secret ;
  20. $req = new \AlibabaAliqinFcSmsNumSendRequest;
  21. $req ->setExtend( "" );
  22. $req ->setSmsType( "normal" );
  23. $req ->setSmsFreeSignName( "阿尚测试" );
  24. $req ->setSmsParam( "{name:'客户',code:'".$code."',time:'5分钟'}" );
  25. $req ->setRecNum( $phone);
  26. $req ->setSmsTemplateCode( "SMS_71300157" );
  27. $resp = $c ->execute( $req );
  28. $this->sendMsgResult($resp,$phone,$code);
  29. }
  30. //验证手机号是否发送成功 前端用ajax,发送成功则提示倒计时,如50秒后可以重新发送
  31. private function sendMsgResult($resp,$phone,$code){
  32. if ($resp->result->success && !$resp->result->code) {
  33. $data['phone']=$phone;
  34. $data['code']=$code;
  35. $data['send_time']=time();
  36. $result=M("code")->add($data);
  37. if($result){
  38. $data="发送成功";
  39. }else{
  40. $data="发送失败";
  41. }
  42. } else if ($resp->code || $resp->msg == "Remote service error") {
  43. $data="发送失败";
  44. } else {
  45. $data="发送失败";
  46. }
  47. return $data;
  48. }
  49. // 验证短信验证码是否有效,前端用jquery validate的remote
  50. public function checkSMSCode(){
  51. $mobile = $_POST['mobile'];
  52. $code = $_POST['code'];
  53. $nowTimeStr = date('Y-m-d H:i:s');
  54. $smscodeObj = M("code")->where("mobile='$mobile'")->find();
  55. if($smscodeObj){
  56. $smsCodeTimeStr = $smscodeObj['send_time'];
  57. $recordCode = $smscodeObj['code'];
  58. $flag = $this->checkTime($nowTimeStr, $smsCodeTimeStr);
  59. if($flag&&$code==$recordCode){
  60. echo true;
  61. }else{
  62. echo false;
  63. }
  64. }
  65. }
  • 用的类里,我是放在注册类里调用

//发送短信,调用BaseController里的方法,因为其他模块也要用到这方法

  1. public function send_message(){
  2. $phone=I("post.phone");
  3. //data返回失败 但不影响使用
  4. $data=$this->send_phone($phone);
  5. $this->ajaxReturn($data,"JSON");
  6. }

4.前台 ajax部分功能已经具备,还待完善

  1. //发送手机ajax
  2. function send_message() {
  3. if($("#phone input").valid()){
  4. var phone=$("#phone input").val();
  5. $.post("{:U('Register/send_message')}","phone="+phone,function(data){
  6. });
  7. $("#send_message").html("发送成功");
  8. $("#send_message").css("background-color","#2f9cff");
  9. }
  10. }

以上就是关于thinkphp下阿里大于短信验证的详细内容,更多请关注gxlcms其它相关文章!

人气教程排行