写了一个PHP随机问答验证码,安全性个人认为还是不错的。
2009-11-26 14:46
357 查看
安全特点一:
1.生成的内容不是最终结果,而是一个问答系统,需要用户回答该问题,安全系数较传统验证码更为严谨。
2.生成的每个数字的颜色,字体,位置都是随机的,这样别人很难捕获到程序的规则。(干扰线就没去弄了)
如果有什么好的提议,可以留言,一起改善代码:
1.生成的内容不是最终结果,而是一个问答系统,需要用户回答该问题,安全系数较传统验证码更为严谨。
2.生成的每个数字的颜色,字体,位置都是随机的,这样别人很难捕获到程序的规则。(干扰线就没去弄了)
如果有什么好的提议,可以留言,一起改善代码:
<?php //$i为要写在画板的位置,$num为要写的文字 function rand4string($i,$num){ global $image_width,$image_height,$img; $font=mt_rand(3,5); $x=mt_rand(1,8)+$image_width*$i/6; $y=mt_rand(1,$image_height/4); $color=imagecolorallocate($img,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)); imagestring($img,$font,$x,$y,$num,$color); } session_start(); header("content-type:image/png"); $image_width=80; $image_height=18; $img = imagecreate($image_width,$image_height); imagecolorallocate($img,255,255,255); $random4symbol = array("+","-","x"); //三个符号进行循环 $result = 0; $symbol = $random4symbol[mt_rand(0,count($random4symbol)-1)]; $num1 = mt_rand(1,9); rand4string(0,$num1); $num2 = mt_rand(1,9); switch ($symbol){ case "+": $result = $num1 + $num2; rand4string(1,"+"); break; case "-": $result = $num1 - $num2; rand4string(1,"-"); break; case "x": $result = $num1 * $num2; rand4string(1,"x"); break; } rand4string(2,$num2); rand4string(3,"="); rand4string(4,"?"); $_SESSION['code'] = $result; imagepng($img); imagedestroy($img); ?>
相关文章推荐
- 一个不错的php验证码的类
- 一个不错的php个人技术博客网站
- 用Unity做的一个小游戏,仿照一个样例写的,个人认为文章写的不错,哈哈
- 给大家推荐一个个人认为不错的网站 tech on the net
- 一个显示效果非常不错的PHP错误、异常处理类
- PHP几个误区,个人觉得PHP不错!
- LSM树——LSM 将B+树等结构昂贵的随机IO变的更快,而代价就是读操作要处理大量的索引文件(sstable)而不是一个,另外还是一些IO被合并操作消耗。
- 在php中判断一个请求是ajax请求还是普通请求的方法
- 个人写的PHP验证码生成类分享
- 一个漂亮的php验证码类(分享)
- 给大家共享一个个人认为非常好的动画网站
- asp.net2.0生成一个复杂的验证码,背景随机,字体随机,中英文数字随机
- C/C++判断一个数是奇数还是偶数的新算法(也许早有人想到了,但我个人刚想到,所以算原创吧^_^)
- PHP 生成随机的验证码图片
- 个人认为想成为一个合格的JAVA初级程序员应该具备如下知识:
- c#:猜数字游戏!系统随机给出一个0至99(包括0和99)之间的数字,然后让你猜是什么数字。你可以随便猜一个数字,游戏会提示太大还是太小,从而缩小结果范围。经过几次猜测与提示后,最终推出答案
- 在网上发现了一个实用的获取ID的js,虽然简单.但我认为不错
- php学习笔记:利用gd库生成图片,并实现随机验证码
- 一个比较不错的PHP日历类分享