wangking717 写道
安全特点一:
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); ?>
?
打完收工。。呵呵。
1 楼 521069108 2011-09-21
唔,有点意思,能只能增加中文回答之类的不呢?
2 楼 521069108 2011-09-21
估计要存数据库才能实现我说的那样 - 0