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 相关文章推荐
Windows下PHP的任意文件执行漏洞
Oct 09 PHP
PHP中的类-什么叫类
Nov 20 PHP
PHP 反射机制实现动态代理的代码
Oct 22 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
Jun 03 PHP
ThinkPHP模板判断输出Defined标签用法详解
Jun 30 PHP
浅析PHP编程中10个最常见的错误
Aug 08 PHP
php一行代码获取文件后缀名实例分析
Nov 12 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
Mar 05 PHP
Codeigniter发送邮件的方法
Mar 19 PHP
php微信公众平台开发之获取用户基本信息
Aug 17 PHP
Session 失效的原因汇总及解决丢失办法
Sep 30 PHP
基于PHP实现生成随机水印图片
Dec 09 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
在PHP中利用XML技术构造远程服务(上)
2006/10/09 PHP
php Ajax乱码
2008/04/09 PHP
thinkPHP3.1验证码的简单实现方法
2016/04/22 PHP
在AngularJS中使用AJAX的方法
2015/06/17 Javascript
jQuery表格插件datatables用法详解
2020/11/23 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
JS返回页面时自动回滚到历史浏览位置
2018/09/26 Javascript
前端路由&amp;webpack基础配置详解
2019/06/10 Javascript
pm2启动ssr失败的解决方法
2019/06/29 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
python使用fork实现守护进程的方法
2017/11/16 Python
Python3 中把txt数据文件读入到矩阵中的方法
2018/04/27 Python
python使用RNN实现文本分类
2018/05/24 Python
tensorflow实现简单逻辑回归
2018/09/07 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
Selenium 安装和简单使用的实现
2020/12/04 Python
python制作微博图片爬取工具
2021/01/16 Python
关键字throw与throws的用法差异
2016/11/22 面试题
高中毕业生自我鉴定
2013/11/03 职场文书
简历中的自我评价怎么写
2014/01/29 职场文书
德育标兵事迹材料
2014/08/24 职场文书
质量月活动总结
2014/08/26 职场文书
2015年工程师工作总结
2015/04/30 职场文书
公司年会开场白
2015/06/01 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
基于python的matplotlib制作双Y轴图
2021/04/20 Python
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python
关于的python五子棋的算法
2022/05/02 Python