为什么我生成的验证码,始终不是4位验证码,求解!
<?php
/*** 验证码 ***/
require_once'string.func.php';
//通过GD库做验证码
function verifyImage($type=1, $length=4, $pixel=0, $line=0, $sess_name="verify"){
session_start();
//1. 创建画布
$width = 80;
$height = 28;
$image = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($image, 255 ,255 ,255);//白色填充画布
$black = imagecolorallocate($image, 0, 0, 0);
//2. 用填充矩形填充画布
imagefilledrectangle($image, 1, 1, $width-2, $height-2, $white);
//3. 获取随机验证码
$chars = buildRandomString($type, $length);
//4. 保存到session
$_SESSION[$sess_name] = $chars;
$fontfiles = array(
"CONSTANI.TTF",
"simfang.ttf",
"simhei.ttf",
"simkai.ttf",
"simsun.ttc",
"FZLTCXHJW.TTF",
);
//5. 生成验证码
for($i=0; $i<$length; $i++){
$size = mt_rand(14, 18);// 字体大小变化
$angle = mt_rand(-15, 15);// 倾斜角度变化
$x = 5 + $i * $size;// 位置变化
$y = mt_rand(20, 26);
// 随机字体
$fontfile = "../fonts/".$fontfiles[mt_rand(0, count($fontfiles)-1)];
// 随机字体颜色
$color = imagecolorallocate($image, mt_rand(50, 90), mt_rand(80, 200), mt_rand(90, 180));
$text = substr($chars, $i, 1);// 每次取一个字符
imagettftext($image, $size, $angle, $x, $y, $color, $fontfile, $text);
}
//6. 干扰点
if($pixel){
for($i=0; $i<50; $i++){
imagesetpixel($image, mt_rand(0, $width-1), mt_rand(0, $height-1), $black);
}
}
//7. 干扰线
if($line){
for($i=1; $i<$line; $i++){
$color = imagecolorallocate($image, mt_rand(50, 90), mt_rand(80,200), mt_rand(90,180));
imageline($image, mt_rand(0,$width-1), mt_rand(0,$height-1), mt_rand(0,$width-1), mt_rand(0,$height-1), $color);
}
}
ob_clean();
//8. 输出到服务端
header("content-type:image/gif");// 输出图片类型
imagegif($image);
imagedestroy($image);// 销毁图片内存
}
//verifyImage();