php - 服务器如何存储使用 PHP 创建的 session 变量?

标签 php session session-variables sessionid

我想知道服务器如何存储(不是位置而是过程/方法)和管理 session 变量。如果我错了请更正。

我把它想象成:-

假设我创建三个 session 变量

$_SESSION['id']=12;
$_SESSION['flag']=t;
$_SESSION['name']=alex;

然后服务器创建一个表(或者一个文件)

-----------------------------------------------
session_id |  id   |   flag  |  name
-----------------------------------------------
a45sdg665  |  12   |   t     |   alex
           |       |         |   
           |       |         |

session_id 由服务器创建,对于每个用户都是唯一的。然后服务器将 session_id 作为 cookie 发送到客户端浏览器。当用户在他的 session 期间发送另一个请求时,浏览器也会发送该 session_id 以及要求。服务器然后引用该表并可以识别用户。 作为程序员,我们可以使用 id(由我们存储)从数据库中获取不同的信息。 (如果我错了,请简要说明程序)。

最佳答案

session 可以但不必使用数据库后端。您的其余语句通常没问题(cookies、session_id)。

PHP 中的默认 session 存储是 /tmp 文件夹中的一个文件 - 可以通过打印 session.save_path 检查路径。

总而言之, session 可以利用:

  1. 硬盘上的文件
  2. 内存中的文件,例如在 /dev/shm 及其子文件夹中(/tmp 也可以驻留在 RAM 中)
  3. 数据库—— session 表可能驻留在磁盘或内存中
  4. 专用内存后端

对您的评论的回应:您了解浏览器和网络服务器之间共享 session 数据的过程。但是,如果您想手动访问 session 数据(在 PHP 脚本之外),那么使用的 session 存储对您来说很重要。

如果您将 user_id 存储在 $_SESSION 变量中,那么可以 - 您可以在任何后续的 PHP 脚本中使用它来查询数据库中的用户相关信息请求。

关于php - 服务器如何存储使用 PHP 创建的 session 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17299940/

相关文章:

php - CodeIgniter: session 在新 session ID 生成时结束

forms - 预填充 Spring MVC 表单

javascript - 每次创建新帖子时如何取消选中自定义元框中的复选框值?

javascript - CSS 样式不显示在 angularjs 文本字段中

php - 搜索名字和姓氏,按匹配准确度排序

session - 去 session 变量?

php - 存储 session 以供成员(member)区使用

c# - ASP.net 将宽度设置为存储在 C# 中的值

php - 使用 session 变量从 mysql 服务器调用数据

php - Symfony 命令 --no-interaction 不起作用