FF 验证码调试问题

2013 - 8 - 16 作者 : Jimco 分类 : 杂七杂八

    最近在处理用户注册、登录 bug 的时候,在 Firefox 下碰到一个问题,先上图:

 

点击查看原图

图1:Firebug网络请求里查看到的响应

 

点击查看原图

图2:php 中存入 SESSION 的验证码


    可以看到 图1 中 Firebug 响应的图片和 html 中展示的验证码并不一致,图2 控制台中打印出的是我们存入 SESSION 的验证字符,和展示页面的验证码一致。

    作为对照,还在 IE7 和 Chrome 的调试工具中进行了测试,均没能重现此问题。猜测是否是调试工具又重新发了一次请求导致验证码刷新,但是php 打印出来的字符只有一个,显然这个猜测不合理。如果说是缓存问题,刷新页面对比网络请求,没能发现存在缓存的证据~~

    这个问题影响到了实际业务,看着相当让人不放心,奈何有点脑子有点不够用敢脚,先贴上代码,兄弟们帮忙看看:

<?php
  /**
   * checkcode.php
   */
  // include '../debug/ChromePhp.php';
  // include '../debug/FirePHPCore/fb.php';
  session_start();
  function random($len){
    $srCStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    $strs = '';
    for($i = 0; $i < $len; $i++){
      $strs .= $srCStr[mt_rand(0, 35)];
    }
    return $strs;
  }
  $str = random(4); // 随机生成的字符串
  $width = 50;      // 验证码图片的宽度
  $height = 25;     // 验证码图片的高度
  @header('Content-Type:image/png');
  $_SESSION['code'] = $str;
  $im = imagecreate($width, $height);
  //背景色
  $back = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
  //模糊点颜色
  $pix = imagecolorallocate($im, 187, 230, 247);
  //字体色
  $font = imagecolorallocate($im, 41, 163, 238);
  //绘模糊作用的点
  for($i = 0; $i < 1000; $i++){
    imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $pix);
  }
  imagestring($im, 5, 7, 5, $str, $font);
  imagerectangle($im, 0, 0, $width-1, $height-1, $font);
  imagepng($im);
  imagedestroy($im);
  // ChromePhp::log($str);
  // fb($str);
  $_SESSION['code'] = $str;
?>
<!DOCTYPE HTML>
<html>
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Checkcode Demo</title>
</head>
<body>
  <img src="http://localhost/demo/checkcode.php" alt="验证码"> 
</body>
</html>


除虫后记:

    问题根源找到,傻叉了,开始既然怀疑是调试工具又发了一次请求,居然还愣愣地用 firebug 查看,很明显,这货儿明显不把自己发出的请求当回事。开了 Rythem, 抓到了二次请求,原来在查看 firebug 请求的时候,居然走的不是缓存,而是重新去服务器请求了一次,结果就是 session 被重置,当然页面验证也会失败

    最后,多谢群里的兄弟一起讨论解决问题!总结,Firebug 这个坑爹货!

 

9986 人围观 / 3 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18

Powered by Jimco

©2013 前端那些事儿 Designed by Jimco

About me|意见反馈