天道酬勤

关于图片验证码的一些优化

上一篇 / 下一篇  2008-05-12 14:52:58 / 个人分类:Web

51Testing软件测试网Cn O(p9HbNx_?3R~

出处:http://blog.csdn.net/platform/archive/2007/07/31/1718648.aspx

al9BI!M0 51Testing软件测试网:cn] mD

关于图片验证码的前文可以访问这里:拷贝过来的图片验证码生成类  51Testing软件测试网6B+x)q&^-[1R/x%K

51Testing软件测试网@X E.}:F#Z+m j

为了防止灌水机等恶意程序对论坛和博客进行宣传性回复(垃圾回复),很多博客使用了图片验证码,如我前文所示

l&g_I!x&v?2B0

6D M%W+MGNb-tdmF0但是如果不小心就会存在一个问题:51Testing软件测试网)M _xpWc${

  1. 当你打开多个Blog时,图片验证码就生成了多次;
  2. 例如open1.aspx,open2.aspx,open3.aspx;
  3. 如果不小心的话就会存在一个问题,open3.aspx的图片验证码产生的session覆盖了open1.aspx和open2.aspx中的session保存的数值;
  4. 那么当你对open1.aspx进行回复时,系统会告诉你验证码错误,重试;
  5. 好,刷新open1.aspx,产生新的图片验证码和session,重新输入验证码,OK;
  6. 但是当你回复open3.aspx时又会提示你错误;
  7. 不厌其烦... ...
51Testing软件测试网$[ R&`!c;X

解决问题的方法其实很简单,但是也不完美:

"KK/[3n/m5L*Mp0
  1. 在产生验证码时判断session中是否有值;
  2. 有值就使用原值生成验证码,没有就新生;
  3. 这样的话open1.aspx,open...aspx的图片验证码都是一样
  4. 验证码使用过后就清除调原来的session;
  5. 这样的话当你回复任何第一个页面时都不会报错;
  6. 但是回复第二个页面时就可能出错;
  7. 一个不完美的方法是给session加上计数器,当计数器为某个值时才清掉session,计数器回0;
  8. 未到最大值时所有页面的图片验证码都是一样的,回复一次,计数器减一;
  9. 这样的话使用图片验证码的不单可以防止灌水机,同时也顺畅了访问者的访问。
51Testing软件测试网:H-[r"lJ1Z/\

本文思路来源于:sina图片验证码多次刷新都是一样,显示效果不一样而已51Testing软件测试网$pAvSih/n/X@W


TAG: Web

 

评分:0

我来说两句

日历

« 2024-04-24  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 41188
  • 日志数: 65
  • 图片数: 1
  • 文件数: 2
  • 书签数: 13
  • 建立时间: 2006-12-27
  • 更新时间: 2008-05-31

RSS订阅

Open Toolbar