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

发布于 2024-12-29 00:59:57 字数 602 浏览 1 评论 0原文

我对 php 中的会话感到非常困惑,我在做网站,这是我的第一个项目,我被用户日志系统困住了,我无法理解 php 会话是如何工作的,这些会话 id 对每个用户来说是唯一的,还是对每个浏览器来说是唯一的,

这是我的问题

当我使用 user1 的用户名和密码登录时,我启动一个新会话并创建一个唯一的会话 id,比如说 phpssesid XXXXXXXXXXXXXXXX,所以当我从 user1 注销时,我会销毁登录期间生成的会话和会话 id XXXXXXXXXXXXXXXX user1 已从临时文件夹中删除 接下来我使用 user2 和密码登录,再次创建一个新会话,但我得到相同的会话 id,即 XXXXXXXXXXXXXXXX,这是在第一次登录期间生成的,我不明白为什么

在我使用谷歌时, 用户会被分配相同的会话 id 给两个不同的用户chrome浏览,

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

我不明白这一切,如果会话 id 对于每个用户来说都是唯一的,那么为什么相同的会话 id 被分配给同一浏览器上的两个不同用户

i am really confused about sessions in php i doing website this is my first project and i am stuck a user logging system i cant understand how php session work are these session id unique to each user or are these unique to each browser

here is my problem

when i login in using username and password for user1 i start a new session and a unique session id is created lets say phpssesid XXXXXXXXXXXXXXXX so when i logout from user1 i destroy session and session id XXXXXXXXXXXXXXXX generated during login for user1 is deleted from temp folder
next i login using user2 and password a new session is again created but i get same session id i.e XXXXXXXXXXXXXXXX which was generated during first login i dont understand how come to users are assigned same session id to two different users

all this while i was using google chrome to browse

but then i used firefox to login using user1 and password but this time a new session id is created i.e XXXXXXXXXXXXXXX1 den i logout and again login using user2 and again session id assigned to user2 is same XXXXXXXXXXXXXXX1

i dont understand all this if sesssion id is unique to each user then why is same session id is assigned to two different users on same browser

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你穿错了嫁妆 2025-01-05 00:59:57

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

长话短说,您的会话 ID 对于每个浏览器的每个用户来说应该是唯一的。例如,如果 Alice 在她的家庭计算机上登录,然后在她的工作计算机上登录,则会话 ID 应该不同。如果 Alice 然后从她的家庭计算机注销并且 Bob 登录(与 Alice 第一次登录相同的计算机、相同的浏览器),他仍然应该获得不同的会话 ID - 这一切都已完成,以便您的框架(即 PHP)可以跟踪“会话”网站使用情况。

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

Can't say much for PHP specifically, but HTTP by itself is stateless - i.e. if you make the same request, you (should) get the same response. What PHP and many other languages do is use session IDs - sometimes stored in cookies, sometimes stored in the URL.

Long story short, your Session ID should be unique to each user for each browser. For example, if Alice logs in on her home computer, then logs in on her work computer, the session IDs should be different. If Alice then logs out of her home computer and Bob logs in (same computer, same browser as Alice's first login) he should still get a different session ID - it's all done so that your framework (ie. PHP) can track 'sessions' of website use.

In your case, duplicate session IDs might be due to lingering cookies, server problems, or PHP might be legitimately reusing one ID (maybe for performance reasons). If you haven't modified much of the session code, chances are it's either the cookie issues with the browser or ID reuse.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文