首頁 > 軟體

PHP生成驗證碼:[5]php驗證碼

2019-12-13 23:38:23

php生成驗證碼,php驗證碼,php怎樣生成驗證碼?

1

1. 程式碼:

<?php

/*設定檔案頭為圖片輸出*/

Header("Content-type: image/JPEG");

/*呼叫生成驗證碼函數*/

$checkcode = make_rand(4);

/**

 * 生成驗證碼字元

 * @param int $length 驗證碼字元長度

 * @return string

 */

function make_rand($length="32"){

$str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";

$result="";

for($i=0;$i<$length;$i++){

$num[$i]=rand(0,25);

$result.=$str[$num[$i]];

}

return $result;

}


2

2. 程式碼:

/*呼叫輸出驗證碼圖片函數*/

getAuthImage($checkcode, 160, 40);

/**

 * 生成驗證碼圖片

 * @param string $text 驗證碼字元

 */

function getAuthImage($text, $w, $y) {

/*設定圖片的寬度和高度*/

$im_x = $w;

$im_y = $y;

/*建立圖片*/

$im = imagecreatetruecolor($im_x,$im_y);

$text_c = ImageColorAllocate($im, mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));

$tmpC0=mt_rand(100,255);

$tmpC1=mt_rand(100,255);

$tmpC2=mt_rand(100,255);

$buttum_c = ImageColorAllocate($im,$tmpC0,$tmpC1,$tmpC2);

imagefill($im, 16, 13, $buttum_c);


3

3. 程式碼:

/*字型檔案*/

$font = 't1.ttf';

for ($i=0;$i<strlen($text);$i++)

{

$tmp =substr($text,$i,1);

$array = array(-1,1);

$p = array_rand($array);

$an = $array[$p]*mt_rand(1,10);//角度

$size = 28;

imagettftext($im, $size, $an, 15+$i*$size, 35, $text_c, $font, $tmp);

}

/*將字元寫入檔案中*/

$distortion_im = imagecreatetruecolor ($im_x, $im_y);

imagefill($distortion_im, 16, 13, $buttum_c);

for ( $i=0; $i<$im_x; $i++) {

for ( $j=0; $j<$im_y; $j++) {

$rgb = imagecolorat($im, $i , $j);

if( (int)($i+20+sin($j/$im_y*2*M_PI)*10) <= imagesx($distortion_im)&& (int)($i+20+sin($j/$im_y*2*M_PI)*10) >=0 ) {

imagesetpixel ($distortion_im, (int)($i+10+sin($j/$im_y*2*M_PI-M_PI*0.1)*4) , $j , $rgb);

}

}

}


4

4. 程式碼:

/*干擾元素點的數量*/

$count = 160;

/*建立干擾元素點*/

for($i=0; $i<$count; $i++){

$randcolor = ImageColorallocate($distortion_im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));

imagesetpixel($distortion_im, mt_rand()%$im_x , mt_rand()%$im_y , $randcolor);

}

/*建立干擾線條*/

$rand = mt_rand(5,30);

$rand1 = mt_rand(15,25);

$rand2 = mt_rand(5,10);

for ($yy=$rand; $yy<=+$rand+2; $yy++){

for ($px=-80;$px<=80;$px=$px+0.1)

{

$x=$px/$rand1;

if ($x!=0)

{

$y=sin($x);

}

$py=$y*$rand2;

imagesetpixel($distortion_im, $px+80, $py+$yy, $text_c);

}

}


5

5. 程式碼:

/*以PNG格式將影象輸出到瀏覽器*/

ImagePNG($distortion_im);

/*銷毀影象*/

ImageDestroy($distortion_im);

ImageDestroy($im);

}


6

6.最終輸入結果如圖所示:

################################

##                                                            ##

##                     純屬湊字                         ##

##                                                            ##

################################





IT145.com E-mail:sddin#qq.com