rainman
阿熊
元老
发贴: 5644
积分: 454
|
于 2002-12-12 08:14
修改了一下逻辑,变成这样: 1.用户登陆:数据库中最新登陆时间变成当前时刻t1,数据库中最新阅读时刻也同时变成最新时刻t1,但Session里保存了上一次的阅读时刻t0,并一直持续到整个会话期间;(注意,t1在这次会话中没用处,起作用的是t0,t1是为下一次会话做准备的)
2.会话过程中,阅读论坛上任何文章不会影响t1和t0。如此刻用户如果在另一台机器(或重新开一个IE实例),新的Session里保存的就会是t1。但两个IE实例并不互相影响。
3.“标记已读”动作触发,将对比Session里保存的t0和数据库中保存的t1 if ( lastLogon.getTime()<=lastRead.getTime() ) { //t0<=t1 那么Session将最新阅读时刻保存当前时刻t2,所有文章都被标记已读。 } else { //t0 > t1 那么Session将最新阅读时刻保存为t0,t0以后的文章均为新文章,也就是这次登陆后新发表的文章仍然会出现在新文章列表里。 }
也就是一次会话过程中,第一次点标记已读,不会清掉登陆后发的文章,但这次会话以后再点的话,就会清掉所有文章了。
4.如果会话过程中一次也没点“标记已读”,下一次会话以t1为准判断新文章。
|