ホームページ  >  記事  >  バックエンド開発  >  PHP 検証コードを要求される場合の解決方法

PHP 検証コードを要求される場合の解決方法

WBOY
WBOYオリジナル
2016-06-13 13:50:46954ブラウズ

php 認証コードを求めています

この認証はスペースでは使用できません。認証コードを持っている人はいますか?ありがとうございます

//Xiao Zhu Qigong
session_start();
session_register('code');
$width = "70";//画像の幅 70 63
$height = "25";//画像の高さ 25 22.5
$ len = "4" ;//いくつかの検証コードを生成
$bgcolor = "#ffffff";//背景色
$noise = true;//ノイズスポットを生成
$noisenum = 200;//ノイズ スポットの数
$border = false;//Border
$bordercolor = "#000000";
$image = imageCreate($width, $height);
$back = getcolor($ bgcolor);
imageFilledRectangle($image, 0, 0, $width, $height, $back);
$size = $width/$len;
if($size>$height) $size =$height;
$left = ($width-$len*($size+$size/10))/$size;
for ($i=0; $i{
$randtext = rand(0, 9);
$code .= $randtext;
$textColor = imageColorAllocate($image, rand(0, 100), rand(0, 100) , rand(0, 100));
$font = rand(1,4).".ttf";
$randsize = rand($size-$size/10, $size+$size/10) ;
$ location = $left+($i*$size+$size/10);
imagettftext($image, $randsize, rand(-18,18), $location, rand($size-$size) /10, $size+ $size/10), $textColor, $font, $randtext);
}
if($noise == true) setnoise();
$_SESSION['code'] = $code;
$bordercolor = getcolor($bordercolor);
if($border==true) imageRectangle($image, 0, 0, $width-1, $height-1, $bordercolor);
header( "Content-type: image/png");
imagePng($image);
imagedestroy($image);
function getcolor($color)
{
global $image;
$color = eregi_replace ("^#","",$color);
$r = $color[0].$color[1];
$r = hexdec ( $r);
$b = $color[2].$color[3];
$b = hexdec ($b);
$g = $color[4].$color[5 ];
$g = hexdec ($g);
$color = imagecolorallocate ($image, $r, $b, $g);
return $color;
}
関数setnoise()
{
global $image, $width, $height, $back, $noisenum;
for ($i=0; $i $ randColor = imageColorAllocate($ image, rand(0, 255), rand(0, 255), rand(0, 255));
imageSetPixel($image, rand(0, $width), rand(0, $) height), $randColor );
} //エラー
}
?>


------解決策---------- ---- ------
//検証コード画像を生成
Header("Content-type: image/PNG"); >srand((( double)microtime()*1000000);
$im = imagecreate(62,20);
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im , 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200);
imagefill($im,68,30,$gray); )%100000)<10000);
// 4 桁の整数の検証コードを画像に描画します
imagestring($im, 5, 10, 3, $authnum, $black); ($i=0;$ i<200;$i++) //干渉ピクセルを追加
{
$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($ im, rand()%70 , rand()%30 , $randcolor);
}
ImageDestroy($im); >


まず GD を開始して、効果を確認してください。


------解決策---------

これは私が使用しているものです。 。 。 。
//N 桁のランダム コードを生成します
function getcode() { return md5(time().rand(0,10000)).md5(time ().rand(0,10000));
}
$code=getcode();
//$code=$_GET["code"];;
$img=imagecreate( 185,35);
$bg_color=imagecolorallocate($img,200,200,200);
//背景干渉点
for($i=0;$i<=200;$i++)
{
$point_color=imagecolorallocate($img,rand(1,255),rand(1,255),rand(1,255));
imagesetpixel($img,rand(1,185),rand(1,35),$point_color) ;
}
//5 桁の確認コードを生成します
for($i=0;$i{
$x=($i+1 ) *30;
$y=rand(5,15);
$code_n=substr($code,$i,1);//$i はもう少し複雑に変更する必要があります。それ以外の場合は、最初の 5 桁が取り出されます。
$text_color=imagecolorallocate($img,rand(20,180),rand(20,180),rand(20,180)); //フォントの色

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。