/** * _code()是驗證碼函數 * @access public * @param int $_width 表示驗證碼的長度 * @param int $_height 表示驗證碼的高度 * @param int $_rnd_code 表示驗證碼的位元 * @param bool $_flag 表示驗證碼是否需要邊框 * @return void 這個函數執行後產生一個驗證碼 */function _code($_width = 75,$_height = 25,$_rnd_code = 4,$_flag = false){// session_start(); $img = imagecreatetruecolor($_width, $_height); $black = imagecolorallocate($img, 0x00, 0x00, 0x00); $green = imagecolorallocate($img, 0x00, 0xFF, 0x00); $white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF); $red = imagecolorallocate($img, 0xFF, 0x00, 0x00); imagefill($img,0,0,$white); //�����������֤�� $code = ''; srand(microtime()*100000); for($i = 0; $i < 4; $i++) { //$code .= rand(0,1)? rand(0,9): (rand(0,1)?strtoupper( dechex(rand(10,15)) ):strtolower(dechex(rand(10,15)) )); //$code .= rand(0,9); $code .= dechex(rand(0, 15)); } $_SESSION['code'] = $code; if (!$_flag){ imagerectangle($img, 0, 0, $_width-1, $_height-1, $black); } //隨即畫出6個線條 for ($i=0;$i<6;$i++) { $_rnd_color = imagecolorallocate($img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); imageline($img,mt_rand(0,$_width),mt_rand(0,$_height),mt_rand(0,$_width),mt_rand(0,$_height),$_rnd_color); } //隨即雪花 for ($i=0;$i<mt_rand(0,100);$i++) { $_rnd_color = imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)); imagestring($img,1,mt_rand(1,$_width),mt_rand(1,$_height),'*',$_rnd_color); } //繪製驗證碼 for ($i=0;$i<strlen($_SESSION['code']);$i++) { $_rnd_color = imagecolorallocate($img,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)); imagestring($img,5,$i*$_width/$_rnd_code+mt_rand(1,10),mt_rand(1,$_height/2),$_SESSION['code'][$i],$_rnd_color); } header('Content-Type:image/jpeg'); imagepng($img); imagedestroy($img);}