Пример #1
0
 /**
  * 验证码
  * 图片尺寸,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);
 }