全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解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 = [
      'fontSize' => 19, // 验证码字体大小
      'length' => 4, // 验证码位数
      'imageH' => 34
    ];
    $Verify = new Verify($config);
    $Verify->entry();
  }

  /* 验证码校验 */
  public function check_verify($code, $id = '')
  {
    $verify = new \Think\Verify();
    $res = $verify->check($code, $id);
    $this->ajaxReturn($res, 'json');
  }
}

verify函数用于生成验证码,config是用来配置显示验证码的属性。该属性有哪些可配置项,可以查看Thinkphp/Library/Think/Verify.class.php文件,此处不再赘述。

check_verify函数用于校验验证码的正确性。模板post用户填写的验证码到该函数,返回$res==true验证通过false验证失败。
前台模板页建立index.html

 <div class="">
 <label for="j_verify" class="t">验证码:</label> <input id="j_verify"
 name="j_verify" type="text" class="form-control x in">
 <img id="verify_img" alt="点击更换" title="点击更换"
 src="{:U('public/verify',array())}" class="m">
 </div>

使用Thinkphp的U方法形成生成验证码的图片。

点击刷新验证码

从上面产生验证码的链接我们可以看出,域名/public/verify即可产生验证码。Thinkphp的验证码生成机制是,如若我们需要产生新的验证码,在该链接后加入一个变量值即可。

我们可以考虑实现public/verify/变量值的形式URL。

$("#verify_img").click(function() {
  var verifyURL = "public/verify";
  var time = new Date().getTime();
  $("#verify_img").attr({
   "src" : verifyURL + "/" + time
  });
});

利用JS获取当前时间戳加入到URL之后即可。

到此我们即可实现验证码的点击刷新功能。具体表现形式,自己随意哈。

异步校验验证码

大家一定见过在某些网站,我们输入验证码的时候,输入的过程中文本框后面一直显示错误,直到我们输入争取的时候会先提示验证码正确的形式。下面代码就可以实现:

$("#j_verify").keyup(function() {
  $.post("public/check_verify", {
    code : $("#j_verify").val()
    }, function(data) {
    if (data == true) {
      //验证码输入正确
    } else {
      //验证码输入错误
    }
  });
});

利用onekeyup。原理就不需要多讲了吧!

这样我们就可以实现在提交用户名密码之前先进行一次验证码校验,之后表单提交之后再进行一次校验,提升用户体验啦!

还没结束:

当我们采取以上形式实现验证码两次校验的时候,肯定会出现第一次异步校验成功,但是提交表单却提示验证码错误的情况!其实原因还是出在Thinkphp的Verify.class.php上:

以下是该类初始的config配置:

protected $config =  array(
    'seKey'   => 'ThinkPHP.CN',  // 验证码加密密钥
    'codeSet'  => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',       // 验证码字符集合
    'expire'  => 1800,      // 验证码过期时间(s)
    'useZh'   => false,      // 使用中文验证码 
    'zhSet'   => '……此处不粘贴了,太多了!',       // 中文验证码字符串
    'useImgBg' => false,      // 使用背景图片 
    'fontSize' => 25,       // 验证码字体大小(px)
    'useCurve' => false,      // 是否画混淆曲线
    'useNoise' => false,      // 是否添加杂点  
    'imageH'  => 0,        // 验证码图片高度
    'imageW'  => 0,        // 验证码图片宽度
    'length'  => 5,        // 验证码位数
    'fontttf'  => '',       // 验证码字体,不设置随机获取
    'bg'    => array(243, 251, 254), // 背景颜色
    'reset'   => true,      // 验证成功后是否重置
    );

请大家注意最后一个属性reset 表示的是验证成功后是否重置验证码。相信大家都明白了吧,我们进行第一次校验通过之后,其实该验证码已经失效了,只不过因为我们采取的是异步校验,页面并没有刷新,导致了第二次申请校验的时候和系统产生的已经是不相同的了。所以如果大家喜欢这种两次校验的风格,可以考虑将reset配置为false即可。

好了,基于Thinkphp3.2.3的验证码问题今天就总结到这了。只是大概说了一下实现方法,具体内容还请大家参考TP官方手册。如有错误之处,欢迎大家指出。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# thinkphp  # 验证码刷新  # 验证码  # thinkphp3.2  # ThinkPHP5.1验证码功能实现的示例代码  # ThinkPHP5&5.1实现验证码的生成、使用及点击刷新功能示例  # thinkphp5.1验证码及验证码验证功能的实现详解  # tp5(thinkPHP5框架)captcha验证码配置及验证操作示例  # thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法  # thinkPHP框架实现的短信接口验证码功能示例  # thinkPHP实现的验证码登录功能示例  # thinkPHP中验证码的简单实现方法  # thinkphp自带验证码全面解析  # Thinkphp极验滑动验证码实现步骤解析  # 的是  # 两次  # 表单  # 就可以  # 好了  # 还没  # 变量值  # 大家都  # 说了  # 如有  # 之处  # 见过  # 请大家  # 我们可以  # 欢迎大家  # 要多  # 可以看出  # 当我们  # 不需 


相关文章: 定制建站价位费用解析与套餐推荐全攻略  兔展官网 在线制作,怎样制作微信请帖?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  网站制作话术技巧,网站推广做的好怎么话术?  大连网站制作公司哪家好一点,大连买房网站哪个好?  Bpmn 2.0的XML文件怎么画流程图  Swift中switch语句区间和元组模式匹配  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  如何在香港免费服务器上快速搭建网站?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  如何有效防御Web建站篡改攻击?  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  如何快速生成橙子建站落地页链接?  如何撰写建站申请书?关键要点有哪些?  临沂网站制作企业,临沂第三中学官方网站?  焦点电影公司作品,电影焦点结局是什么?  导航网站建站方案与优化指南:一站式高效搭建技巧解析  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  如何快速上传建站程序避免常见错误?  网站制作企业,网站的banner和导航栏是指什么?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何挑选高效建站主机与优质域名?  如何快速生成凡客建站的专业级图册?  ,怎么在广州志愿者网站注册?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  宝塔建站助手安装配置与建站模板使用全流程解析  建站之星如何优化SEO以实现高效排名?  建站OpenVZ教程与优化策略:配置指南与性能提升  如何在阿里云域名上完成建站全流程?  如何制作网站标识牌,动态网站如何制作(教程)?  建站之星在线客服如何快速接入解答?  动图在线制作网站有哪些,滑动动图图集怎么做?  php json中文编码为null的解决办法  建站上传速度慢?如何优化加速网站加载效率?  创业网站制作流程,创业网站可靠吗?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  如何批量查询域名的建站时间记录?  如何快速搭建个人网站并优化SEO?  建站之星安装需要哪些步骤及注意事项?  如何用景安虚拟主机手机版绑定域名建站?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  建站之星安装失败:服务器环境不兼容?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何通过山东自助建站平台快速注册域名?  c# await 一个已经完成的Task会发生什么  婚礼视频制作网站,学习*后期制作的网站有哪些?  ,怎么用自己头像做动态表情包?  如何配置IIS站点权限与局域网访问? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。