PHP验证码类实例

PHP验证码类实例

这篇文章主要介绍了一个好用的PHP验证码类实例,有需要的朋友可以参考一下

分享一个好用的php验证码类,包括调用示例。

说明:

如果不适用指定的字体,那么就用imagestring()函数,如果需要遇到指定的字体,就要用到imagettftext()函数。字体的位置在C盘下Windows/Fonts.

参考了网上的php 生成验证码的方法,以及php 图片验证码和php 中文验证码的生成方法。用到了PHP GD库的相关知识。

1,生成验证码的类 VerificationCode.class.php

代码如下:

<?php

class VerificationCode{

private $charset="abcdefghjkmnpqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ23456789"; //随机因子

private $code; //验证码

private $codelen=4; //验证码长度

private $width=110; //宽度

private $height=30; //高度

private $img; //图像资源句柄

private $font; //制定字体

private $fontSize=25; //字体大小

private $fontColor; //字体颜色

public function __construct(){

$this->font="CALIBRIZ.TTF";

}

//生成验证码

private function createCode(){

$len=strlen($this->charset)-1;

for ($i = 0; $i < $this->codelen; $i++) {

$this->code .= $this->charset[mt_rand(0,$len)];

}

}

//生成背景

private function createBg(){

$this->img=imagecreatetruecolor($this->width,$this->height);

$color = imagecolorallocate($this->img,mt_rand(157,255),mt_rand(157,255),mt_rand(157,255));

imagefilledrectangle($this->img,0,$this->height,$this->width,0,$color);

}

//生成文字

private function createFont(){

$x=$this->width/$this->codelen;

for ($i = 0; $i < $this->codelen; $i++) {

$this->fontColor=imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));

imagettftext($this->img,$this->fontSize,mt_rand(-30,30),$i*$x+mt_rand(1,5),$this->height/1.4,$this->fontColor,$this->font,$this->code[$i]); // www.jbxue.com

//imagestring($this->img,5,$i*$x+mt_rand(1,5),5,$this->code[$i],$this->fontColor);

}

}

//生成线条、雪花

private function createDisturb(){

for ($i = 0; $i < 6; $i++) {

$color=imagecolorallocate($this->img,mt_rand(0,156),mt_rand(0,156),mt_rand(0,156));

imageline($this->img,mt_rand(0,$this->width),mt_rand(0,$this->width),mt_rand(0,$this->width),mt_rand(0,$this->width),$color);

}

for ($i = 0; $i < 100; $i++) {

$color=imagecolorallocate($this->img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));

imagestring($this->img,mt_rand(1,5),mt_rand(0,$this->width),mt_rand(0,$this->height),'*',$color);

}

}

//输出

private function outPut(){

header("Content-Type:image/png");

imagepng($this->img);

imagedestroy($this->img);

}

public function showCode(){

$this->createBg();

$this->createCode();

$this->createDisturb();

$this->createFont();

$this->outPut();

}

//获取验证码

public function getCode(){

return strtolower($this->code);

}

}

?>

code.php

代码如下:

<?php

session_start();

require_once 'VerificationCode.class.php';

$code=new VerificationCode();

$_SESSION['code']=$code->getCode();

$code->showCode();

?>

验证码:<input type="text" name="code" /><img src="code.php" onclick="javascript:this.src='code.php?time='+Math.random();" />