<?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...