做的验证码可以显示干扰线和点但是数字显示不出来,望大神帮忙看一下,谢谢
<?php require_once 'string.func.php'; function verifyImage($type=1,$length=4,$pixel=40,$line=20,$sess_name = "verify"){ $sess_name = "verify"; session_start(); $width = 200; $height = 100; $image = imagecreatetruecolor($width, $height); $white = imagecolorallocate($image,255,255,255); $black = imagecolorallocate($image, 0, 0, 0); imagefilledrectangle($image, 1, 1,$width-2,$height-2, $white); $chars =getString ( $type, $length ); $_SESSION [$sess_name] = $chars; $fontfiles = array("consola.ttf","consolaz.ttf"); 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 = "../font/" . $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 ); } if ($pixel) { for($i = 0; $i < 50; $i ++) { imagesetpixel ( $image, mt_rand ( 0, $width - 1 ), mt_rand ( 0, $height - 1 ), $black ); } } 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(); header ( "content-type:image/gif" ); imagegif($image); imagedestroy ( $image ); } ob_clean(); verifyImage(3,4,20,11);
字体在font文件中
<?php function getString($type = 3,$length = 4){ if($type == 1){ $chars = join(" ",range("A", "Z")); }elseif($type == 2){ $chars = join(" ",range(0,9)); }elseif($type == 3){ $chars = join(" ",array_merge(range(0,9),range("A", "Z"),range("a", "z"))); } if ($length > strlen ( $chars )) { exit ( "字符串长度不够" ); } $chars = str_shuffle ( $chars ); return substr ( $chars, 0, $length ); } function getUniName(){ return md5(uniqid(microtime(true),true)); } function getExt($filename){ return strtolower(end(explode(".",$filename))); }