图片验证码优化技术

关于图片验证码的前文可以访问这里:拷贝过来的图片验证码生成类  

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

但是如果不小心就会存在一个问题:

  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. 不厌其烦... ...

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

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

本文思路来源于:sina图片验证码多次刷新都是一样,显示效果不一样而已;

你可能感兴趣的:(图片验证码优化技术)