您的位置:首页 > 其它

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

2014-05-13 16:08 337 查看
<?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);

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: