php 最簡單的驗證碼

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);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章