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 数组入门教程小结
May 20 PHP
php下用cookie统计用户访问网页次数的代码
May 09 PHP
PHP zlib扩展实现页面GZIP压缩输出
Jun 17 PHP
献给php初学者(入门学习经验谈)
Oct 12 PHP
PHP URL路由类实例
Nov 12 PHP
ThinkPHP中U方法的使用浅析
Jun 13 PHP
使用php转义输出HTML到JavaScript
Mar 27 PHP
PHP版微信公众平台红包API
Apr 02 PHP
PHP信号量基本用法实例详解
Feb 12 PHP
php时间戳转换代码详解
Aug 04 PHP
Yii框架操作cookie与session的方法实例详解
Sep 04 PHP
TP5框架实现上传多张图片的方法分析
Mar 29 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 JSON 数据解析代码
2010/05/26 PHP
使用php get_headers 判断URL是否有效的解决办法
2013/04/27 PHP
PHP使用pcntl_fork实现多进程下载图片的方法
2014/12/16 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
PHP中file_put_contents追加和换行的实现方法
2017/04/01 PHP
JavaScript实现x秒后自动跳转到一个页面
2013/01/03 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
2014/01/23 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
javascript arguments使用示例
2014/12/16 Javascript
基于jQuery实现多层次的手风琴效果附源码
2015/09/21 Javascript
node网页分段渲染详解
2016/09/05 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
利用pm2部署多个node.js项目的配置教程
2017/10/22 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
2018/02/24 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
2018/09/27 Javascript
详解Vue组件之间通信的七种方式
2019/04/14 Javascript
js中的深浅拷贝问题简析
2019/05/10 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
详解如何使用Python编写vim插件
2017/11/28 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
用python拟合等角螺线的实现示例
2019/12/27 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
2020/04/07 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
阿迪达斯俄罗斯官方商城:adidas俄罗斯
2017/03/08 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
乡镇法制宣传日活动总结
2015/05/05 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
2016五四青年节活动总结范文
2016/04/06 职场文书
聊聊pytorch测试的时候为何要加上model.eval()
2021/05/23 Python