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 相关文章推荐
第十一节 重载 [11]
Oct 09 PHP
PHP 中的面向对象编程:通向大型 PHP 工程的办法
Dec 03 PHP
php xml常用函数的集合(比较详细)
Jun 06 PHP
探寻PHP脚本不报错的原因
Jun 12 PHP
Laravel 4.2 中队列服务(queue)使用感受
Oct 30 PHP
Cygwin中安装PHP方法步骤
Jul 04 PHP
再Docker中架设完整的WordPress站点全攻略
Jul 29 PHP
PHP代码维护,重构变困难的4种原因分析
Jan 25 PHP
thinkphp 手机号和用户名同时登录
Jan 20 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
Jul 09 PHP
php的lavarel框架中join和orWhere的用法
Dec 28 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部分常见问题总结
2006/10/09 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
用 Javascript 验证表单(form)中多选框(checkbox)值
2009/09/08 Javascript
jQuery $.extend()用法总结
2014/06/15 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
vue2 router 动态传参,多个参数的实例
2017/11/10 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
微信小程序实现红包雨功能
2018/07/11 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
python实现SMTP邮件发送功能
2020/06/16 Python
Python实现SMTP发送邮件详细教程
2021/03/02 Python
DataFrame:通过SparkSql将scala类转为DataFrame的方法
2019/01/29 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
Python除法之传统除法、Floor除法及真除法实例详解
2019/05/23 Python
Python PIL图片添加字体的例子
2019/08/22 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
Python从入门到精通之环境搭建教程图解
2019/09/26 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
Python基础之高级变量类型实例详解
2020/01/03 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
Python如何使用OS模块调用cmd
2020/02/27 Python
python代码区分大小写吗
2020/06/17 Python
python实现画图工具
2020/08/27 Python
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
住宿生擅自离校检讨书
2014/09/22 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js