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+SqlServer实现分页显示
Oct 09 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 PHP
PHP 简易输出CSV表格文件的方法详解
Jun 20 PHP
php轻松实现中英文混排字符串截取
May 28 PHP
php去除头尾空格的2种方法
Mar 16 PHP
php根据用户语言跳转相应网页
Nov 04 PHP
基于PHP如何把汉字转化为拼音
Dec 11 PHP
php实现异步数据调用的方法
Dec 24 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
May 18 PHP
PHP加密解密类实例代码
Jul 20 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
Nov 07 PHP
基于thinkPHP类的插入数据库操作功能示例
Jan 06 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/04 无线电
php你的验证码安全码?
2007/01/02 PHP
mysql5详细安装教程
2007/01/15 PHP
PHP 地址栏信息的获取代码
2009/01/07 PHP
PHP开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
PHP中Array相关函数简介
2016/07/03 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
JavaScript高级程序设计(第3版)学习笔记 概述
2012/10/11 Javascript
Jquery通过JSON字符串创建JSON对象
2014/08/24 Javascript
JQuery中的html()、text()、val()区别示例介绍
2014/09/01 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
详解vue-router2.0动态路由获取参数
2017/06/14 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
Vue 中使用vue2-highcharts实现曲线数据展示的方法
2018/03/05 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
Appium+Python自动化测试之运行App程序示例
2019/01/23 Python
Django实现跨域的2种方法
2019/07/31 Python
在django中,关于session的通用设置方法
2019/08/06 Python
Python编译成.so文件进行加密后调用的实现
2019/12/23 Python
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
澳大利亚在线奢侈品时尚零售平台:Azura Runway
2021/01/13 全球购物
地球鞋加拿大官网:Earth Shoes Canada
2020/11/17 全球购物
机械专业毕业生自荐信
2013/11/02 职场文书
房地产开发计划书
2014/01/10 职场文书
幼儿园消防安全制度
2014/01/26 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
药店采购员岗位职责
2014/09/30 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
金正昆讲礼仪观后感
2015/06/11 职场文书
如何让vue长列表快速加载
2021/03/29 Vue.js
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android