求php 验证码码,该怎么解决

WBOY
リリース: 2016-06-13 10:03:52
オリジナル
846 人が閲覧しました

求php 验证码码

这个验证在空间中不能用谁有验证码谢谢

//小猪会气功
session_start();
session_register('code');
$width = "70";//图片宽 70 63
$height = "25";//图片高 25 22.5
$len = "4";//生成几位验证码
$bgcolor = "#ffffff";//背景色
$noise = true;//生成杂点
$noisenum = 200;//杂点数量
$border = false;//边框
$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;
}
function 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); 
while(($authnum=rand()%100000)//将四位整数验证码绘入图片 
imagestring($im, 5, 10, 3, $authnum, $black); 
for($i=0;$i{ 
$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%70 , rand()%30 , $randcolor); 

ImagePNG($im); 
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{
$point_color=imagecolorallocate($img,rand(1,255),rand(1,255),rand(1,255));
imagesetpixel($img,rand(1,185),rand(1,35),$point_color);
}
 //生成五位验证码
for($i=0;$i{
$x=($i+1)*30;
$y=rand(5,15);
$code_n=substr($code,$i,1);//$i需要改的复杂一点,不然取出的只是前五位。
$text_color=imagecolorallocate($img,rand(20,180),rand(20,180),rand(20,180)); //字体颜色

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート