<?php
require_once 'string.func.php';
//通过GD库 做验证码
function verify($type=1,$length=4,$sess_name="verify"){
//创建画布
$width=80;
$height=30;
//创建一个真彩色图像 返回一个图像标识符
$image=imagecreatetruecolor($width,$height);
/*
imagecolorallocate 为一副图像分配颜色
imagecolorallocate() 返回一个标识符,代表了由给定的 RGB
成分组成的颜色。red,green 和 blue 分别是所需要的颜色的红,绿,蓝成分。
这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。imagecolorallocate()
必须被调用以创建每一种用在 image 所代表的图像中的颜色。
*/
$white=imagecolorallocate($image,255,255,255);
$black=imagecolorallocate($image,0,0,0);
//用填充矩形填充画布
/*
矩形区域着色。
语法:
int imagefilledrectangle(int im, int x1, int y1, int x2, int y2, int col);
返回值: 整数
本函数将图片的封闭长方形区域着色。
参数 x1、y1 及 x2、y2 分别为矩形对角线的坐标。
参数 col 表示欲涂上的颜色。
*/
imagefilledrectangle($image,1,1,$width-2,$height-2,$white);
//设置随机字符串
$chars=buildRandomString($type,$length);
$_SESSION[$sess_name]=$chars;
//$fontfile=array('经典趣体简.TTF');
for($i=0; $i<$length; $i++){
$size=mt_rand(14,18);
$angle=mt_rand(-15,15);
$x=5+$i*$size;
$y=mt_rand(20,26);
$fontfile="../fonts/quti.TTF";
$color=imagecolorallocate($image,mt_rand(50,90),mt_rand(20,100),mt_rand(90,180));
/*
定义和用法
substr() 函数返回字符串的一部分。
语法
substr(string,start,length)
*/
$text=substr($chars,$i,1);
/*
ImageTTFText
写 TTF 文字到图中。
语法: array ImageTTFText(int im, int size, int angle, int x,
int y, int col, string fontfile, string text);
返回值: 数组
本函数将 TTF (TrueType Fonts) 字型文字写入图片。
参数 size 为字形的尺寸;angle 为字型的角度,顺时针计算,
0 度为水平,也就是三点钟的方向 (由左到右),
90 度则为由下到上的文字;x,y 二参数为文字的坐标值 (原点为左上角);
参数 col 为字的颜色;fontfile 为字型文件名称,亦可是远端的文件;
text 当然就是字符串内容了。返回值为数组,包括了八个元素,
头二个分别为左下的 x、y 坐标,第三、四个为右下角的 x、y 坐标,
第五、六及七、八二组分别为右上及左上的 x、y 坐标。治募
注意的是欲使用本函数,系统要装妥 GD 及 Freetype 二个函数库。
*/
imagettftext($image,$size,$angle,$x,$y,$color,$fontfile,$text);
}
//干扰元素 点
for($i=0;$i<50;$i++){
imagesetpixel($image,mt_rand(0,$width-1),mt_rand(0,$height-1),$black);
}
header("content-type:image/gif");
//imagegif — 输出图象到浏览器或文件。
imagegif($image);
imagedestroy($image);
}
verify($type=1,$length=4,$sess_name="verify");
require_once 'string.func.php';
//通过GD库 做验证码
function verify($type=1,$length=4,$sess_name="verify"){
//创建画布
$width=80;
$height=30;
//创建一个真彩色图像 返回一个图像标识符
$image=imagecreatetruecolor($width,$height);
/*
imagecolorallocate 为一副图像分配颜色
imagecolorallocate() 返回一个标识符,代表了由给定的 RGB
成分组成的颜色。red,green 和 blue 分别是所需要的颜色的红,绿,蓝成分。
这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。imagecolorallocate()
必须被调用以创建每一种用在 image 所代表的图像中的颜色。
*/
$white=imagecolorallocate($image,255,255,255);
$black=imagecolorallocate($image,0,0,0);
//用填充矩形填充画布
/*
矩形区域着色。
语法:
int imagefilledrectangle(int im, int x1, int y1, int x2, int y2, int col);
返回值: 整数
本函数将图片的封闭长方形区域着色。
参数 x1、y1 及 x2、y2 分别为矩形对角线的坐标。
参数 col 表示欲涂上的颜色。
*/
imagefilledrectangle($image,1,1,$width-2,$height-2,$white);
//设置随机字符串
$chars=buildRandomString($type,$length);
$_SESSION[$sess_name]=$chars;
//$fontfile=array('经典趣体简.TTF');
for($i=0; $i<$length; $i++){
$size=mt_rand(14,18);
$angle=mt_rand(-15,15);
$x=5+$i*$size;
$y=mt_rand(20,26);
$fontfile="../fonts/quti.TTF";
$color=imagecolorallocate($image,mt_rand(50,90),mt_rand(20,100),mt_rand(90,180));
/*
定义和用法
substr() 函数返回字符串的一部分。
语法
substr(string,start,length)
*/
$text=substr($chars,$i,1);
/*
ImageTTFText
写 TTF 文字到图中。
语法: array ImageTTFText(int im, int size, int angle, int x,
int y, int col, string fontfile, string text);
返回值: 数组
本函数将 TTF (TrueType Fonts) 字型文字写入图片。
参数 size 为字形的尺寸;angle 为字型的角度,顺时针计算,
0 度为水平,也就是三点钟的方向 (由左到右),
90 度则为由下到上的文字;x,y 二参数为文字的坐标值 (原点为左上角);
参数 col 为字的颜色;fontfile 为字型文件名称,亦可是远端的文件;
text 当然就是字符串内容了。返回值为数组,包括了八个元素,
头二个分别为左下的 x、y 坐标,第三、四个为右下角的 x、y 坐标,
第五、六及七、八二组分别为右上及左上的 x、y 坐标。治募
注意的是欲使用本函数,系统要装妥 GD 及 Freetype 二个函数库。
*/
imagettftext($image,$size,$angle,$x,$y,$color,$fontfile,$text);
}
//干扰元素 点
for($i=0;$i<50;$i++){
imagesetpixel($image,mt_rand(0,$width-1),mt_rand(0,$height-1),$black);
}
header("content-type:image/gif");
//imagegif — 输出图象到浏览器或文件。
imagegif($image);
imagedestroy($image);
}
verify($type=1,$length=4,$sess_name="verify");
?>
<?php
function buildRandomString($type=1,$length=4){
if($type==1){
$chars=join("",range(0,9));
}elseif($type==2){
$chars=join("",array_merge(range('a','z'),range('A','Z')));
}elseif($type==3){
$chars=join("",array_merge(range('a','z'),range('A','Z'),range(0,9) ));
}
if($length>strlen($chars)){
exit("字符串长度不够");
}
$chars=str_shuffle($chars);
return substr($chars,0,$length);
}