A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余志强 黑马帝   /  2011-10-2 15:53  /  2435 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一些网站通常次采用Session中记录用户发帖的时间,然后通过一个时间间隔来限制用户连续发帖的数量,怎么编写一个程序限定两次提交表单的最小时间间隔的程序来模拟这种应用呢?比如上一次发帖的时间是2011-10-2 15:50 那么必须等待1分钟才能继续发帖?

评分

参与人数 1技术分 +1 收起 理由
詹季春 + 1 学无止境

查看全部评分

6 个回复

倒序浏览
黑马网友  发表于 2011-10-2 15:56:25
沙发
使用多线程中的sleep。
回复 使用道具 举报
写的简便一点,就比如在jsp页面吧,使用小脚本,这样你看起来更方便一点。[code=java]<%
        long nowTime = new Date().getTime();//首先拿到当前时间
        Object obj = session.getAttribute("lastPost");//取得上一次发贴时间
        if(obj != null) {
                long lastPostTime = Long.valueOf(obj + "");
                if((nowTime - lastPostTime) / 1000 < 60){//比较日期
                        out.println("发贴时间间隔必须超过1分钟");
                } else {
                        //执行发贴语句
                        out.println("发贴成功!");
                        session.setAttribute("lastPost", nowTime);//要记得将此次发贴的时间记录到session中
                }
        } else {//obj为空,说明上一次没有发贴,可以直接发贴
                //执行发贴语句
                out.println("发贴成功!");
                session.setAttribute("lastPost", nowTime);//要记得将此次发贴的时间记录到session中
        }
%>[/code]
[ 本帖最后由 许晨峰 于 2011-10-02  16:54 编辑 ]

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-10-2 17:53:24
板凳
有时我们要限制用户重复刷新一个页面。很多站点对于录入操作都用验证码来限制恶意灌水。但是如果是在一套web管理系统中,执行一段没有界面的逻辑操作代码时,就不能用验证码了。我们一般用session来限制。下面就是一个包装的函数,用法很简单。

'操作限制函数
'塞北的雪 制作
'www.knowsky.com
'SessionName  session的名字
'SecondSpan   时间间隔(单位:秒)
function CanDoRepeat(SessionName,SecondSpan)
xx=timer()
if session(SessionName)="" then  
     session(SessionName)=xx
else
     if xx-session(SessionName)<SecondSpan then
        CanDoRepeat=false
     else
        session(SessionName)=xx
        CanDoRepeat=true
     end if
end if
end function

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-10-2 18:03:42
报纸

回复 板凳 的帖子

。。。  。。。
回复 使用道具 举报
每个发帖请求记录当前时间,和上一次比较
回复 使用道具 举报
黑马网友  发表于 2011-10-2 19:18:19
7#
再使用Session的getLastAccessedTime()方法取得一个session的上一次最后操作时间,然后再使用Session的getLastAccessedTime()取得本次操作的最后时间,然后用本次操作的最后时间减去上次操作的最后时间,如果大于一分钟就让客户提交,反之不让提交。

评分

参与人数 1技术分 +1 收起 理由
wangfayin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马