PHP生成验证代码的一个简单示例
1首先看代码
< PHP
标题(内容类型:文本/ HTML;字符集= UTF-8); / /套编码风格的页面
页眉(内容类型:图像);注意浏览器输出是jpeg格式的图像。
$ img =新建一个真彩色图像(150,50); / /创建画布设置X轴Y轴的50尺寸150
背景颜色= imagecolorallocate美元(美元IMG,mt_rand(0255),mt_rand(0255)、(0255)mt_rand); / /分布的背景颜色
imagefill($ 0, 0美元的数据,背景颜色); / / / /填充图像背景
imagejpeg($ IMG); / /输出图像
销毁一图像($ IMG); / /破坏形象
>
现在,把上面的代码结合起来分析和分析上面用到的几个函数:
(1)新建一个真彩色图像();
新建一个真彩色图像,创建一个真正的彩色图像(感觉哇,这么长时间,其实仔细看的话,记得图像/创建/真的/彩色,真彩色图像是什么往下看.
资源新建一个真彩色图像(int int美元美元的宽度,高度)
新建一个真彩色图像的两个函数()和()都可以创造油画画面欣赏
资源画面欣赏(int int x_size美元,美元y_size)
新建一个真彩色图像()创建一个大小为X和Y的黑色图像(即使它被称为真彩色图像默认是黑色的,)。如果我们想改变背景颜色,我们需要填写颜色功能imagefill($ IMG,0,0,合色)。
Imagecreate create a new blank image resource, add background color with imagecolorAllocate ()
上述两个函数只是函数的两种方法。
(2)imagecolorallocate();
imagecolorallocate为图像指定颜色
国际imagecolorallocate(资源为图像,int int美元美元的红色,绿色,蓝色为美元)
随着这些参数的RGB颜色组合的颜色是一个0到255或十六进制整数0x00到0xFF。
(3)mt_rand();
mt_rand产生更好的随机数
mt_rand(int int int max min美元,美元)
$分钟可选,返回最小值(默认:0)$最大可选,返回最大值(默认:mt_getrandmax())
这是让他随机生成的背景色,0-255的随机值。所以页面不刷新画布背景颜色是不同的。
设计素描 uff1a
2启动干扰线、干扰点,防止验证图像被二次识别。
< PHP
标题(内容类型:文本/ HTML;字符集= UTF-8); / /套编码风格的页面
页眉(内容类型:图像);注意浏览器输出是jpeg格式的图像。
$ img =新建一个真彩色图像(150,50); / /创建画布设置X轴Y轴的50尺寸150
背景颜色= imagecolorallocate美元(美元IMG,mt_rand(0255),mt_rand(0255)、(0255)mt_rand); / /分布的背景颜色
添加干扰线和3个周期,随机背景色
($ i = 0;$ i < 3;$ + +){
颜色= imagecolorallocate美元(美元IMG,mt_rand(0255),mt_rand(0255),mt_rand(0255));
imageline($ IMG,mt_rand(0150),mt_rand(0.5),mt_rand(0150),mt_rand(0.5美元),颜色);
}
添加干扰,25个循环,随机背景色
($ i = 0;$ i < 25;$ + +){
分别为imagecolorallocate美元(美元IMG,mt_rand(0255),mt_rand(0255),mt_rand(0255));
imagesetpixel($ IMG,mt_rand(0150),mt_rand(0,60),$分别);
}
imagefill($ 0, 0美元的数据,背景颜色); / / / /填充图像背景
imagejpeg($ IMG); / /输出图像
销毁一图像($ IMG); / /破坏形象
>
功能分析:
(1)imageline();
imageline绘制线段
布尔imageline(资源为图像,int int美元美元X1,Y1,int int美元美元x2,y2)
imageline()使用的颜色在图像的坐标X1画一条线,Y1到x2,y2(图像的左上角的是0, 0)。
imageline($ IMG,mt_rand(0150),mt_rand(0.5),mt_rand(0150),mt_rand(0.5美元),颜色),这意味着从坐标X1,$ IMG随机,在画布上为IMG。
(2)imagesetpixel();
imagesetpixel -绘制单个像素
布尔imagesetpixel(资源为图像,int x美元,int Y元,int $色)imagesetpixel()是用来在在左上角的图像坐标的彩色图像颜色美元画一个点(0, 0)。
imagesetpixel($ IMG,mt_rand(0150),mt_rand(0,60),分别美元);相同的效果图的具体含义:
3添加验证字母数字
< PHP
标题(内容类型:文本/ HTML;字符集= UTF-8); / /套编码风格的页面
页眉(内容类型:图像);注意浏览器输出是jpeg格式的图像。
$ img =新建一个真彩色图像(150,50); / /创建画布设置X轴Y轴的50尺寸150
背景颜色= imagecolorallocate美元(美元IMG,mt_rand(0255),mt_rand(0255)、(0255)mt_rand); / /分布的背景颜色
添加干扰线和3个周期,随机背景色
($ i = 0;$ i < 3;$ + +){
颜色= imagecolorallocate美元(美元IMG,mt_rand(0255),mt_rand(0255),mt_rand(0255));
imageline($ IMG,mt_rand(0150),mt_rand(0.5),mt_rand(0150),mt_rand(0.5美元),颜色);
}
添加干扰,25个循环,随机背景色
($ i = 0;$ i < 25;$ + +){
分别为imagecolorallocate美元(美元IMG,mt_rand(0255),mt_rand(0255),mt_rand(0255));
imagesetpixel($ IMG,mt_rand(0150),mt_rand(0,60),$分别);
}
添加验证字母或数字的需要
rand_str美元=qwertyuiopasdfghjklzxcvbnm1234567890 ; / /需要用一些字母和数字认证
str_arr美元=(阵列); / /数组名
对于($ i = 0;$ i < 4;$ + +){ 4循环,有四个随机字母或数字
POS =(0美元mt_rand strlen($ rand_str)- 1);
str_arr美元{ } = $ rand_str { $ POS }; / /临时交换
}
x_start美元= 150 / / / 4;单个字符的位置
foreach(str_arr美元美元关键){
字体颜色= imagecolorallocate美元(美元IMG,mt_rand(0255),mt_rand(0255),mt_rand(0255));
imagettftext($ IMG,25,mt_rand(- 15,15),x_start美元,50美元/ 2,字体颜色,C: / / / Windows字体宋体。TTF
x_start美元= 20; / /后沿着穿越+ 20 x轴的单个字符
}
imagefill($ 0, 0美元的数据,背景颜色); / / / /填充图像背景
imagejpeg($ IMG); / /输出图像
销毁一图像($ IMG); / /破坏形象
>
功能:
Imagettftext();
imagettftext在TrueType字体的图像文字
阵列(资源imagettftext美元浮动图像,美元浮动美元大小,角度,int x美元,int Y元)。
分析以下代码:
imagettftext($ IMG,25,mt_rand(- 15,15),x_start美元,50美元/ 2,字体颜色,C: / / / Windows字体宋体。TTF
虽然美元-----------帆布
这25 -----------字体大小。
mt_rand(- 15,15),从左到右读课文0度角点系统。值越高,代表逆时针旋转90度。例如,代表文本读起来。(它的字体,角度的问题)
x_start美元----------很容易理解是角色的X轴的位置
的50 / 2 ----------字符高度
美元----------字符颜色字体颜色
到C的路径: / / / verdana.ttf Windows字体字体字
关键-----------穿越后人物美元
uff1a效应
它看起来很可爱。
以上是一个简单的PHP生成验证码的例子,是由萧边。我们希望能给你一个参考,并希望你能支持它。