thinkPHP框架实现的短信接口验证码功能示例

本文实例讲述了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' );
        }
      }
  }

各种效果图:

附件

短信宝url:http://www.cocsms.com/

直接注册一个帐号,弹出让你用一条短信测试的不要测试,不然会损失一条。

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

(0)

相关推荐

  • thinkphp验证码显示不出来的解决方法

    php的配置文件php.ini,搜索extension=php_gd2.dll,去掉前面的分号即可: 1.在模块类中增加一个 verify 方法来用于显示验证码 复制代码 代码如下: Public function verify(){    // 导入Image类库    import("ORG.Util.Image");    Image::buildImageVerify();} 2.表单中使用验证码 复制代码 代码如下: <input type="text&quo

  • thinkPHP中验证码的简单使用方法

    本文实例讲述了thinkPHP中验证码的简单使用方法.分享给大家供大家参考,具体如下: 首先生成验证码,在action文件中,直接调用thinkphp中提供的方法即可生成,确保开启php的扩展 gd2 如下: class UserAction Model extends Model { /** * 显示验证码信息 */ public function verify() { ob_clean(); // 清空(擦掉)输出缓冲区 ,也就是清空前面的输出,通常情况下验证码不显示,可考虑这个问题 imp

  • Thinkphp实现短信验证注册功能

    前言 注册时经常需要用到短信验证码,本文记录一下思路和具体实现. 短信验证平台使用云片,短信验证码的生成使用thinkphp. 思路 1.用户输入手机号,请求获取短信验证码. 2.thinkphp生成短信验证码,存储,同时和其他参数一起发送请求给云片. 3.云片发送短信验证码到指定手机号. 4.用户输入短信验证码. 5.thinkphp根据验证码是否正确.验证码是否过期两个条件判断是否验证通过. 代码实现 验证接口 接口地址:https://sms.yunpian.com/v1/sms/send

  • thinkphp自带验证码全面解析

    前端页面: <div style="position:absolute;z-index:3;top:160px;left:180px;"> <img style="cursor:pointer; " src="{:U('Verify')}" onclick="this.src=this.src+'?'+Math.random()" id="safecode" style="hei

  • ThinkPHP验证码和分页实例教程

    本文实例讲述了ThinkPHP常用的两个功能:验证码与分页.在ThinkPHP的项目开发中非常常见,具有很高的实用价值.完整实例分享给大家,供大家参考.具体如下: 一.验证码: 导入验证码类,在aoli\ThinkPHP\Lib\ORG\Util\Image.class.php里有验证码方法 1.英文验证码: buildImageVerify($length,$mode,$type,$width,$height,$verifyName) 参数如下: length :验证码的长度,默认为 4 位数

  • thinkPHP3.2.3实现阿里大于短信验证的方法

    注册并登录阿里云 点击控制台后–>鼠标滑到你的用户名称(右边倒数第二个)–>点击accesskeys–>获取 点击控制台后–>产品与服务–>云计算基础服务–>云通信–>短信服务 如果没有送测试短信签名和模板–>添加签名–>添加模板 下载SDK https://help.aliyun.com/document_detail/55359.html?spm=5176.doc55451.6.569.0uXt4J 进入后选择PHP,会得到dysmsapi_dem

  • ThinkPHP3.2.1图片验证码实现方法

    本文实例讲述了ThinkPHP3.2.1图片验证码实现方法.分享给大家供大家参考,具体如下: 今天用到图片验证码的功能,在网上找到ThinkPHP的以下代码: Public function verify(){ import('think.Image'); Image::buildImageVerify(); } 添加到Controller中,通过地址"http://localhost/index.php/passport/index/verify"来访问,却提示以下错误: Class

  • ThinkPHP验证码使用简明教程

    一.首先需要在控制器中加入验证码方法admin/Lib/Action/LoginAction.class.php知识点:1.ob_clean函数用途2.import方法调用think默认类库3.Image类buildImageVerify方法使用 代码如下: 复制代码 代码如下: Public function verify(){ ob_clean(); //ob_clean函数 清空先前输出 import('ORG.Util.Image'); //import调用的是message/Think

  • thinkphp3.2点击刷新生成验证码

    再介绍thinkphp3.2验证码的使用方法之前,先为大家详细介绍ThinkPHP 验证码,具体内容如下 ThinkPHP 内置了验证码的支持,可以直接使用.要使用验证码,需要导入扩展类库中的 ORG.Util.Image 类库和 ORG.Util.String 类库. 验证码方法 我们通过在在模块类中增加一个 verify 方法来用于显示验证码,最简单的例子: Public function verify(){ // 导入Image类库 import("ORG.Util.Image"

  • 详解ThinkPHP3.2.3验证码显示、刷新、校验

    ThinkPHP3.2.3验证码显示.刷新.校验 ,具体如下: 显示验证码 首先在Home/Controller下创建一个公共控制器PublicController <?php namespace Home\Controller; use Think\Controller; use Think\Verify; class PublicController extends Controller { /* 生成验证码 */ public function verify() { $config = [

随机推荐