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 编写的日历
Oct 09 PHP
PHP+MYSQL的文章管理系统(二)
Oct 09 PHP
用PHP和ACCESS写聊天室(三)
Oct 09 PHP
PHP中提问频率最高的11个面试题和答案
Sep 02 PHP
php创建、获取cookie及基础要点分析
Jan 26 PHP
详解WordPress中添加和执行动作的函数使用方法
Dec 29 PHP
利用PHP自动生成印有用户信息的名片
Aug 01 PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
Apr 03 PHP
smarty模板的使用方法实例分析
Sep 18 PHP
Laravel开启跨域请求的方法
Oct 13 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
Oct 16 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 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
PHPStorm+XDebug进行调试图文教程
2016/06/13 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
用javascript操作xml
2006/11/04 Javascript
javascript实现的动态文字变换
2007/07/28 Javascript
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
讨论javascript(一)工厂方式 js面象对象的定义方法
2009/12/15 Javascript
url参数中有+、空格、=、%、&amp;、#等特殊符号的问题解决
2013/05/15 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
vue axios请求超时的正确处理方法
2018/04/02 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
2018/08/27 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
2019/07/10 jQuery
vue实现行列转换的一种方法
2019/08/06 Javascript
python继承和抽象类的实现方法
2015/01/14 Python
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
python打开windows应用程序的实例
2019/06/28 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
python超时重新请求解决方案
2019/10/21 Python
python set集合使用方法解析
2019/11/05 Python
python利用xlsxwriter模块 操作 Excel
2020/10/14 Python
使用css如何制作时间ICON方法实践
2012/11/12 HTML / CSS
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
什么是属性访问器
2015/10/26 面试题
标准导师推荐信(医学类)
2013/10/28 职场文书
医学检验专业个人求职信范文
2013/12/04 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
党员教师工作决心书
2014/03/13 职场文书
社区禁毒工作方案
2014/06/02 职场文书
2014领导班子正风肃纪思想汇报
2014/09/18 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
2015年小学开学寄语
2015/02/27 职场文书
通过Qt连接OpenGauss数据库的详细教程
2021/06/23 PostgreSQL
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers