您的位置:首页 > 其它

生成图片验证码类

2016-05-27 19:52 260 查看
<?php

//验证码类

class ValidateCode {

private $charset = 'abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ23456789';//随机因子

private $code;//验证码

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

private $width = 80;//宽度

private $height = 36;//高度

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

private $font;//指定的字体

private $fontsize = 18;//指定字体大小

private $fontcolor;//指定字体颜色

//构造方法初始化

public function __construct() {

$this->font = dirname(__FILE__). '/pChart/fonts/Bedizen.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),$_x*$i+mt_rand(1,5),$this->height / 1.4,$this->fontcolor,$this->font,$this->code[$i]);

}

}

//生成线条、雪花

/*private function createLine() {

//线条

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->height),mt_rand(0,$this->width),mt_rand(0,$this->height),$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 doimg() {

$this->createBg();

$this->createCode();

//$this->createLine();

$this->createFont();

$this->outPut();

}

//获取验证码

public function getCode() {

return strtolower($this->code);

}

}
session_start();

$_vc = new ValidateCode();

$_vc->doimg();

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


?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  web 验证码