清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | /** * 验证码类,用于产生各种验证码 */ class captcha{ /** * 生成验证码 * @param int $length 码字符长度 * @param int $width 宽度 * @param int $height 长度 * @param string $type 类型 * @return */ public static function getCode( $length =4, $width =50, $height =22, $type = 'png' ) { //session_start(); $randval = self::randString( $length ); //$_SESSION['captcha']= $randval; $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 ]); //背景色(随机) $borderColor = imagecolorallocate( $im , 100, 100, 100); //边框色 $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 , 10, 20, 10, $randval , $stringColor ); header( "Content-type: Image/" . $type ); $ImageFun = 'Image' . $type ; $ImageFun ( $im ); imagedestroy( $im ); return $randval ; } } |
以上是完整的生成图片验证码的方法,下面是使用该方法生成验证码:
1 2 3 4 | include "../lib/captcha.class.php" ; $captcha = new captcha(); $checkCode = $captcha ->getCode(4,75,32); echo $checkCode ; |
最后在页面显示的效果就是这样,刷新一次重新生成一个: