php 最简单的验证码

来源:互联网 发布:北京房价下跌 知乎 编辑:程序博客网 时间:2024/06/01 14:16
public function createCode()    {        session_start();//生成验证码图片        header("Content-type: image/png");        $x_size=80;//        $y_size=30;//// 全数字        $str = "1,2,3,4,5,6,7,8,9,a,b,c,d,f,g,e,h,i,k,m,i,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z";      //要显示的字符,可自己进行增删        $list = explode(",", $str);        $cmax = count($list) - 1;        $verifyCode = '';        for ($i = 0; $i < 4; $i++) {            $randnum = mt_rand(0, $cmax);            $verifyCode .= $list[$randnum];           //取出字符,组合成为我们要的验证码字符        }        $_SESSION['code'] = $verifyCode;        //将字符放入SESSION        $im = imagecreate($x_size, $y_size);    //生成图片        $color['black'] = imagecolorallocate($im, 0, 0, 0);     //此条及以下三条为设置的颜色        $color['white'] = imagecolorallocate($im, 255, 255, 255);        $color['gray'] = imagecolorallocate($im, 200, 200, 200);        $color['red'] = imagecolorallocate($im, 255, 0, 0);        $color['LightPink'] = imagecolorallocate($im, 255,182,193);        $color['Violet'] = imagecolorallocate($im, 238,130,238);        $color['Purple'] = imagecolorallocate($im, 128,0,128);        $color['SlateBlue'] = imagecolorallocate($im,  106,90,205);        $color['DoderBlue'] = imagecolorallocate($im,30,144,255);        $color['DeepSkyBlue'] = imagecolorallocate($im,0,191,255);        $color['Aqua'] = imagecolorallocate($im, 0,255,255);        $color['Lime'] = imagecolorallocate($im, 0,255,0);        $color['Cornislk'] = imagecolorallocate($im, 255,248,220);        $color['DarkOrange'] = imagecolorallocate($im, 255,140,0);        imagefill($im, 0, 0, $color['white']);     //给图片填充颜色        /*         *  imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )imagestring()  col 颜色将字符串 s 画到 image 所代表的图像的 xy 坐标处(这是字符串左上角坐标,整幅图像的左上角为 00)。如果 font  1234  5,则使用内置字体。         * *///将验证码绘入图片        imagestring($im, 10, (($x_size/2)-20),(($y_size/2)-6), $verifyCode,$color['black'] );    //将验证码写入到图片中        for ($i = 0; $i < 100; $i++)  //加入干扰象素        {             $rand_keys=array_rand($color,2);             imagesetpixel($im, rand(0,$x_size) , rand(0,$y_size), $color[$rand_keys[0]]);    //加入点状干扰素        }        for ($i = 0; $i < 3; $i++)  //加入干扰象素        {            $rand_keys=array_rand($color,2);            imagearc($im, rand(0,$x_size) , rand(0,$y_size), rand(5,$x_size) , rand(1,$y_size), 75, 170, $color[$rand_keys[0]]);    //加入弧线状干扰素--- int imagearc(int im, int cx, int cy, int w, int h, int s, int e, int col);原点坐标 (0,0) 为图片的左上角,参数 cxcy 为椭圆心坐标,参数 w 为水平轴长,参数 h 为垂直轴长,参数 s  e 分别为起始角与结束角,参数 col 为弧线的颜色。参数 im 表示图形的 handle            imageline($im, rand(0,$x_size/2) , rand(0,$y_size/2),rand($x_size/2,$x_size) , rand($y_size/2,$y_size), $color[$rand_keys[1]]);    //加入线条状干扰素        }        imagepng($im);        imagedestroy($im);    }
1 0
原创粉丝点击