您的位置:首页 > 编程语言 > PHP开发

写了一个PHP随机问答验证码,安全性个人认为还是不错的。

2009-11-26 14:46 357 查看
安全特点一:

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);
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐