當前位置:名人名言大全網 - 祝福短信 - 如何用PHP生成驗證碼

如何用PHP生成驗證碼

PHP生成驗證碼的原理:使用PHP的GD庫,生成壹張帶有驗證碼的圖片,並將驗證碼保存在Session中。PHP生成驗證碼的壹般過程包括:

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);//釋放圖片占用的內存?

}