<?php
session_start();//初始化session变量
//创建一个4位的验证码,并且将生产的验证码保存在session变量中
@ header('content-type:image/png');//向页面输出图像时,一定要加上这句,否则乱码//设置图像输出格式
$img_width = 70;
$img_height= 18;//图形验证码的宽和高
srand(microtime()*100000);//设置随机数种子
$check_num="";
for($i=0;$i<4;$i++)//循环输出一个4位的随机数
{
$check_num.=dechex(rand(0,15));//dechex 返回一字符串,包含有给定 number 参数的十六进制表示。
//累加得到的随机数
}
$_SESSION["check_checks"]=$check_num;//将获取的随机数验证码写入到Session变量中
$num_image=imagecreate($img_width,$img_height);//创建一个画布
imagecolorallocate($num_image,255,255,255);//设置画布的颜色 白色
for($j = 0;$j < strlen($_SESSION["check_checks"]);$j++)
{
$font=mt_rand(3,5);//;设置随机数的字体 产生随机数值的平均速度比 libc 提供的 rand() 快四倍。
$x =mt_rand(1,8)+$img_width*$j/4;//设置随机数字符所在的位置X坐标
$y =mt_rand(1,$img_height/4); //设置随机数字符所在的位置y坐标
//以上的目的是为了 每个数字之间 留有间隔
//为随机数创建颜色,每一个随机数颜色都是随机的 RGB 值
$color = imagecolorallocate($num_image,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));
/*
imagestring — 水平地画一行字符串
说明
bool imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )
imagestring() 用 col 颜色将字符串 s 画到 image 所代表的图像的 x,y 坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果 font 是 1,2,3,4 或 5,则使用内置字体。
*/
imagestring($num_image,$font,$x,$y,$_SESSION["check_checks"][$j],$color);
} //end for 循环
//以上for循环后 画布 $num_image 已经存在数字形状的 图像了
//接下来 输出它
imagepng($num_image);
imagedestory($num_image);//释放图像资源
?>