Think_PHP验证码

本文介绍了在ThinkPHP框架中如何使用内置的验证码类生成和验证验证码。首先,通过import()方法加载验证码类库,然后通过静态方法设置验证码长度和模式。验证码可以是数字、字母或它们的组合。为了生成中文验证码,需要特定的中文字体。验证码在提交时会被保存在session中,并且在验证时需要进行MD5加密比对。文中还提供了示例代码,展示了如何在控制器中生成和验证验证码,以及前端如何刷新验证码图片。

1,验证码

ThinkPHP中已经封装好了验证码类,放到 ThinkPHP/Extends/Library/ORG/Util/  保存的是tp框架给我们封装好的一些类

 

如何使用这个验证码类:

(1)加载类库

之前说加载一个文件 require  require_once()

TP使用import()  这个方法有一个特点:

直接找到当前的类库目录

ThinkPHP中,有一个基类类库(ThinkPHP目录下面的Library目录)

同时还有一个当前项目的类库:项目的Lib目录

注意:在import方法中,以 .号代替 /

通过观察这个类库,我们发现这个类的方法大部分都是静态方法,根据之前复习的类与对象,只能通过类来调用静态方法

 

(2)实例化对象

(3)调用对象的方法

主要说一下验证码类的参数:

 

参数1,验证码的长度  字符个数

参数2,验证码的模式,以阿拉伯数字标记的,1代表生成的是数字类型的验证码,2,大写字母;3,小写字母;4,大小写混合;5,数字,大写,小写混合的验证码

 

(2)如何生成中文验证码

需要调用封装好的GBVerify()这个方法,但是需要保证类库中有中文字体

字体类型保存在 C/Windows/font\

(3)如何验证验证码是否正确

     1,验证码为什么要保存到session中?

 跨页面访问肯定要设计到数据的传输,从一个页面条到另外一个页面

  $_GET   $_POST

还可以通过session保存,session是保存到服务器端的

TP框架中,验证码也是保存到session中的,如何访问这个验证码呢?

$verifyName 就是保存到session中的验证码名称

$_SESSION[‘verify’]

2,而且该验证码还是通过MD5加密的

因为session中的验证码已经加密,如果提交过来的验证码不md5加密的话,会提示验证码错误

 

 

代码:

public function verify(){
  import('ORG.Util.Image');//加载类库
  ob_end_clean();//不出图片,添上就出了
 Image::buildImageVerify();
   //Image::GBverify();//生成中文验证码,在Image.class.php中文验证码那改成想要的字体,把字体复制到与它同级目录下
 
}
//验证码验证案例,点击刷洗沿着码
public function reg(){
 $this->display();
 }
public function validate(){                          
 if($_SESSION['verify'] !=md5($_POST['verify'])){//因为session中的验证码已经加密,如果提交过来的验证码不md5加密的话,会提示验证码错误,$_SESSION['verify']中的verify并不是因为验证码框的name是verify,session保存的是verify函数,
  $this->error('验证码不正确','__URL__/reg');
  }else{
  $this->success('正确','__URL__/reg');
   }
 }
 

<form action='__APP__/Admin/Common/validate' method='post'>
用户名:<input type='text' name='username'><br>
密码:<input type='password'name='password'><br>
验证码:<input type='text' name='verify'><img src='__URL__/verify' style="cursor:pointer" onclick='shua(this)'><!--引入验证码__APP__/Common--><br>
<input type='submit'>
</form>
<script>

function shua(obj){
obj.src='__URL__/verify/random/'+Math.random();//点击刷新,重新加载验证码文件

}

</script>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值