check address
http://community.csdn.net/Expert/topic/5292/5292326.xml?temp=.9127313
主要看你验证模式的设计了
看看我的这样设计,应该是没什么问题
验证码及防重复提交实现方案
可以考虑建立如下数据表:
编号:int
Session编号:int
验证码:string
有效期限:DateTime
提交完毕:bool
所有需要进行提交验证的页面,初始化时需检索此表,找寻提交过的记录或是已超时的记录来复写数据,如没有则增加新的记录来存储数据,然后将记录的编号写入页面体的隐藏域中。
客户端返回数据时根据获取的隐藏域中编号来验证提交进程是否有效以及验证码是否正确。(可以抛出自定义异常实例,由调用页捕获后跳转到提示页显示)
验证码就是防止这个问题的,每次生成的验证码都不同,而验证码的值保存在服务器端。
这个就可以避免重复大量的发贴
提醒大家,验证码的值保存在服务器端还是在客户端
,记得用完一定要清空,否则有漏洞啊.
页面保存后cookie是会被保存,这样验证码的确不起作用,所以要另一个cookie验证过期时间,这个时间一般很短,用于标记验证码是否有效,这比什么数据库结合方式好多了,掏宝就是这么做的。
,记得用完一定要清空,否则有漏洞啊.
验证码要及时刷新,特别是回退的时候
要不然就起不到验证的作用了
验证码一般用SESSION来获取值
一般提示错误最好别用history.back()来进行操作的回滚,也就是后退,这样不会产生新的SESSION值
如果用Url转向,比如
location.href='登陆页面'
这样的方法进行刷新页面
---------------------
这样即可 即时 刷新
<img alt="点击刷新..." src="" style="cursor:pointer;" id="vcodeimg" onclick="this.src='validate.aspx?time=' + Math.random();" />
<script language="javascript" type="text/javascript"> document.getElementById('vcodeimg').src='validate.aspx?time='+ Math.random();
</script>
浙公网安备 33010602011771号