>  기사  >  백엔드 개발  >  写了一个PHP随机问答验证码,安全性个人认为仍是不错的

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

WBOY
WBOY원래의
2016-06-13 11:02:49713검색

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

wangking717 写道
安全特点一:

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
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.