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 相关文章推荐
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
PHP中的MYSQL常用函数(php下操作数据库必备)
Sep 12 PHP
paypal即时到账php实现代码
Nov 28 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
Apr 10 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
Sep 11 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
Jan 30 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
Mar 06 PHP
PHP如何通过表单直接提交大文件详解
Jan 08 PHP
php+mysql开发中的经验与常识小结
Mar 25 PHP
laravel 解决paginate查询多个字段报错的问题
Oct 22 PHP
php将字符串转换为数组实例讲解
May 05 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数组的概述及分类与声明代码演示
2013/02/26 PHP
php二维数组排序详解
2013/11/06 PHP
php 使用array函数实现分页
2015/02/13 PHP
PHP实现图片上传并压缩
2015/12/22 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
尽可能写&quot;友好&quot;的&quot;Javascript&quot;代码
2007/01/09 Javascript
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
jquery插件EasyUI中form表单提交实例分享
2016/01/11 Javascript
jQuery实现的跨容器无缝拖动效果代码
2016/06/21 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
jQuery实现全选、反选和不选功能
2017/08/16 jQuery
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
2018/09/17 Javascript
详解vue-router 动态路由下子页面多页共活的解决方案
2019/12/22 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
JavaScript实现网页下拉菜单效果
2020/11/20 Javascript
Vue项目中使用mock.js的完整步骤
2021/01/12 Vue.js
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
使用70行Python代码实现一个递归下降解析器的教程
2015/04/17 Python
Python通过OpenCV的findContours获取轮廓并切割实例
2018/01/05 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
《猴子种果树》教学反思
2014/04/26 职场文书
学校课外活动总结
2014/05/08 职场文书
答谢会策划方案
2014/05/12 职场文书
工程项目经理任命书
2014/06/05 职场文书
迎国庆演讲稿
2014/09/05 职场文书
护士2014年终工作总结
2014/11/11 职场文书
检讨书模板大全
2015/05/07 职场文书
员工辞职信范文大全
2015/05/12 职场文书
2016年清明节寄语
2015/12/04 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书