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

背景:之前说的自己做的项目,偷懒登录模块没加验证码,想了想还是加上,找了下tp的文档,发现是有整合进去的,特记录下。

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

[php] view plaincopy

  1. /** 
  2.  *  
  3.  * 验证码生成 
  4.  */  
  5. public function verify_c(){  
  6.     $Verify = new \Think\Verify();  
  7.     $Verify->fontSize = 18;  
  8.     $Verify->length   = 4;  
  9.     $Verify->useNoise = false;  
  10.     $Verify->codeSet = ‘0123456789‘;  
  11.     $Verify->imageW = 130;  
  12.     $Verify->imageH = 50;  
  13.     //$Verify->expire = 600;  
  14.     $Verify->entry();  
  15. }  

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

[html] view plaincopy

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

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

[javascript] view plaincopy

  1. // 验证码生成  
  2. var captcha_img = $(‘#captcha-container‘).find(‘img‘)  
  3. var verifyimg = captcha_img.attr("src");  
  4. captcha_img.attr(‘title‘, ‘点击刷新‘);  
  5. captcha_img.click(function(){  
  6.     if( verifyimg.indexOf(‘?‘)>0){  
  7.         $(this).attr("src", verifyimg+‘&random=‘+Math.random());  
  8.     }else{  
  9.         $(this).attr("src", verifyimg.replace(/\?.*$/,‘‘)+‘?‘+Math.random());  
  10.     }  
  11. });  

四、校验验证码输入是否正确

a.在common目录下的function.php里加入全局函数

[php] view plaincopy

  1. /** 
  2.  * 验证码检查 
  3.  */  
  4. function check_verify($code, $id = ""){  
  5.     $verify = new \Think\Verify();  
  6.     return $verify->check($code, $id);  
  7. }  

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

[php] view plaincopy

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

到此tp3.2验证码的使用就可以了。

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

时间: 2024-11-06 11:23:05

thinkphp3.2 验证码生成和点击刷新验证码的相关文章

.net图片验证码生成、点击刷新及验证输入是否正确

①创建ValidateCode.aspx,在ValidateCode.aspx.cs中加入如下代码.生成验证码图片,在页面上输出,输出jpeg格式. protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Bitmap b = new Bitmap(80, 30);// 图片大小 Graphics g = Graphics.FromImage(b);// 对图片操作 g.Clear(Color.Gray)

yourphp点击刷新验证码

加入css <script type="text/javascript" src="./Public/Js/my.js"></script>  没有这段js的话,无法刷新验证码 html代码 <div class="f3"><input name="verifyCode" id="verifyCode" size="7" value="

[oldboy-django][2深入django]点击刷新验证码

# 点击更新验证码,只要重新在发送一个请求即可 <img src="/check_code/" onclick="updateCode(this);" width="150px" height="34px" title="点击刷新验证码"> function updateCode(ths) { ths.src = ths.src + '?' } /check_code/ 和/check_code

点击刷新验证码

<img id="yanzm" src="{:U('verify')}" alt="验证码" class="verify" style="margin-left: 10px;float: left;" onmouseup="RefreshImage()"/>                    <script  language ="javascript&q

jsp中生成的验证码和存在session里面的验证码不一致的处理

今天在调试项目的时候发现,在提交表单的时候的验证码有问题,问题是这样的:就是通过debug模式查看得知:jsp页面生成的验证码和表单输入的页面输入的一样,但是到后台执行的时候,你会发现他们是不一样的,现在上图看看: 1.这是表单提交的时候: 2.这是后台得到的生成的验证码: 3.这是后台得到输入的验证码: 这样的问题还是头一次出现,以前没遇到过,经过google,baidu,最后得知是这样的:因为加载jsp页面比加载session快一些 那怎么办才能解决这个办法呢, 又经过多次搜索,思考,实践,

ThinkPHP3.2 点击看不清刷新验证码

欢迎使用Markdown编辑器写博客 baidu了一下.发现没有可用的源码,自己想了想,以下的方法可行. <!DOCTYPE html> <html> <head> <title>点击刷新后自己主动刷新验证码</title> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script type=&qu

CI 点击图片刷新验证码

<img src="<?php echo site_url('home/login/code'); ?>" onclick= this.src="<?php echo site_url('home/login/code').'/'?>"+Math.random() /> CI 点击图片刷新验证码,布布扣,bubuko.com

Jquery插件 防刷新倒计时 “点击获取验证码后60秒内禁止重新获取

Jquery插件实现"点击获取验证码后60秒内禁止重新获取(防刷新)" 效果图: 先到官网(http://plugins.jQuery.com/cookie/)下载cookie插件,放到相应文件夹,代码如下: 1 <style type="text/css"> 2 * {margin: 0; 3 padding: 0; 4 font-family: "Microsoft Yahei"; 5 } 6 .captcha-box { 7 w

关于 yii 验证码显示, 但点击不能刷新的处理

先说说 render 与 renderPartial, 各位看官, 先别走, 我没跑题, 这个问题如果需要解决, 关键就在 render 与 renderPartial 的区别. renderPartial() 方法 public string renderPartial(string $view, array $data=NULL, boolean $return=false, boolean $processOutput=false) $view string name of the vie