加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 03:08:33 所属栏目:PHP教程 来源:网络整理
导读:《:thinkphp3.2点击刷新生成验证码》要点: 本文介绍了:thinkphp3.2点击刷新生成验证码,希望对您有用。如果有疑问,可以联系我们。 再介绍thinkphp3.2验证码的使用办法之前,先为大家详细介绍ThinkPHP 验证码,具体内容如下 PHP实战 ThinkPHP 内置了验证码

《:thinkphp3.2点击刷新生成验证码》要点:
本文介绍了:thinkphp3.2点击刷新生成验证码,希望对您有用。如果有疑问,可以联系我们。

再介绍thinkphp3.2验证码的使用办法之前,先为大家详细介绍ThinkPHP 验证码,具体内容如下PHP实战

ThinkPHP 内置了验证码的支持,可以直接使用.要使用验证码,需要导入扩展类库中的 ORG.Util.Image 类库和 ORG.Util.String 类库.
验证码办法
我们通过在在模块类中增加一个 verify 办法来用于显示验证码,最简单的例子:
PHP实战

Public function verify(){
  // 导入Image类库
  import("ORG.Util.Image");
  Image::buildImageVerify();
}

import 办法是 ThinkPHP 内置的类库和文件导入办法,上例导入的文件为 ThinkPHP 系统目录下 Lib/ORG/Util/Image.class.php 文件.如果已经将 Image 类库拷贝到了当前项目下,如 Lib/ORG 下,则可以以:
PHP实战

import("@.Util.Image");

import 方法是 ThinkPHP 内置的类库和文件导入方法,上例导入的文件为 ThinkPHP 系统目录下 Lib/ORG/Util/Image.class.php 文件.
拜访验证码
可以直接在浏览器里拜访该验证码方法以确定验证码是否能正常显示:
http://127.0.0.1/index.php/Public/verify
如果一切正常,显示验证码如下所示:
PHP实战

PHP实战

表单中使用验证码
在表单页面中使用验证码,是以 html img标签 来调用:
PHP实战

<input type="text" name="verify">
<img id="verifyImg" src="-Article-verify" onClick="changeVerify()" title="点击刷新验证码" />

src 属性值即为验证码方法拜访地址,视实际情况不同而不同.
验证码刷新
当点击验证码图片时,触发 JavaScript changeVerify() 函数重新读取验证码,从而实现验证码刷新.该函数参考如下:
PHP实战

<script language="JavaScript">
function changeVerify(){
 var timenow = new Date().getTime();
 document.getElementById('verifyImg').src='-Article/verify/'+timenow; 
}
</script>

验证码验证
在调用验证码 verify 的时候,buildImageVerify 会记录本次验证码的 MD5 信息.在表单验证操作里,以如下办法来检查验证码是否正确:
PHP实战

if($_SESSION['verify'] != md5($_POST['verify'])) {
  $this->error('验证码错误!');
}

其中 $_SESSION['verify'] 中的 verify 名称为 buildImageVerify 办法默认 SESSION 注册名称,具体见 buildImageVerify 语法.
上面例子演示了最简单的 ThinkPHP 验证码的使用办法.上面的例子验证码是 4 位数字,如果想使用更多风格的验证码以及中文验证码,参见本节其余部分内容:《ThinkPHP 使用不同风格及中文的验证码》.
验证码不显示原因
如下发现无法显示验证码,可能的原因如下:
1、PHP 是否已经安装 GD 库支持.
2、输出之前是否有任何的输出(尤其是 UTF8 的 BOM 头信息输出).
3、Image 类库是否正确导入.
4、如果是表单页面,请查看是否正确调用了验证码显示办法.PHP实战

下面就为大家介绍 thinkphp3.2 验证码生成和点击刷新验证码的实现办法,具体内容如下PHP实战

一、实例化生成验证码的类(该方法放到IndexController里面便于拜访)
PHP实战

/** 
 * 
 * 验证码生成 
 */ 
public function verify_c(){ 
  $Verify = new ThinkVerify(); 
  $Verify->fontSize = 18; 
  $Verify->length  = 4; 
  $Verify->useNoise = false; 
  $Verify->codeSet = '0123456789'; 
  $Verify->imageW = 130; 
  $Verify->imageH = 50; 
  //$Verify->expire = 600; 
  $Verify->entry(); 
} 

二、前台需要生成验证码的图片src属性指向
PHP实战

<p class="top15 captcha" id="captcha-container"> 
 <input name="verify" width="50%" height="50" class="captcha-text" placeholder="验证码" type="text">         
 <img width="30%" class="left15" height="50" alt="验证码" src="{:U('Home/Index/verify_c',array())}" title="点击刷新"> 
</p> 

三、写完上面的后,页面初始化的验证码就可以出现了,下面要写的就是点击验证码图片后,刷新出新的验证码图片(通过jquery修改图片的src属性来完成,哀求的处理函数一样,只是在哀求后加一个随机数,区别上一张图片的哀求)
PHP实战

// 验证码生成 
var captcha_img = $('#captcha-container').find('img') 
var verifyimg = captcha_img.attr("src"); 
captcha_img.attr('title','点击刷新'); 
captcha_img.click(function(){ 
  if( verifyimg.indexOf('?')>0){ 
    $(this).attr("src",verifyimg+'&random='+Math.random()); 
  }else{ 
    $(this).attr("src",verifyimg.replace(/?.*$/,'')+'?'+Math.random()); 
  } 
}); 

四、校验验证码输入是否正确
a.在common目录下的function.php里加入全局函数
PHP实战

/** 
 * 验证码检查 
 */ 
function check_verify($code,$id = ""){ 
  $verify = new ThinkVerify(); 
  return $verify->check($code,$id); 
} 

b.在表单提交的controller对应的处理办法里添加检查代码
PHP实战

// 检查验证码 
$verify = I('param.verify',''); 
if(!check_verify($verify)){ 
  $this->error("亲,验证码输错了哦!",$this->site_url,9); 
} 

到此tp3.2验证码的使用就可以了.
补充:我在写的时候将四的b步骤放到一个ajax里验证,返回一次检验结果.然后再依据返回结果确定是否要提交表单,但是在验证码通过第一次的校验后,第二次的就不可以了,目前还没想明白原因.PHP实战

这就是本文的全部内容,文章最后还有一个小小的疑问,希望大家可以想出解决方法,也希望本文对大家的学习有所帮助.PHP实战

《:thinkphp3.2点击刷新生成验证码》是否对您有启发,欢迎查看更多与《:thinkphp3.2点击刷新生成验证码》相关教程,学精学透。编程之家 52php.cn为您提供精彩教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读