飘易博客(作者:Flymorn)
订阅《飘易博客》RSS,第一时间查看最新文章!
飘易首页 | 留言本 | 关于我 | 订阅Feed

PHP验证码程序:session生成图片

Author:Flymorn Source:飘易博客
Categories:PHP编程 PostTime:2008-4-28 11:38:37
正 文:
    昨天捣鼓了一下PHP验证码并生成图片程序,采用了session识别,稍微改进了一下目前网络上流传的PHP验证码,加入杂点,数字颜色随机显示,控制4位数字显示;话不多说了,程序如下,分享出来。

    效果图如下:

PHP验证码程序:session生成图片

    新建yz.php验证码生成文件:

    注意:以下代码需要打开php的GD库,修改php.in文件的配置,把已经注释掉的行之前的分号取消即可:extension=php_gd2.dll。

<?
session_start();
//生成验证码图片
Header("Content-type: image/PNG");
$im = imagecreate(44,18);
$back = ImageColorAllocate($im, 245,245,245);
imagefill($im,0,0,$back); //背景

srand((double)microtime()*1000000);
//生成4位数字
for($i=0;$i<4;$i++){
$font = ImageColorAllocate($im, rand(100,255),rand(0,100),rand(100,255));
$authnum=rand(1,9);
$vcodes.=$authnum;
imagestring($im, 5, 2+$i*10, 1, $authnum, $font);
}

for($i=0;$i<100;$i++) //加入干扰象素

$randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);

ImagePNG($im);
ImageDestroy($im);

$_SESSION['VCODE'] = $vcodes;
?>

    到具体调用的地方,用这样的形式:<img src="/yz.php" align="absmiddle" />就可以了;验证的时候验证session:$_SESSION['VCODE']的值就可以了。还可以对以上代码稍微改进,改成两个数字相加求和的形式,效果可以参见《ASP生成Bmp图片验证码:数字相加求和》。

    ps: 2010.4.20更新:PHP的更高级的验证码移步这里看:随机扭曲、旋转、变形(仿Google验证码)的php验证码
作者:Flymorn
来源:飘易博客
版权所有。转载时必须以链接形式注明作者和原始出处及本声明。
上一篇:Google PR更新了,五一节快乐
下一篇:google adsense出现找女朋友的广告
24条评论 “PHP验证码程序:session生成图片”
2008-4-28 23:05:24
PHP一点都不懂啊,汗
2 不错
2008-10-22 15:49:11
用上了,session_start();真麻烦,不过也解决了。
3 ha
2008-12-1 21:45:01
好!谢谢!
4 鬼武者
2009-2-18 21:52:19
站长好厉害啊!崇拜你!
5 心风
2009-3-4 18:13:36
找了许久终于发现个能用的。感谢。好好研究。
2009-8-23 13:06:18
学习了,拿回去研究
7 小七
2009-8-24 15:03:13
Linux下怎么不能正常显示!!!?求教了1
8 ghb
2009-9-2 15:17:45
这个不显示嘛!
2009-11-5 11:10:41
谢谢,很好用。
10 sky
2009-11-16 12:07:59
为什么显示不出来
11 my name in non
2009-12-19 13:33:22
图片是PNG格式的,换个格式就可以显示了
12 啊~
2010-1-25 15:35:56
我弄出来发现SESSION存的是上一个session期的值
2010-2-8 22:13:31
下载了..谢谢

http://www.vacacionchina.com/
2010-3-21 9:52:38
下载去研究一下
15 jackbauer
2010-5-24 0:44:37
博主可否详细告知php验证码的知识啊,不胜感激。。bauerctu@vip.qq.com
16 dk79999
2010-11-7 20:58:25
不错 支持楼主 ,用上了 效果很好
2011-2-9 15:25:01
一直在找可用的验证码,可惜这个没有安全性
2011-5-9 11:35:52
Tony’s imgBorn,php图像生成类,多功能验证码,缩略图,水印.
我最近写的,已经封装好,比较安全
19 FASTOREE
2011-5-17 18:42:06
搞定了 不用传值。直接调用就对了
2011-9-21 17:41:27
代码有误,第14行$vcodes.=$authnum; 应该改为:$vcodes=$authnum; 否则显示不出来的
2011-9-21 21:15:24
我这边测试时要加一句:$vcodes = ""; 否则$vcodes.=$authnum;这一句会出错
22 luckboy
2012-5-7 12:50:35
我发现最好用的验证码是皕应的 http://www.hinsite.com hcaptcha,还有动画的效果也不错,听说是最专业的验证码系统,呵呵,我的项目里有那个的情况感觉也不错,还挺稳定的
23 luckboy
2012-5-8 8:34:01
用皕应的hcaptcha验证码吧,
24 luckboy
2012-5-11 15:06:31
用皕应的HCaptcha吧,不用这么麻烦,安全,专业,毕竟是专门做这个的,我们项目用了这个感觉非常不错,推荐 http://www.hinsite.com
发表评论
名称(*必填)
邮件(选填)
网站(选填)

记住我,下次回复时不用重新输入个人信息
© 2007-2010 飘易博客 Www.Piaoyi.Org 原创文章版权由飘易所有 渝ICP备07006361号