+ -
当前位置:首页 → 问答吧 → 菜鸟请教验证码问题!

菜鸟请教验证码问题!

时间:2010-01-23

来源:互联网

复制代码
  1. <?php
  2. error_reporting(E_ERROR | E_WARNING | E_PARSE);
  3. date_default_timezone_set('UTC');
  4. session_start();
  5. Header("Content-type: image/PNG");
  6. $im = imagecreate(44,18);
  7. $back = ImageColorAllocate($im, 245,245,245);
  8. imagefill($im,0,0,$back);
  9. srand((double)microtime()*1000000);
  10. for($i=0;$i<4;$i++){
  11. $font = ImageColorAllocate($im, rand(100,255),rand(0,100),rand(100,255));
  12. $authnum=rand(1,9);
  13. $vcodes.=$authnum;
  14. imagestring($im, 5, 2+$i*10, 1, $authnum, $font);
  15. }
  16. for($i=0;$i<100;$i++) {
  17. $randcolor = ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
  18. imagesetpixel($im, rand()%70 , rand()%30 , $randcolor);
  19. }
  20. ImagePNG($im);
  21. ImageDestroy($im);
  22. $_SESSION['VCODE'] = $vcodes;
  23. ?>

上面是验证码代码
另一个页面添加session_start()函数 
用 SCRIPT 来验证时
 
复制代码
  1. if(myform.yanz.value!=<? echo $_SESSION['VCODE']>){
  2.   alert("验证码错误");
  3.   myform.yanz.focus();
  4.   return false;
  5.  }

上面echo 获取的验证码 和下面图片生成的验证码不一致
复制代码
  1.  <tr>
  2.       <td>验证码:</td>
  3.       <td><input type="text" name="yanz" size="10"/> <img src="./yz.php" align="absmiddle" /></td>
  4.     </tr>


求解
echo $_SESSION['VCODE']
如何才能和图片一致?

作者: junhong   发布时间: 2010-01-23

if(myform.yanz.value!=<? echo $_SESSION['VCODE']>){
  alert("验证码错误");
  myform.yanz.focus();
  return false;
}
你这个是客户瑞的``你应该在用$_GET['yanz']或$_POST['yanz']
if($_POST['yanz']!=$_SESSION['VCODE'])
echo"<script>alert("验证码错误");</script>";

作者: 2zmg   发布时间: 2010-01-24

你在建立验证码图片的时候就应该指定:
复制代码
  1. for($i=0;$i<4;$i++){
  2. $font = ImageColorAllocate($im, rand(100,255),rand(0,100),rand(100,255));
  3. $authnum=rand(1,9);
  4. $vcodes.=$authnum;
  5. imagestring($im, 5, 2+$i*10, 1, $authnum, $font);
  6. }
  7. 后面加上一句:
  8. $_SESSION['VCODE'] = $vcodes;

作者: figo0505   发布时间: 2010-01-25

相关阅读 更多