php生成数字验证码,php生成字符数字、文字、算术验证码

【实例简介】直接运行 各个目录下的 validateCode.php文件 即可查看效果

【实例截图】

字符验证码如下:

0f1854ef26130b2046e43acf6da494f5.png

算术验证码如下;

92f03d826a8f82ac2259eb8c8694d6fc.png

1720d82bf816e0a2023790d461e91001.png

文字验证码如下:

c9d4b156f17a9f19a9bacac5f63fe69e.png

42b769ac38e250d7234fa9243da119ab.png

【核心代码】

class ValidateCode

{

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

public $code;//验证码

private $codelen;//验证码长度

private $width;//宽度

private $height;//高度

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

private $font;//指定的字体

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

//构造方法初始化

public function __construct ($width = 130, $height = 50, $codelen = 4,$fontsize = 20)

{

$this->font = './Elephant.ttf';//注意字体路径要写对,否则显示不了图片

$this->codelen = $codelen;

$this->height = $height;

$this->width = $width;

$this->fontsize = $fontsize;

$this->createCode();

}

//生成随机码

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 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 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 outPut()

{

header('Content-type:image/png');

imagepng($this->img);

imagedestroy($this->img);

}

//对外生成

public function doimg()

{

$this->createBg();

$this->createLine();

$this->createFont();

$this->outPut();

}

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值