Sean.Pu的专栏

--问题有很多种,解决问题的方法更多 (提供开放性博客迁移服务:http://www.blogmove.cn)

原创 图片验证码优化技术收藏

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

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

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

  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图片验证码多次刷新都是一样,显示效果不一样而已;

发表于 @ 2007年07月31日 11:14:00|评论(loading...)

新一篇: 无知者无畏 | 旧一篇: 太佩服我自己了

Csdn Blog version 3.1a
Copyright © Sean.Pu