PHPQQ验证码实例分析
如果你需要朋友,请参考。复制代码代码如下所示:
< PHP
* QQ验证码
* /
会话保存路径
sesssavepath美元= dirname(__file__)。…;
如果(is_writeable($ sesssavepath)is_readable($ sesssavepath)){ session_save_path($ sesssavepath);}
session_start();
获取随机字符
rndstring美元=;
为($我= 0;$i < 4;$我+ +)$ rndstring = CHR(mt_rand(65,90));
img_height美元= 45; / /定义的长度和宽度的图片
img_width = 10美元;
如果GD,那么绘图
如果(function_exists(画面欣赏))
{
Firefox的部分情况会被问多次,刷新页面在5秒内不会改变会话。
$ N倍=时间();
如果(空(美元_session { 'dd_ckstr_last ' })空(美元_session { 'dd_ckstr})| | | |($ N倍至_session { 'dd_ckstr_last} > 5))
{
_session美元{ 'dd_ckstr} = strtolower($ rndstring);
_session美元{ 'dd_ckstr_last} = $ N倍;
}
rndstring美元美元'dd_ckstr_session { } =;
rndcodelen美元= strlen($ rndstring);
创建一个图片,并设置背景色
$我=画面欣赏(46,20);
imagecolorallocate(合我,240243248);
线路干扰
linecolor1美元= imagecolorallocate(合我,mt_rand(174218),mt_rand(190225),mt_rand(217237));
对于($ = 1;$ = 2;$ j = $ J + 3)
{
imageline(合我,0,J + mt_rand(15),48,J + mt_rand(15),linecolor1美元);
}
输出文本
字体颜色= imagecolorallocate美元(合我,mt_rand(0150),mt_rand(0150),mt_rand(0150));
为($我= 0;美元美元美元我<< rndcodelen;i++)
{
公元前mt_rand美元=(0,1);
rndstring美元{ $我} = strtoupper($ rndstring {我});
imagestring(合我,mt_rand(3,5),为我img_height美元/ 4 + mt_rand(1,5),mt_rand(1,$ img_width / 2),rndstring美元美元美元{我},字体颜色);
}
标题(杂注:无缓存Rn);
标题(缓存控件:无缓存;
标题(过期:0;
输出特定类型的图像格式,优先顺序是GIF - PNG
如果(function_exists(imagepng ))
{
页眉(内容类型:图片;
imagepng(为我);
}
其他的
{
页眉(内容类型:图像;
imagejpeg(为我);
}
销毁一图像(为我);
出口();
}
其他的
{
不支持GD,输出字母ABCD
_session美元{ 'dd_ckstr} =ABCD;
_session美元{ 'dd_ckstr_last} =;
页眉(内容类型:图片;
标题(杂注:无缓存Rn);
标题(缓存控件:无缓存;
标题(过期:0;
$ FP = fopen(数据 / vdcode .jpg
回声fread($ FP,文件大小(数据 / vdcode .jpg));
Fclose($ FP);
出口();
}
>