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入门
Oct 09 PHP
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
Mar 16 PHP
THINKPHP+JS实现缩放图片式截图的实现
Mar 07 PHP
php 短链接算法收集与分析
Dec 30 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
Sep 29 PHP
PHP递归实现层级树状展开
Apr 01 PHP
基于Swoole实现PHP与websocket聊天室
Aug 03 PHP
PHP插件PHPMailer发送邮件功能
Feb 28 PHP
Laravel下生成验证码的类
Nov 15 PHP
PHP守护进程化在C和PHP环境下的实现
Nov 21 PHP
PHP Ajax跨域问题解决方案代码实例
Aug 01 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学习笔记之数组篇
2011/06/28 PHP
无法载入 mcrypt 扩展,请检查 PHP 配置终极解决方案
2011/07/18 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
实例分析10个PHP常见安全问题
2019/07/09 PHP
js 表格隔行颜色
2009/12/02 Javascript
javascript hashtable 修正版 下载
2010/12/30 Javascript
JS中处理与当前时间间隔的函数代码
2012/05/23 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
vue短信验证性能优化如何写入localstorage中
2018/04/25 Javascript
JavaScript实现邮箱后缀提示功能的示例代码
2018/12/13 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
百度小程序自定义通用toast组件
2019/07/17 Javascript
vue中npm包全局安装和局部安装过程
2019/09/03 Javascript
vue中 v-for循环的用法详解
2020/02/19 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
python opencv读mp4视频的实例
2018/12/07 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
Web前端页面跳转并取到值
2017/04/24 HTML / CSS
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
MySQL面试题
2014/01/12 面试题
职称评定自我鉴定
2014/03/18 职场文书
2014社区三八妇女节活动方案
2014/03/30 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
实习介绍信模板
2015/01/30 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS
MySQL慢查询的坑
2021/04/28 MySQL
pytorch fine-tune 预训练的模型操作
2021/06/03 Python
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL