我们看到的验证码是这样生成的

<?php

//产生验证码的4位随机数

session_start();

$arr = ['a','b','c','d','e','f','g','h','i','k','l','m',   

  'n','o','p','q','r','s','t','u','v','w','x','y',  

   'z','0','1','2','3','4','5','6','7','8','9'];

$rand = "";

for($i=1;$i<=4;$i++){    

$rand .= $arr[rand(0,count($arr)-1)];

}

//把生成的随机数装在session中

$_SESSION['pic']=$rand;

//1.生成图片

$im = imagecreatetruecolor(100,30);

//2.生成颜色,第一次调用,生成背景颜色,默认是黑色

//自定义背景颜色,用imageFill函数

$bg = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));

//2,3,2:颜色(三原色:红,绿,蓝)

imagefill($im,0,0,$bg);

//imagefill的颜色是由上面的颜色变化而来的

//3.第二次调用,生成图片上面的文字或其他样式的颜色

//$te = imagecolorallocate($im,255,233,233);

$te = imagecolorallocate($im,rand(0,244),rand(6,233),rand(10,100));

//生成干扰线

//imageline($im,0,0,0,0,$te);

$poslineX1 = rand(6,30);

$poslineX2 = rand(30,60);

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

$poslineY1 = rand(2,18);    

$poslineY2 = rand(11,25);    

imageline($im,$poslineX1,$poslineY1,$poslineX2,$poslineY2,$te);    

$poslineX1 = rand(30,60);    

$poslineX2 = rand(50,80);

}

//生成干扰点

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

$te3 = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));    

imagesetpixel($im,rand(2,100),rand(2,30),$te3); }

//4.在图片上面生成文字

//imagestring($im,rand(1,5),rand(18,60),rand(5,15),$rand,$te);

$postX = rand(6,45);

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

$postY = rand(8,15);    

imagestring($im,rand(3,5),$postX,$postY,substr($rand,$i,1),$te);    

$postX +=rand(8,20);

}

//rand(1,5):代表字体大小

//rand(18,60):代表宽度的随机数

//rand(5,15):代表高度的随机数

//$rand:随机生成的4位验证码

//$te:验证码字体的样式,颜色

//5.php当图片输出,声明

header("content-type:image/jpeg");

//6.显示

imagejpeg($im);

?>

 

 

 

 

 

 

 

 

     

 

 

 

 

 

 

 

 

 

posted @ 2014-05-13 16:08  xiaoxiaozhao  阅读(183)  评论(0编辑  收藏  举报