thinkphp3.2 验证码的生成和校验,以及遇到的一些问题

      已经自学了三个月的php了,感觉好像什么都了解了一点,又还是什么都不会。归根结底还是不怎么总结和做记录的原因吧   每天都会遇到问题,有时候折腾个半天一天的就解决了,时间一久又会忘记,碰到相同的问题又是懵比。

相比起学习新的知识,对于之前学过的用过的东西总结我想更为的重要一些吧。

      最近利用thinkphp做了一个简单的后台内容管理程序,可以对数据库进行数据的增删改查,可以将midi文件上传,将下载链接保存到数据库中。将数据库中表数据读取生成xml文件 以供 app开发人员调用。

      下面是我在做后台登陆验证码的刷新校验时遇到的一个比较常见的问题。

      1、验证码的生成

      2、前台点击即使刷新

      3、登录提交时 ajax+jquery会进行二次验证,此时会一直提示验证码错误的问题。

      贴出代码。

 1                 //显示验证码
 2         public function verify(){
 3                 $config = array(
 4                 ‘imageW‘=>100,
 5                 ‘imageH‘=>26,
 6                 ‘fontSize‘=>14,
 7                 ‘length‘=>4,
 8                 ‘useNoise‘=>false,
 9                 ‘codeSet‘=>‘0123456789‘,
10             );
11             $Verify = new \Think\Verify($config);
12             $Verify->entry();
13         }   
          <th>验证码:</th>
                    <td>
                        <input type="code" class="len250" name="code"/>
                        <img src="{:U(‘verify‘)}" alt="验证码" id="code" onclick="this.src = this.src + ‘?‘"/>
                    </td>
1         //校验验证码  写在Common/Common/function.php 里边,在控制器校验验证码时调用
2     function check_verify($code,$id = ""){
3         $verify = new \Think\Verify();
4         return $verify->check($code,$id);
5     }
1         //异步校验验证码
2     public function checkcode(){
3         $code = I(‘post.code‘);
4         if(check_verify($code)===false){
5             echo 0;
6         }else{
7             echo 1;
8         }
9     }
 1         //jquery 验证验证码
 2     $("input[name=‘code‘]").blur(function(){
 3         var code = $("input[name=‘code‘]");
 4         if(code.val().trim()==‘‘){
 5             code.parent().find("span").remove().end().append("<span class=‘error‘>验证码不能为空</span>");
 6             return ;
 7         }
 8         $.post(CONTROL+"/checkcode",{code:code.val().trim()},function(stat){
 9             if(stat==1){
10                 validate.code=0;
11                 code.parent().find("span").remove();
12                 return;
13             }else{
14                 code.parent().find("span").remove().end().append("<span class=‘error‘>验证码错误</span>");
15                 return;
16             }
17
18         })
19     })            
1      <script type="text/javascript" src="__PUBLIC__/js/jquery-1.7.2.min.js"></script>
2         <script type="text/javascript" src="__PUBLIC__/js/login.js"></script>
3         <script>
4             var  CONTROL = "__APP__/home/Login";
5         </script>

    在写完以上代码的时候,验证码就可以显示并且即使验证了。

    但是这个时候会出现前文提到的第三个问题,在点击提交submit的时候,会进行二次验证,此时会提示验证码错误。

    其实原因还是出在Thinkphp的Verify.class.php上:

 1 // 中文验证码字符串
 2         ‘useImgBg‘  =>  false,           // 使用背景图片
 3         ‘fontSize‘  =>  25,              // 验证码字体大小(px)
 4         ‘useCurve‘  =>  true,            // 是否画混淆曲线
 5         ‘useNoise‘  =>  true,            // 是否添加杂点
 6         ‘imageH‘    =>  0,               // 验证码图片高度
 7         ‘imageW‘    =>  0,               // 验证码图片宽度
 8         ‘length‘    =>  5,               // 验证码位数
 9         ‘fontttf‘   =>  ‘‘,              // 验证码字体,不设置随机获取
10         ‘bg‘        =>  array(243, 251, 254),  // 背景颜色
11         ‘reset‘     =>  false,           // 验证成功后是否重置
12         );

      最后一个reset 默认是true,只需要改为false 就不会出现这个问题了。

时间: 2024-12-25 05:02:12

thinkphp3.2 验证码的生成和校验,以及遇到的一些问题的相关文章

ImageUtil(验证码数据生成工具类)

登录界面时,常常会使用到验证码图片生成,程序如下: package util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.

Android开发中验证码的生成

近期在做电商金融类的项目,验证码的生成方法不可缺少.先学习了一种.经过測试好用.从别处学习的代码,稍修改了一下可选择是否支持识别大写和小写.直接上代码. import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.EditText; import android.wid

ASP.NET中登陆验证码的生成和输入验证码的验证

一:验证码的生成实现代码 protected void Page_Load(object sender, EventArgs e)    {        string validateCode = CreateValidateCode();//生成验证码         Bitmap bitmap = new Bitmap(imgWidth, imgHeight);//生成Bitmap图像         DisturbBitmap(bitmap); //图像背景         DrewVa

web开发(八)之验证码的生成

验证码的生成: public class CheckImg extends ActionSupport{ @Override public String execute() throws Exception { // TODO Auto-generated method stub int width = 120; int height = 30; // 步骤一 绘制一张内存中图片 BufferedImage bufferedImage = new BufferedImage(width, hei

轻松学会网页中验证码的生成(JAVA)

验证码生成的基本流程 1.验证码的生成,我们能够看到是用Graphics对象画出来的.对象我们必须要获得Graphics对象 1-1,Graphics对象的获取,要通过BufferedImage获得 <span style="font-size:18px;">int width=100;//确定框框的大小 int height=40; BufferedImage bfi =new BufferedImage(width, height, BufferedImage.TYPE

struts2中验证码的生成和使用

第一步生产字符串: package com.yancode.demo; import java.util.Arrays; /* * 一步一步来,要生成验证码图片,首先要有验证码,然后才能在画在图片上.为了能够灵活控制验证码, * 特别编写了SecurityCode类,它向外提供随机字符串.并且可以控制字符串的长度和难度. * SecurityCode类中提供的验证码分三个难度,易(全数字).中(数字+小写英文).难(数字+大小写英文). * 难度使用枚举SecurityCodeLevle表示,避

汉字验证码的生成与使用

首先新建一个生成随机汉字验证码的servet DrawImage.class package xwcms.net.service; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Ran

随机图片验证码的生成

Python生成随机验证码,需要使用PIL模块. 安装: 1 pip3 install pillow 基本使用 1. 创建图片 1 2 3 4 5 6 7 8 9 from PIL import Image img = Image.new(mode='RGB', size=(120, 30), color=(255, 255, 255))   # 在图片查看器中打开 # img.show()   # 保存在本地 with open('code.png','wb') as f:     img.s

验证码画布生成以及点击图片切换验证码

//这个验证码画布生成是师兄写的,不是本人写的 1 package com.didinx.common; 2 3 import javax.imageio.ImageIO; 4 import javax.servlet.ServletException; 5 import javax.servlet.annotation.WebServlet; 6 import javax.servlet.http.HttpServlet; 7 import javax.servlet.http.HttpSer