標籤:ram 執行 img access 長度 func white php 儲存
/**
* _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) {
//建立隨機碼
for ($i=0;$i<$_rnd_code;$i++) {
$_nmsg .= dechex(mt_rand(0,15));
}
//儲存在session
$_SESSION[‘code‘] = $_nmsg;
//建立一張映像
$_img = imagecreatetruecolor($_width,$_height);
//白色
$_white = imagecolorallocate($_img,255,255,255);
//填充
imagefill($_img,0,0,$_white);
if ($_flag) {
//黑色,邊框
$_black = imagecolorallocate($_img,0,0,0);
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<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/png‘);
imagepng($_img);
//銷毀
imagedestroy($_img);
}
PHP 產生驗證碼