/** * 验证码 * 图片尺寸,50x24 * * @param integer $length :验证码长度 * @param integer $mode : 0大小写字母,1数字,2大写字母,3小写字母,5大小写+数字 * @param string $type :图片类型 * @param boolean $hasborder :图片边框有否 * @return binary */ public static function imgVerify($length = 4, $mode = 3, $type = 'png', $hasborder = true) { $randval = Func::randString($length, $mode); $_SESSION['imgVerifyCode'] = md5(strtolower($randval)); //dump($_SESSION);exit; $width = 50; $height = 24; $width = $length * 9 + 10 > $width ? $length * 9 + 10 : $width; if ($type != 'gif' && function_exists('imagecreatetruecolor')) { $im = @imagecreatetruecolor($width, $height); } else { $im = @imagecreate($width, $height); } //$r = array(225,255,255,223); //$g = array(225,236,237,255); //$b = array(225,236,166,125); //$key = mt_rand(0,3); //$backColor = imagecolorallocate($im, $r[$key],$g[$key],$b[$key]); $backColor = imagecolorallocate($im, 252, 252, 252); //背景色 if ($hasborder) { $border_color = 238; } else { $border_color = 255; } $borderColor = imagecolorallocate($im, $border_color, $border_color, $border_color); //边框色 $pointColor = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); //点颜色 @imagefilledrectangle($im, 0, 0, $width - 1, $height - 1, $backColor); @imagerectangle($im, 0, 0, $width - 1, $height - 1, $borderColor); $stringColor = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 120), mt_rand(0, 120)); // 干扰 for ($i = 0; $i < 10; $i++) { $fontcolor = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); imagearc($im, mt_rand(-10, $width), mt_rand(-10, $height), mt_rand(30, 300), mt_rand(20, 200), 55, 44, $fontcolor); } for ($i = 0; $i < 25; $i++) { $fontcolor = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $pointColor); } @imagestring($im, 5, 5, 3, $randval, $stringColor); header("Content-type: image/" . $type); $ImageFun = 'Image' . $type; $ImageFun($im); imagedestroy($im); }