2010-10-20 90 views
1

我有这个问题。我的网站是建立在一个用户只有在登录后才能进入会员的页面。因此,每一页都有此,PHP会话。管理员如何销毁用户的会话

如果(!$ _ SESSION [“用户id”])头的index.php

问题是,如果我禁止用户和用户没有结束的会议上,他仍然会允许使用该网站,直到他结束会话并尝试再次登录,并且由于数据库中状态的更改,他将被拒绝。

我在想,唯一的办法是删除服务器中的物理会话文件,但我不知道如何。任何人?

回答

1

我所做的是在头文件中创建一个数据库查询,该文件包含在每个页面中,该页面可以抽取用户配置文件或检查是否被禁用。如果是的话,我destroy their session

+0

问题应该是,如果用户不改变页面,他不停地发布东西,它仍然会工作,顺便说一句,我通过Ajax发布,因此该页面不刷新。 – john 2010-10-20 19:36:09

+0

@john你可以通过ajax发布,但你的ajax仍然在调用一个.php页面吗? – Bot 2010-10-20 19:38:28

0

你需要做的是在你的ajax中添加用户标识或其他信息以标识特定用户发布。这样,您可以检查服务器端是否允许用户发布每篇文章,并且如果不采取必要的措施。

0

除非你使用多级目录中保存方法,这样的事情很可能是不够的:

unlink(ini_get('session.save_path') . 'sess_' . $bannedSessionID)); 

检查您的服务器的会话文件有“sess_”前缀,虽然。它可能在某处被覆盖。但在任何情况下,默认情况下,所有会话文件都位于单个目录中(/ tmp,除非它们已被移动)并且可以由网络服务器打开/读取/写入/删除(因为它们必须是)

+0

我如何知道哪个$ bannedSessionID禁止特定用户 – john 2010-10-21 09:49:39

+0

您的登录系统将不得不在某处存储用户的会话ID。或者如果您在会话文件(用户名,全名等等)中存储了可识别个人身份的内容,则可以查看所有会话文件以查找与该用户关联的文件。 – 2010-10-21 14:45:42