首页 > 代码库 > Thinkphp框架 -- 短信接口验证码

Thinkphp框架 -- 短信接口验证码

  我用的是一款名叫 短信宝 的应用,新注册的用户可以免费3条测试短信,发现一个BUG,同个手机可以无限注册,自己玩玩还是可以的。

  里面的短信接口代码什么信息都没有,感觉看得不是很明白,自己测试了一遍,可以用,直接调用就可以的,如果要用到项目中还有很多细节要处理,比如 设置一个验证码的存活时间,还有点击按钮每隔一分钟才能按一次,还有判断这个用户发的短信另一个用户能不能用,以后有时间再接下去做,现在先来个简易版的

 

  视图层View

 1 <!doctype html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Ajax无刷新上传</title>
 6 </head>
 7 <script type="text/javascript" src="http://www.mamicode.com/__PUBLIC__/js/jquery-1.10.2.min.js"></script>
 8 
 9 <body>
10     <div>
11         请输入手机号码:<input type="text" name="phone" class="phone">
12     </div>
13     <div>
14         <a href="javascript:;" class="butphone">点击获取短信验证码</a>
15     </div>
16 </body>
17     <script type="text/javascript">
18 
19         $(‘.butphone‘).click(function(){
20 
21             var phone = $(‘.phone‘).val();//手机号码
22 
23             $.post(
24 
25                 "{:U(‘smsbao‘)}",//传递的方法
26 
27                 {phone1:phone},//参数
28 
29                 function (data){
30 
31                     if(data =http://www.mamicode.com/= ‘1‘){
32                         alert(‘输入框不能为空‘);
33                     }else if(data =http://www.mamicode.com/= ‘2‘){
34                         alert(‘输入的值为非数字‘);
35                     }else{
36                         alert(data);
37                     }
38                     
39                     },
40                     ‘json‘
41                 )
42         })
43     </script>
44 
45 </html>

  

  控制器层Controller

 1 <?php
 2     namespace Home\Controller;
 3     use Think\Controller;
 4     class IndexController extends Controller 
 5     {
 6         //视图
 7         public function index()
 8         {
 9             $this->display();
10         }
11 
12       //短信接口 
13         public function smsbao()
14         {    
15             $phonenum = trim( I(‘post.phone1‘) );//接收到的参数
16 
17             //首先判断电话为不为空
18             if(empty($phonenum) ){
19 
20                 $this->ajaxReturn(‘1‘);
21             }
22 
23             //判断是否为数字
24             $boolphone = is_numeric($phonenum);
25 
26             if($boolphone){
27 
28                 $statusStr = array(
29                     "0"     => "短信发送成功",
30                     "-1" => "参数不全",
31                     "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",
32                     "30" => "密码错误",
33                     "40" => "账号不存在",
34                     "41" => "余额不足",
35                     "42" => "帐户已过期",
36                     "43" => "IP地址限制",
37                     "50" => "内容含有敏感词"
38                     );
39                     $num = rand(100000, 999999);//设置随机数
40 
41                     setcookie("numset", $num);//把值放入COOKIE中,关闭浏览器清除cookie;
42                     
43                     $smsapi = "http://api.smsbao.com/";
44                     
45                     $user = "asdf75054138"; //短信平台帐号
46                     
47                     $pass = md5("asdf75054138"); //短信平台密码
48                     
49                     $content="[Bug],来自四个火枪手的验证,验证码:".$num;//要发送的短信内容,随便设置
50                     
51                     $phone = $phonenum;//要发送短信的手机号码
52                     
53                     $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);//固定格式
54                     
55                     $result =file_get_contents($sendurl);//固定格式
56                     
57                     $this->ajaxReturn( $statusStr[$result] );//短信是否发送成功
58                     
59                 }else{
60                         $this->ajaxReturn( ‘2‘ );
61                 }
62 
63             }
64     }

  

  各种效果图:

    技术分享

    技术分享

    技术分享

    

    技术分享

  附件

    短信宝url:http://www.cocsms.com/

      直接注册一个帐号,弹出让你用一条短信测试的不要测试,不然会损失一条。

 

  

Thinkphp框架 -- 短信接口验证码