2014-04-18 43 views
0

我有一个关于在php会话的简单问题。

如果我有一个Web服务器和我使用像

$_SESSION['user_login'] = 1; 

这个会话与其他用户也分享会话?
我的意思是:

如果用户A正在登录,他的会话有1;
现在用户B正在做一个登录名和他会话有1

所以:

userA--->Session=1 
userB--->Session=1 

现在,用户A做了注销和我一起
unset($_SESSION['user_login']);

问题破坏会话:
the session of userB is still at 1??还是他的会议完成了?
我不明白会话是在每个线程的堆栈上还是与每个线程共享。

+0

'$ S_SESSION'也许应该是'$ _SESSION'。 – kelunik

+0

是的,谢谢...我修好了 –

回答

6

在PHP会话中,每个用户。每个用户都分配一个唯一的会话ID来识别他们的会话。只有拥有该会话ID的用户才能访问与其关联的会话信息。

the manual

访问者访问你的网站被分配一个唯一的ID,即所谓的会话ID。这可以存储在用户端的cookie中,也可以在URL中传播。

会话支持允许你存储$ _SESSION全局数组中的请求之间的数据。当访问者访问您的网站,PHP会自动(如果session.auto_start被设为1)或在您的要求(明确通过在session_start())是否与特定的会话ID已发送该请求。如果是这种情况,则重新创建之前保存的环境。

查看session hijacking查看另一个恶意用户如何劫持另一个用户的会话。