1.首先先展示一下我写的源代码+session保存验证码
<?php
session_start();
session_register("login_check_number");
$img_height=70;//先定义图片的长 宽
$img_width=25;
$authnum='';
//生成验证码字符
$ychar="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
$list=explode(",",$ychar);//使用分隔符存储到数组中
for($i=0;$i<4;$i++){
$randnum=rand(0,35);
$authnum.=$list[$randnum];
}
//把验证码字符保存在session
$_SESSION["login_check_number"] = $authnum;
$aimg=imagecreate($img_height,$img_width);//生成图片
imagecolorallocate($aimg,255,255,255);//图片底色
$black=imagecolorallocate($aimg,0,0,0);//定义黑色
for($i=1;$i<=100;$i++)
{
imagestring($aimg,1,mt_rand(1,$img_height),mt_rand(1,$img_width),"@",imagecolorallocate($aimg,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)));
}
//为了区别背景,这里的颜色不超过200,上面的不小于200
for($i=0;$i<strlen($authnum);$i++){
imagestring($aimg,mt_rand(3,5),$i*$img_height/4+mt_rand(2,7),mt_rand(1,$img_width/2-2),$authnum[$i],imagecolorallocate($aimg,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)));
}
imagerectangle($aimg,0,0,$img_height-1,$img_width-1,$black);//画一个矩形
header("Content-type:image/PNG");
imagepng($aimg);
imagedestroy($aimg);
?>
解释:
A.explode函数是将某个字符放于数组中存储
explode(",",$ychar)
B.红色第二部分是将数组中的数按随机选择存储在数组上去
C.imagestring() 用 col
颜色将字符串 s
画到 image
所代表的图像的x
,y
坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果 font
是 1,2,3,4 或 5,则使用内置字体。
D.imagecolorallocate() 返回一个标识符,代表了由给定的 RGB 成分组成的颜色。red
,green
和 blue
分别是所需要的颜色的红,绿,蓝成分。这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。imagecolorallocate()必须被调用以创建每一种用在image
所代表的图像中的颜色。