php生成ピクチャ検証コード
6114 ワード
認証コードは主に暴力的な解読を防ぐために登録されています.以下はphpの画像検証コードの生成方式です.くだらないことは言わないで、直接コードをつけます.
/**
*
*/
function buildRandomString($type=3,$length=4){
if ($type==1){
//join() implode() , ,
$chars=join( "",range(0,9));
}elseif($type==2){
//range()
//array_merge()
$chars=join("",array_merge(range("a","z"),range("A","Z")));
}elseif($type==3){
$chars=join("",array_merge(range("a","z"),range("A","Z"),range(0,9)));
// abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
}
if($length>strlen($chars)){
exit(" ");
}
$chars=str_shuffle($chars);//str_shuffle()
return substr($chars,0,$length);//substr()
}
/**
* GD
*/
function verifyImage($type=1,$length=4,$pixel=5,$line=5,$sess_name = "verify"){
session_start();
//
$width=80;
$height=28;
//imagecreatetruecolor() , x_size y_size
$image=imagecreatetruecolor($width,$height);
//imagecolorallocate() , RGB
$white=imagecolorallocate($image,255,255,255);
$black=imagecolorallocate($image,0,0,0);
// , 、 ,
imagefilledrectangle($image,1,1,$width-2,$height-2,$white);
//
$chars=buildRandomString($type,$length);
// session ,
$_SESSION[$sess_name]=$chars;
//
$fontfiles=array("SIMYOU.TTF");//
for($i=0;$i<$length;$i++){
//mt_rand()
$size=mt_rand(14,18);//
$angle=mt_rand(-15,15);//
$x=5+$i*$size;
$y=mt_rand(20,26);//x y ,
$fontfile="./fonts/".$fontfiles[mt_rand(0,count($fontfiles)-1)];// : ,
$color=imagecolorallocate($image,mt_rand(50,90),mt_rand(80,200),mt_rand(90,180));//
$text=substr($chars,$i,1);//
//imagettftext()
imagettftext($image,$size,$angle,$x,$y,$color,$fontfile,$text);
}
if($pixel){// ,
for($i=0;$i<50;$i++){
//
imagesetpixel($image,mt_rand(0,$width-1),mt_rand(0,$height-1),$black);
}
}
if($line){// ,
for($i=1;$i<$line;$i++){
$color=imagecolorallocate($image,mt_rand(50,90),mt_rand(80,200),mt_rand(90,180));
imageline($image,mt_rand(0,$width-1),mt_rand(0,$height-1),mt_rand(0,$width-1),mt_rand(0,$height-1),$color);
}
}
header("content-type:image/gif");
imagegif($image);// gif
imagedestroy($image);//
}