php5 图片验证码实现代码
GD库的函数 
1,imagecreatetruecolor -----创建一个真彩色的图像 
imagecreatetruecolor(int x_size,int y_size) //x表示宽,y表示高 
2,imagecolorallocate 为一幅图像分配颜色(调色板) 
imagecolorallocate(resource image,int red,int green,int blue)//red,green,blue----三原色 
3,imagestring 绘图函数 
iamgestring(resource image,font,int x,int y,内容,颜色); 
4,输出函数 
php的header是定义头的动作,php5中支持3中类型: 
1,Content-type:xxxx/yyyy 
2,Location:xxxx:yyyy/zzzz 
3,Status:nnn xxxxxx 
xxxx/yyyy表示内容文件的类型 
如:image/gif 
image/jpeg 
image/png 
例子:header("Content-type:image/jpeg") 
GD库中有对应的image类型 
imagejpeg(),imagegif(),imagepang() 
5,imageline画线函数 
iamgeline(resource image,int x1,int y1,int x2,int y2,int color); 
image ---图片 
x1 ---启始坐标 
y1 
x2 ---终点坐标 
y2 
6,imagesetpixel画点函数 
imagesetpixel(resource image,int x,int y,int color) 
7,imagettftext带字体的写入函数 
imagettftext(resource image,float size,float angle,int x,int y,int color,string fontfile,string text) 
8,php验证码插入中文的方法 
iconv("gb2312","utf-8","字符串"); //首先要将文字转换成utf-8格式 
9,随机函数 
1,rand([int min,int max]) //rand(1,4) 生成1-4的数 
2, dechex(十进制数) //转换为十六进制 
做验证码的步骤: 
生成随机数 -- 创建图片 -- 随机数写成图片 --保存在session中 
输入验证码例子 
gdchek.php 
 代码如下:
<?php 
/* 
* 生成图片验证码 
* and open the template in the editor. 
*/ 
session_start(); 
for($i=0;$i<4;$i++){ 
$rand.=dechex(rand(1,15)); //生成4位数包含十六进制的随机数 
} 
$_SESSION[check_gd]=$rand; 
$img=imagecreatetruecolor(100,30); //创建图片 
$bg=imagecolorallocate($img,0,0,0); //第一次生成的是背景颜色 
$fc=imagecolorallocate($img,255,255,255); //生成的字体颜色 
//给图片画线 
for($i=0;$i<3;$i++){ 
$te=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255)); 
imageline($img,rand(0,15),0,100,30,$te); 
} 
//给图片画点 
for($i=0;$i<200;$i++){ 
$te=imagecolorallocate($img,rand(0,255),rand(0,255),rand(0,255)); 
imagesetpixel($img,rand()%100,rand()%30,$te); 
} 
//首先要将文字转换成utf-8格式 
//$str=iconv("gb2312","utf-8","呵呵呵"); 
//加入中文的验证 
//smkai.ttf是一个字体文件,为了在别人的电脑中也能起到字体作用,把文件放到项目的根目录,可以下载,还有本机C:\WINDOWS\Fonts中有 
imagettftext($img,11,10,20,20,$fc,"simkai.ttf","你好你好"); 
//把字符串写在图片中 
//imagestring($img,rand(1,6),rand(3,70),rand(3,16),$rand,$fc); 
//输出图片 
header("Content-type:image/jpeg"); 
imagejpeg($img); 
?>
<?php 
/* 
* 
* 
*/ 
session_start(); 
if($_POST[sub]){ 
//判断验证码是否相同 
if($_POST[gd_pic]==$_SESSION[check_gd]){ 
echo "验证成功!"; 
}else{ 
echo "验证码错误"; 
} 
} 
?> 
<form action="login.php" method="POST"> 
用户名:<input type="text" name="user"/><br> 
密码:<input type="password" name="pwd"/><br> 
验证码:<imput type="text" name="gd_pic"/><img src="gdchek.php"><br> 
<imput type="submit" name="sub" value="submit"/> 
</form>

