php驗證碼詳解

2021-06-08 01:00:01 字數 3576 閱讀 7256

<?php

session_start();

/*$consts = 'cdfgkmnpqrstwxyz23456';

$vowels = 'aek23456789';

for ($x = 0; $x < 6; $x++)

$radomstring = $const[0] . $vow[0] .$const[2] . $const[1] . $vow[1] . $const[3] . $vow[3] . $const[4];

$_session['checkcode'] = $string = substr($radomstring,0,4); //顯示4個字元

*/$chars_for_actnum=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","q","r","s","t","u","v","w","x","z","a","b","c","d","e","f","g","h","k","m","n","p","r","s","t","u","v","w","x","y","z","1","2","3","4","5","6","7","8","9");

for($i=0;$i<=3;$i++)

$_session['checkcode'] = $string[0].$string[1].$string[2].$string[3];

$imagex = 90; //影象的寬

$imagey = 20;      //影象的高

$im = imagecreatetruecolor($imagex,$imagey); //新建乙個真彩色影象

$background = imagecolorallocate($im, rand(180, 250), rand(180, 250), rand(180, 250)); //背景色

$foregroundarr = array(imagecolorallocate($im, rand(0, 20), rand(0, 20), rand(0, 20)),

imagecolorallocate($im, rand(0, 20), rand(0, 10), rand(245, 255)),

imagecolorallocate($im, rand(245, 255), rand(0, 20), rand(0, 10)),

imagecolorallocate($im, rand(245, 255), rand(0, 20), rand(245, 255))

);$foreground2 = imagecolorallocatealpha($im, rand(20, 100), rand(20, 100), rand(20, 100),80); //分配顏色並說明透明度

$middleground = imagecolorallocate($im, rand(200, 160), rand(200, 160), rand(200, 160)); //中間背景

$middleground2 = imagecolorallocatealpha($im, rand(180, 140), rand(180, 140), rand(180, 140),80); //中間背景2

//與左上角的顏色相同的都會被填充

imagefill($im, 0, 0, imagecolorallocate($im, 250, 253, 254));

//往影象上寫入文字

imagettftext($im, 14, rand(20, -20), 5, rand(14, 16), $foregroundarr[rand(0,3)],'fonts/alger.ttf', $string[0]);

imagettftext($im, 12, rand(30, -30), 20, rand(14, 16), $foregroundarr[rand(0,3)],'fonts/arialni.ttf', $string[1]);

imagettftext($im, 12, rand(25, -25), 35, rand(14, 16), $foregroundarr[rand(0,3)],'fonts/alger.ttf', $string[2]);

imagettftext($im, 12, rand(30, -30), 50, rand(14, 16), $foregroundarr[rand(0,3)], 'fonts/bernhc.ttf', $string[3]);

//畫一些隨機出現的點

$pointcol = imagecolorallocate($im, rand(0,255), rand(0,255), rand(0,255));

for ($i=0;$i<80;$i++)

//畫隨機出現的線

for ($x=0; $x<9;$x++)

else

}header("content-type:image/jpeg");

imagepng($im);

imagedestroy($im);

?>

以imagettftext($im, 12, rand(30, -30), 5, rand(14, 16), $foregroundarr[rand(0,3)], phpcms_root.'include/fonts/alger.ttf', $string[0]);為例

說明:修改驗證碼字型大小和樣式時,可能顯示不全,這時需要綜合調整下述幾點的引數及驗證碼背景的寬度和高度等。       

(1)修改驗證碼字型大小:

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、其他修改:

以上講到的六點是比較實用的,至於其他的修改(如:驗證碼字母和數字內容、影象分配顏色、隨機顯示的線段和橢圓等)這裡就不一一累述。

php驗證碼zhuc php實現驗證碼製作

php實現驗證碼製作 首先,看一張圖了解驗證碼生成的過程。1 生成驗證碼底圖 2 驗證碼內容 3 生成驗證碼 4 對比校驗 驗證碼實現的核心技術分析 a 底圖的 實現,並新增干擾元素 b 生成驗證內容 c 驗證內容儲存在服務端 d 驗證內容的校驗 下面看 實現的過程 這段 實現了產生 隨機數字,隨機...

PHP實現驗證碼

目前,不少 為了防止使用者利用機械人自動註冊 登入 灌水,都採用了驗證碼技術。所謂驗證碼,就是將一串隨機產生的數字或符號,生成一幅,裡加上一些干擾象素 防止 ocr 由使用者肉眼識別其中的驗證碼資訊,輸入表單提交 驗證,驗證成功後才能使用某項功能。我們這裡展示了如何編寫 php程式實現驗證碼功能 一...

php生成驗證碼

header content type image gif 初始化 border 0 是否要邊框 1要 0不要 how 4 驗證碼位數 w how 15 寬度 h 20 高度 fontsize 5 字型大小 alpha abcdefghijkmnopqrstuvwxyz 驗證碼內容1 字母 numb...