PHP的图形验证码
<?phpsession_start();//創建隨機碼
for($i=0;$i<4;$i++){$_nmsg .= dechex(mt_rand(0, 15));
}//保存在session里
$_SESSION['code'] = $_nmsg;//長和高
$_width = 75;
$_height = 25;
//創建圖像
$_img = imagecreatetruecolor($_width, $_height);
$_white = imagecolorallocate($_img, 255, 255, 255);
imagefill($_img, 0, 0, $_white);//創建黑色邊框
$_black = imagecolorallocate($_img, 100, 100, 100);
imagerectangle($_img, 0, 0, $_width-1, $_height-1, $_black);//隨機劃線條
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,75),mt_rand(0,25),mt_rand(0,75),mt_rand(0,25),$_rnd_color);
}
//隨機打雪花
for ($i=1;$i<100;$i++) {imagestring($_img,1,mt_rand(1,$_width),mt_rand(1,$_height),"*",imagecolorallocate($_img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)));
}
//輸出驗證碼
for ($i=0;$i<strlen($_SESSION['code']);$i++){imagestring($_img,mt_rand(3,5),$i*$_width/4+mt_rand(1,10),mt_rand(1,$_height/2),$_SESSION['code'][$i],imagecolorallocate($_img,mt_rand(0,150),mt_rand(0,100),mt_rand(0,150)));
}//輸出圖像
ob_clean();
header('Content-Type:image/png');
imagepng($_img);
//銷毀
imagedestroy($_img);
If you work on an extremely large project with a lot of source and required files, like myself, you will be well-advised to always clear the output buffer prior to creating an image in php.
ob_clean這個函數的作用就是用來丟棄輸出緩沖區中的內容,如果你的網站有許多生成的圖片類文件,那么想要訪問正確,就要經常清除緩沖區。
?
總結
- 上一篇: PHP的xdebug五个按钮的说明
- 下一篇: 信用卡核身是什么意思