To xuzuning(唠叨):我怎么判断他是否登录?数据库加入一个标记?设超时30分钟。 可是如果他10分钟页面关闭,我又怎么更新数据库呢?
To xuzuning(唠叨):我怎么判断他是否登录?数据库加入一个标记?设超时30分钟。 可是如果他10分钟页面关闭,我又怎么更新数据库呢?那你在用户登陆的时候判断 如果上次登陆时间在10分钟之内的就说明已经登陆,警告它不让它登陆 如果上次登陆时间在30分钟以外的说明他是自己关闭的页面,放行并更新上次登陆时间
liyujie2000(开心的鱼)你的方案2: 你认为怎么踢好? 我第二台机子登录,发现 session_id 与第一个台机子的不符,然后更新数据库,那如何踢 第一个呢?删除 session 文件? How to do it? session_destory()结束目前的session; session_unregister(); //好像不行
echo "<meta http-equiv=refresh content='3;'>';
?>
这个怎么写?
2、不能用seesion_id判断。seesion_id只针对独立的连接,每个浏览器都有唯一的seesion_id
你不可能遍历全部session临时文件去查找的
可是如果他10分钟页面关闭,我又怎么更新数据库呢?
可是如果他10分钟页面关闭,我又怎么更新数据库呢?那你在用户登陆的时候判断
如果上次登陆时间在10分钟之内的就说明已经登陆,警告它不让它登陆
如果上次登陆时间在30分钟以外的说明他是自己关闭的页面,放行并更新上次登陆时间
我写过一个,是ip地址验证的,好处是不用考虑是否在线的问题,不过如果是那种共享上网的就没有办法了,我的思路是在登录时记录其ip地址,然后用实际得到的ip与记录中的比较,如果不同则为无效用户。这样最直接的结果就是先登录的就失效了
如果你的网站,访问量不大,(内部使用就2,3百人)的情况
可以采用 唠叨 的办法
==============================>
给用户表加一个字段记录该用户最后访问时间。
当有用户注册或访问时,检查该时间是否有或是否超时30分钟
==============================>
当前的用户每访问一次,每个页面的头上,都对其最后访问时间进行更新这样的做法是,控制好,很准确,准确的符合用户的需要。
但是效率不够,因为每个页面的前面,总要更新用户最后访问的时间,以保持最新。
在访问量不高的情况下可以。
如果你的用户很多,访问也很频繁,那么方案1就不适合了,因为数据服务器的负担太重。//--------------------------------------------------------------------------------
// 注:开个小页面刷新,不建议使用,因为其开销更大,你做个什么学习的 sample 还可以。其效率还没有 方案1好。
//--------------------------------------------------------------------------------方案2:
把 session_id ,以及用户 login_name 存在数据库里面。
采用后登入者踢出前登入者的思路。(楼主自己也提到这点)(MSN Messager也是如此)
采用踢出的办法,比较安全。 不会存在死锁的问题。
而且对数据库的操作少,负荷轻。(建议使用)
你认为怎么踢好?
我第二台机子登录,发现 session_id 与第一个台机子的不符,然后更新数据库,那如何踢
第一个呢?删除 session 文件?
How to do it?
session_destory()结束目前的session;
session_unregister(); //好像不行
但是在这段时间内,进行操作的话就永远不掉线
至于如何实现,我也想知道……怎么定义时间的判断呢?
要session吗,或者除了session还需要什么?
你页面中定义一个帐户ID存放在每个页的SESSION里。第二个用户登录以后他的帐户ID又会存在同样变量的SESSION里,自然之前的页面就不能再以以前的身份进行任何操作了。
很EASY,你可以亲自去试,不用这么多疑问。
也不需要session_destroy
一旦session timed out,存放在SESSION里才用户ID就没有了,于是页面无法访问。更不需要什么建立个表来跟踪时间。
唯一需要跟踪时间的可能就是统计在线人数了。