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缩略图生成程式(需要GD库支持)
Mar 06 PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 PHP
PHP 作用域解析运算符(::)
Jul 27 PHP
php判断正常访问和外部访问的示例
Feb 10 PHP
ThinkPHP实现ajax仿官网搜索功能实例
Dec 02 PHP
php传值赋值和传地址赋值用法实例分析
Jun 20 PHP
PHP实现linux命令tail -f
Feb 22 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
Aug 06 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
Dec 21 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
Jul 08 PHP
PHP实现批量修改文件名的方法示例
Sep 18 PHP
laravel5.1框架model类查询的实现方法
Oct 08 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
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
PHP 中执行系统外部命令
2006/10/09 PHP
php设置编码格式的方法
2013/03/05 PHP
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
PHP动态页生成静态页的3种常用方法
2014/11/13 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
2016/03/09 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
JavaScript获取XML数据附示例截图
2014/03/05 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
深入理解js generator数据类型
2016/08/16 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
vue项目中的webpack-dev-sever配置方法
2017/12/14 Javascript
使用vue-route 的 beforeEach 实现导航守卫(路由跳转前验证登录)功能
2018/03/22 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
Python利用QQ邮箱发送邮件的实现方法(分享)
2017/06/09 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
解决reload(sys)后print失效的问题
2020/04/25 Python
Keras:Unet网络实现多类语义分割方式
2020/06/11 Python
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
耐克奥地利官网:Nike奥地利
2019/08/16 全球购物
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
Viking比利时:购买办公用品
2019/10/30 全球购物
学校与家长安全责任书
2014/07/23 职场文书
青春励志演讲稿范文
2014/08/25 职场文书
学习张林森心得体会
2014/09/10 职场文书
教育实习指导教师评语
2014/12/31 职场文书
护士求职自荐信范文
2015/03/04 职场文书
妈妈别哭观后感
2015/06/08 职场文书
分家协议书范本
2016/03/22 职场文书
HTML中的表格元素介绍
2022/02/28 HTML / CSS
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android