Home >Backend Development >PHP Tutorial >求php 验证码码,该怎么解决

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

WBOY
WBOYOriginal
2016-06-13 10:03:52866browse

求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)); //字体颜色

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn