个性化验证码php,PHP 生成图像验证码,个性化参数

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

strlen($chars)) {

exit("字符串长度不够");

}

// 随机地打乱字符串中的所有字符:

$chars = str_shuffle($chars);

// 截取字符串

return substr($chars, 0, $length);

}

// 使用GD库做验证码

function verifyImage($type = 1, $length = 4, $pixel = 1, $line = 0) {

// session_start();

$width = 100; // 画布宽

$height = 40; // 画布高

$image = imagecreatetruecolor($width, $height); // 创建验证码画布

$black = imagecolorallocate($image, 0x00, 0x00, 0x00);

$green = imagecolorallocate($image, 0x00, 0xFF, 0x00);

$blue = imagecolorallocate($image, 0x00, 0x00, 0xFF);

$white = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);

$random_color = imagecolorallocate($image, mt_rand(0, 200), mt_rand(0, 200), mt_rand(0, 200)); // 随机颜色

$fontfiles = array("FZSTK.TTF", "msyh.ttc", "msyhbd.ttc", "msyhl.ttc", "simsun.ttc", "SIMYOU.TTF", "STXINGKA.TTF"); // 随机字体

// 矩形区域着色

imagefill($image, 0, 0, $white);

// imagefilledrectangle($image, 0, 0, $width, $height, $white);

// 产生一个随机字符串

// $type = 1; // 验证码类型

// $length = 4; // 验证码长度

$chars = buildRandomString($type, $length);

// 保存字符串,以待验证

$sess_name = "verify";

$_SESSION[$sess_name] = $chars;

// 将字符串写到图片中

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

$size = mt_rand(20, 25); // 字符字号大小

$angle = mt_rand(- 15, 15); // 旋转角度

$x = 5 + $i * $size; // x y 两参数为文字的坐标值 (原点为左上角)

$y = mt_rand(28, 38);

$color = $random_color;

$fontfile = "../fonts/" . $fontfiles[mt_rand(0, count($fontfiles) - 1)];

$text = substr($chars, $i, 1);

imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text); // 写 TTF 文字到图中。

}

// 加入噪点干扰(可选)

// $pixel = true;

if ($pixel) {

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

imagesetpixel($image, mt_rand(0, $width), mt_rand(0, $height), $black);

imagesetpixel($image, mt_rand(0, $width), mt_rand(0, $height), $green);

imagesetpixel($image, mt_rand(0, $width), mt_rand(0, $height), $blue);

}

}

// 加入直线干扰(可选)

// $line = false;

if ($line) {

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

imageline($image, mt_rand(0, $width), mt_rand(0, $height), mt_rand(0, $width), mt_rand(0, $height), $black);

imageline($image, mt_rand(0, $width), mt_rand(0, $height), mt_rand(0, $width), mt_rand(0, $height), $green);

imageline($image, mt_rand(0, $width), mt_rand(0, $height), mt_rand(0, $width), mt_rand(0, $height), $blue);

}

}

// 输出验证码

ob_clean();

header("content-type: image/png");

imagepng($image);

imagedestroy($image);

}

verifyImage(1, 4, 1, 0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值