为了账号安全,请及时绑定邮箱和手机立即绑定

PHP会话如何工作?(不是“它们是如何使用的?”)

PHP会话如何工作?(不是“它们是如何使用的?”)

PHP
慕尼黑5688855 2019-08-01 15:48:53
PHP会话如何工作?(不是“它们是如何使用的?”)会话文件通常存储在/tmp/服务器上,并命名sess_{session_id}。我一直在看内容,无法弄清楚它们是如何工作的。从文件中获取变量名称和内容很容易。但PHP如何知道什么会话属于谁?session_id似乎是完全随机的,一个IP地址可以有多个用户,如果每个用户打开多个浏览器窗口,则每个用户可以有多个会话。那么它是怎样工作的?
查看完整描述

3 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

在一般情况下:

  • 会话ID在创建会话时发送给用户。

  • 它存储在cookie中(默认情况下称为PHPSESSID

  • 每次请求时,浏览器都会将cookie发送到服务器

  • 服务器(PHP)使用包含session_id的cookie来知道哪个文件对应于该用户。

会话文件中的数据是$_SESSION序列化的内容(即表示为字符串 - 具有序列化等功能) ; 并且在PHP加载文件时进行非序列化,以填充$_SESSION数组。


有时,会话ID不会存储在cookie中,而是以URL形式发送 - 但现在这种情况非常罕见。


有关更多信息,您可以查看本手册的“ 会话处理”部分,该部分提供了一些有用的信息。

例如,有一个关于传递会话ID的页面,它解释了会话ID如何在页面之间传递,使用cookie或在URL中传递 - 以及哪些配置选项会影响这一点。


查看完整回答
反对 回复 2019-08-01
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

PHP会话如何工作

  • 首先,PHP a86b10aeb5cd56434f8691799b1d9360为单个会话创建一个16字节长的唯一标识符号(存储为32个十六进制字符的字符串,例如)。

  • PHPSESSID cookie将该唯一标识号传递给用户的浏览器以保存该号码。

  • 在服务器上创建一个新文件,其唯一标识号的名称与sess_前缀相同(即sess_a86b10aeb5cd56434f8691799b1d9360。)

  • 浏览器会在每次请求时将cookie发送到服务器。

  • 如果PHP从PHPSESSID cookie中获取该唯一标识号(在每个请求中),则PHP在临时目录中搜索并将该数字与文件名进行比较。如果两者相同,则它将检索现有会话,否则将为该用户创建新会话。

当用户关闭浏览器或离开站点时会话被破坏。在预定的会话时间段到期之后,服务器也终止会话。这些是PHP用于处理会话的简单机制步骤。我希望本文能帮助您了解PHP SESSION的工作原理。

有关详细信息,请参阅此文章。PHP会话如何工作


查看完整回答
反对 回复 2019-08-01
?
慕娘9325324

TA贡献1783条经验 获得超4个赞

会话ID确实是随机的,并根据配置在cookie或URL中传递。您可能已经在某些URL中看到过这个PHPSESSID = xxxx,也有一个名称的cookie。


查看完整回答
反对 回复 2019-08-01
  • 3 回答
  • 0 关注
  • 438 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信