為什么我生成的驗證碼,始終不是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();
2016-10-25
字體的原因,在我的機子上,更換字體路徑和$fontfiles數組內容后,顯示正常