當前位置:名人名言大全網 - 端午節短信 - PHP如何生成加減算法的驗證碼

PHP如何生成加減算法的驗證碼

& lt?服務器端編程語言(Professional Hypertext Preprocessor的縮寫)

命名空間移動\組件;

/**

* @作者霍峰

*

*修改了加減驗證類

*使用示例verify code::get(1,2);

*驗證示例verify code::check($ code);

*/

類別驗證碼

{

/**

* php驗證碼

*/

公共靜態函數get($ one,$two,$ prefix =‘‘,$font_size = 28)

{

//文件頭...

ob _ get _ clean();

header(“Content-type:image/png;charset = utf-8;”);

//創建真彩色白紙

$ width = $ font _ size * 5;

$ height = $ font _ size+1;

$ im = @ image create true color($ width,$ height)或die(“圖像創建失敗“);

//獲取背景顏色

$ background _ color = imagecolorrallocate($ im,255,255,255);

//填充背景顏色

image fill(im,0,0,$ background _ color);

//獲取邊框顏色

$ border _ color = imagecolorrallocate($ im,200,200,200);

//繪制壹個邊框顏色為200,200,200的矩形。

image rectangle($ im,0,0,$width - 1,$height - 1,$ border _ color);

//逐行顯示背景,全屏使用1或0。

for($ I = 2;$ i & lt$ height-2;$ i++){

//獲取隨機色調

$ line _ color = imagecolorrallocate($ im,rand(200,255),rand(200,255),rand(200,255));

//畫壹條線

imageline($ im,2,$i,$width - 1,$i,$ line _ color);

}

//設置打印文本。

$ firstNum = $ one

$ secondNum = $ two

$ actionStr = $ firstNum & gt$secondNum?'-' : '+';

//獲取第1個隨機字符。

$ imstr【0】【“s“】= $ first num;

$ imstr【0】【“x“】= rand(2,5);

$ imstr【0】【“y“】= rand(1,4);

//獲取第二個隨機單詞

$ imstr【1】【“s“】= $ actionStr;

$ imstr【1】【“x“】= $ imstr【0】【“x“】+$ font _ size-1+rand(0,1);

$ imstr【1】【“y“】= rand(1,5);

//獲取第三個隨機字

$ imstr【2】【“s“】= $ second num;

$ imstr【2】【“x“】= $ imstr【1】【“x“】+$ font _ size-1+rand(0,1);

$ imstr【2】【“y“】= rand(1,5);

//獲取第三個隨機字

$ imstr【3】【“s“】=‘=‘;

$ imstr【3】【“x“】= $ imstr【2】【“x“】+$ font _ size-1+rand(0,1);

$ imstr【3】【“y“】= 3;

//獲取第三個隨機字

$ imstr【4】【“s“】=‘?‘。;

$ imstr【4】【“x“】= $ imstr【3】【“x“】+$ font _ size-1+rand(0,1);

$ imstr【4】【“y“】= 3;

//文本

$ text =““;

//寫入隨機字符串

for($ I = 0;$ i & lt5;$ i++){

//獲取隨機的深色

$ text _ color = imagecolorrallocate($ im,rand(50,180),rand(50,180),rand(50,180));

$文本。= $ imstr【$ I】【“s“】;

//繪制單詞

imagechar($ im,$font_size,$ imstr【$ I】【“x“】,$ imstr【$ I】【“y“】,$ imstr【$ I】【“s“】,$ text _ color);

}

session _ start();

$ _ SESSION【$前綴。verify code‘】= $ first num & gt;$secondNum?($ first num-$ second num):($ first num+$ second num);

//顯示圖片

ImagePng($ im);

//毀圖

image destroy($ im);

}

公共靜態函數檢查($code)

{

if(trim($ _ SESSION【$ prefix。verify code‘】)= = trim($ code)){

返回true

}否則{

返回false

}

}