1,生成壹張png的圖片;
2.設置圖片的背景顏色;
3.設置字體顏色和樣式;
4.生成壹個4位數的隨機驗證碼;
5.調整每個生成字符的旋轉角度和位置,並繪制在png圖片上;
6.添加噪聲和幹擾線,防止註冊機分析原圖惡意破解驗證碼;
7.輸出圖片;
8.釋放圖片占用的內存。
session_start()。?
getCode(4,60,20);?
功能?getCode($num,$w,$h)?{?
$code?=?"";?
為了什麽?($i?=?0;?$i?& lt?$ num?$i++)?{?
$code?。=?蘭特(0,?9);?
}?
//4位驗證碼也可以用rand(1000,9999)直接生成?
//將生成的驗證碼寫入會話進行驗證?
$_SESSION["helloweba_num"]?=?$ code?
//創建圖片並定義顏色值?
header("內容類型:?image/PNG ");?
$im?=?imagecreate($w,?$ h);?
$黑色?=?imagecolorhallocate($ im,?0,?0,?0);?
$灰色?=?imagecolorhallocate($ im,?200,?200,?200);?
$bgcolor?=?imagecolorhallocate($ im,?255,?255,?255);?
//填充背景?
imagefill($im,?0,?0,?$灰色);?
//畫邊框?
imagerectangle($im,0,?0,?$w-1,?$h-1,?$黑);?
//隨機畫兩條虛線來幹涉?
$style?=?數組?($黑,$黑,$黑,$黑,$黑,?
$灰色,$灰色,$灰色,$灰色,$灰色?
);?
imagesetstyle($im,?$ style);?
$y1?=?蘭特(0,?$ h);?
$y2?=?蘭特(0,?$ h);?
$y3?=?蘭特(0,?$ h);?
4美元?=?蘭特(0,?$ h);?
imageline($im,?0,?$y1,?$w,?$y3,?IMG _顏色_風格);?
imageline($im,?0,?$y2,?$w,?$y4,?IMG _顏色_風格);?
//在畫布上隨機生成大量黑點進行幹擾;?
為了什麽?($i?=?0;?$i?& lt?80;?$i++)?{?
imagesetpixel($im,?蘭特(0,?$w),?蘭特(0,?$h),?$黑);?
}?
//在畫布上隨機顯示數字,字符的水平間距和位置按照壹定的波動範圍隨機生成?
$strx?=?蘭德(3,8);?
為了什麽?($i?=?0;?$i?& lt?$ num?$i++)?{?
$strpos?=?蘭德(1,?6);?
imagestring($im,?5,?$strx,?$strpos,?substr($code,?$i,?1),?$黑);?
$strx?+=?蘭德(8,12);?
}?
imagepng($ im);//輸出圖片?
image destroy($ im);//釋放圖片占用的內存?
}