網(LieHuo.Net)教程 論壇逛久了,發現很多人對phpcms默認的驗證碼不滿意,下面結合我的經驗,談談phpcms驗證碼修改方法(適于所有版本)。
以phpcms2008sp2為例,主要是修改根目錄下的checkcode.php文件。
下面提到的行數是相對官方原版的checkcode.php文件,如你已改過該文件,請搜索對應代碼修改即可。
1、修改驗證碼背景圖片的大小:
找到第31、32行
$imageX = strlen($radomstring)*8; //驗證碼圖片的寬度,修改成你需要的值
$imageY = 20; //驗證碼圖片的高度,修改成你需要的值
2、修改驗證碼背景圖片的背景色:
找到第46行:imagefill($im, 0, 0, imagecolorallocate($im, 250, 253, 254));
修改第二個()里的三個數字為你需要的背景顏色(色彩三原色,其值從 0 至 255)。
3、修改驗證碼的位數:
以修改為5位為例(默認是4位),找到第48-51行
imagettftext($im, 12, rand(30, -30), 5, rand(14, 16), $foregroundArr[rand(0,3)], PHPCMS_ROOT.'include/fonts/ALGER.TTF', $string[0]);
imagettftext($im, 12, rand(50, -50), 20, rand(14, 16), $foregroundArr[rand(0,3)], PHPCMS_ROOT.'include/fonts/ARIALNI.TTF', $string[1]);
imagettftext($im, 12, rand(50, -50), 35, rand(14, 16), $foregroundArr[rand(0,3)], PHPCMS_ROOT.'include/fonts/ALGER.TTF', $string[2]);
imagettftext($im, 12, rand(30, -30), 50, rand(14, 16), $foregroundArr[rand(0,3)], PHPCMS_ROOT.'include/fonts/arial.ttf', $string[3]);
(1)增加一行,并將相關變量數值增加
imagettftext($im, 12, rand(30, -30), 5, rand(14, 16), $foregroundArr[rand(0,4)], PHPCMS_ROOT.'include/fonts/ALGER.TTF', $string[0]);
imagettftext($im, 12, rand(50, -50), 20, rand(14, 16), $foregroundArr[rand(0,4)], PHPCMS_ROOT.'include/fonts/ARIALNI.TTF', $string[1]);
imagettftext($im, 12, rand(50, -50), 35, rand(14, 16), $foregroundArr[rand(0,4)], PHPCMS_ROOT.'include/fonts/ALGER.TTF', $string[2]);
imagettftext($im, 12, rand(30, -30), 50, rand(14, 16), $foregroundArr[rand(0,4)], PHPCMS_ROOT.'include/fonts/arial.ttf', $string[3]);
imagettftext($im, 12, rand(30, -30), 65, rand(14, 16), $foregroundArr[rand(0,4)], PHPCMS_ROOT.'include/fonts/arial.ttf', $string[4]);
(2)修改第29行$_SESSION['checkcode'] = $string = substr($radomstring,0,4); //only display 4 str
為$_SESSION['checkcode'] = $string = substr($radomstring,0,5); //only display 5 str
(3)修改第28行$radomstring = $const[0] . $vow[0] .$const[2] . $const[1] . $vow[1] . $const[3] . $vow[3] . $const[4];
為$radomstring = $const[0] . $vow[0] .$const[2] . $const[1] . $vow[1] . $const[3] . $vow[3] . $const[4]. $const[5];
通過以上三步即可修改驗證碼的位數,以此類推可將驗證碼修改成6、7、8等多位。注:驗證碼位數過多時,可能只顯示前幾位,這時要把驗證碼背景圖片的寬度設寬點。
4、修改驗證碼字體大小和樣式:
找到第48-51行,每一行控制一個驗證碼字符的樣式(以第48行為例,即第一個驗證碼字符):
imagettftext($im, 12, rand(30, -30), 5, rand(14, 16), $foregroundArr[rand(0,3)], PHPCMS_ROOT.'include/fonts/ALGER.TTF', $string[0]);
說明:修改驗證碼字體大小和樣式時,可能顯示不全,這時需要綜合調整下述幾點的參數及驗證碼背景圖片的寬度和高度等。
(1)修改驗證碼字體大小:
第48行imagettftext($im, 12, 中的“12”即為字體大小,數值越大字體越大
(2)修改驗證碼字符的左右傾斜度:
第48行imagettftext($im, 12, rand(30, -30), 中的“rand(30, -30)” 為驗證碼字符的左右傾斜度,調整括號里面的數字可改變字符向左和向右的傾斜程度。
(3)修改驗證碼字符間的距離:
第48行imagettftext($im, 12, rand(30, -30), 5,中的“5”為每個驗證碼字符離左側的距離,通過改變數值看調整每個驗證碼間的距離。
(4)修改驗證碼字符的上下漂移度:
第48行imagettftext($im, 12, rand(30, -30), 5, rand(14, 16),中的“rand(14, 16)” 為驗證碼字符的上下漂移度,調整括號里面的數字可改變字符向上和向下的漂移程度。
(5)修改驗證碼的字體:
第48行PHPCMS_ROOT.'include/fonts/ALGER.TTF',中的“ALGER.TTF”為每個驗證碼字符的字體,存放在include/fonts文件夾中,把你喜歡的字體文件放在該文件夾,然后修改對應的行即可。
5、修改驗證碼圖片邊框顏色:
找到第55行:$border = imagecolorallocate($im, 133, 153, 193);修改()里的三個數字為你需要的邊框顏色
6、修改上的小點的顏色:
找到第59行:$pointcol = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));修改()里的數字為你需要的小點顏色范圍
7、其他修改:
以上講到的六點是比較實用的,至于其他的修改(如:驗證碼字母和數字內容、圖像分配顏色、隨機顯示的線段和橢圓等)這里就不一一累述。
下一篇 我是如何讓我網站做到百度第一的