什么是会话ID?在php中是分配给每个用户或每个浏览器的会话ID

时间:2012-01-24 09:15:14

标签: session-cookies sessionid

我真的很困惑php中的会话我做网站这是我的第一个项目,我被困在一个用户登录系统我无法理解php会话工作如何这些会话ID对每个用户是唯一的,或者这些是每个浏览器独有的< / p>

这是我的问题

当我使用user1的用户名和密码登录时,我开始一个新的会话并创建一个唯一的会话ID让我们说phpssesid XXXXXXXXXXXXXXXX所以当我从user1注销时我销毁会话和会话ID XXXXXXXXXXXXXXXX在登录期间为user1删除临时文件夹 接下来我使用user2和密码登录再次创建一个新会话,但我得到相同的会话ID,即首次登录时生成的XXXXXXXXXXXXXXXX我不明白如何为两个不同的用户分配相同的会话ID

所有这一切,当我使用谷歌浏览器浏览

然后我使用firefox登录使用user1和密码,但这次创建了一个新的会话ID,即XXXXXXXXXXXXXXX1 den i logout并再次使用user2登录,再次分配给user2的会话ID是相同的XXXXXXXXXXXXXXX1

如果sesssion id对每个用户都是唯一的,那么我不明白所有这些,那么为什么同一会话ID被分配给同一浏览器上的两个不同用户

1 个答案:

答案 0 :(得分:1)

对PHP来说不能说太多,但HTTP本身就是无状态 - 即如果你发出相同的请求,你(应该)得到相同的响应。 PHP和许多其他语言的作用是使用会话ID - 有时存储在cookie中,有时存储在URL中。

简而言之,您的会话ID对于每个浏览器的每个用户都应该是唯一的。例如,如果Alice登录其家庭计算机,然后登录其工作计算机,则会话ID应该不同。如果Alice然后退出她的家用电脑并且Bob登录(同一台计算机,与Alice首次登录的浏览器相同),他仍然应该获得不同的会话ID - 这一切都已完成,以便您的框架(即PHP)可以跟踪“会话”网站使用。

在您的情况下,重复的会话ID可能是由于延迟cookie,服务器问题或PHP可能合法地重用一个ID(可能出于性能原因)。如果您没有修改大部分会话代码,那么可能是浏览器的cookie问题或ID重用。