thinkPHP框架实现的短信接口验证码功能示例


Posted in PHP onJune 20, 2018

本文实例讲述了thinkPHP框架实现的短信接口验证码功能。分享给大家供大家参考,具体如下:

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

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

视图层View

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Ajax无刷新上传</title>
</head>
<script type="text/javascript" src="__PUBLIC__/js/jquery-1.10.2.min.js"></script>
<body>
  <div>
    请输入手机号码:<input type="text" name="phone" class="phone">
  </div>
  <div>
    <a href="javascript:;" rel="external nofollow" class="butphone">点击获取短信验证码</a>
  </div>
</body>
  <script type="text/javascript">
    $('.butphone').click(function(){
      var phone = $('.phone').val();//手机号码
      $.post(
        "{:U('smsbao')}",//传递的方法
        {phone1:phone},//参数
        function (data){
          if(data == '1'){
            alert('输入框不能为空');
          }else if(data == '2'){
            alert('输入的值为非数字');
          }else{
            alert(data);
          }
          },
          'json'
        )
    })
  </script>
</html>

控制器层Controller

<?php
  namespace Home\Controller;
  use Think\Controller;
  class IndexController extends Controller 
  {
    //视图
    public function index()
    {
      $this->display();
    }
    //短信接口 
    public function smsbao()
    {  
      $phonenum = trim( I('post.phone1') );//接收到的参数
      //首先判断电话为不为空
      if(empty($phonenum) ){
        $this->ajaxReturn('1');
      }
      //判断是否为数字
      $boolphone = is_numeric($phonenum);
      if($boolphone){
        $statusStr = array(
          "0"   => "短信发送成功",
          "-1" => "参数不全",
          "-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",
          "30" => "密码错误",
          "40" => "账号不存在",
          "41" => "余额不足",
          "42" => "帐户已过期",
          "43" => "IP地址限制",
          "50" => "内容含有敏感词"
          );
          $num = rand(100000, 999999);//设置随机数
          setcookie("numset", $num);//把值放入COOKIE中,关闭浏览器清除cookie;
          $smsapi = "http://api.smsbao.com/";
          $user = "asdf75054138"; //短信平台帐号
          $pass = md5("asdf75054138"); //短信平台密码
          $content="[Bug],来自四个火枪手的验证,验证码:".$num;//要发送的短信内容,随便设置
          $phone = $phonenum;//要发送短信的手机号码
          $sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);//固定格式
          $result =file_get_contents($sendurl);//固定格式
          $this->ajaxReturn( $statusStr[$result] );//短信是否发送成功
        }else{
            $this->ajaxReturn( '2' );
        }
      }
  }

各种效果图:

thinkPHP框架实现的短信接口验证码功能示例

thinkPHP框架实现的短信接口验证码功能示例

thinkPHP框架实现的短信接口验证码功能示例

thinkPHP框架实现的短信接口验证码功能示例

附件

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

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

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php中文字母数字验证码实现代码
Apr 25 PHP
php下关于Cannot use a scalar value as an array的解决办法
Aug 08 PHP
php数组函数序列之in_array() - 查找数组中是否存在指定值
Nov 07 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 PHP
深入PHP FTP类的详解
Jun 13 PHP
让codeigniter与swfupload整合的最佳解决方案
Jun 12 PHP
PHP获取数组长度或某个值出现次数的方法
Feb 11 PHP
PHP图像裁剪缩略裁切类源码及使用方法
Jan 07 PHP
PHP函数rtrim()使用中的怪异现象分析
Feb 24 PHP
PHP实现找出有序数组中绝对值最小的数算法分析
Aug 07 PHP
php文件包含的几种方式总结
Sep 19 PHP
Laravel使用模型实现like模糊查询的例子
Oct 24 PHP
thinkPHP3.2.2框架行为扩展及demo示例
Jun 19 #PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 #PHP
PHP 中 var_export、print_r、var_dump 调试中的区别
Jun 19 #PHP
总结PHP代码规范、流程规范、git规范
Jun 18 #PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 #PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
Jun 16 #PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 #PHP
You might like
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
php使用Jpgraph创建折线图效果示例
2017/02/15 PHP
Laravel如何同时连接多个数据库详解
2019/08/13 PHP
javascript 动态添加表格行
2006/06/22 Javascript
jquery 上下滚动广告
2009/06/17 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
javascript字符串替换及字符串分割示例代码
2013/12/12 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
2015/08/17 Javascript
浅析javascript异步执行函数导致的变量变化问题解决思路
2016/05/13 Javascript
JS实现输入框提示文字点击时消失效果
2016/07/19 Javascript
AngularJs concepts详解及示例代码
2016/09/01 Javascript
微信小程序 页面跳转和数据传递实例详解
2017/01/19 Javascript
JavaScript中捕获与冒泡详解及实例
2017/02/03 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
vue.js select下拉框绑定和取值方法
2018/03/03 Javascript
JS实现简单tab选项卡切换
2019/10/25 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
跟老齐学Python之关于循环的小伎俩
2014/10/02 Python
在Python中marshal对象序列化的相关知识
2015/07/01 Python
Python如何发布程序的详细教程
2018/10/09 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
Python对象转换为json的方法步骤
2019/04/25 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
六月份红领巾广播稿
2014/02/03 职场文书
高中军训感想300字
2014/03/04 职场文书
个人培训自我鉴定
2014/03/28 职场文书
面试自我介绍演讲稿
2014/04/29 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书
作风建设整改方案
2014/10/27 职场文书
客服专员岗位职责
2015/02/10 职场文书
开国大典观后感
2015/06/04 职场文书
在酒桌上的敬酒词
2015/08/12 职场文书
Python破解极验滑动验证码详细步骤
2021/05/21 Python