我想知道服务器如何存储(不是位置而是过程/方法)和管理 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 可以利用:
- 硬盘上的文件
- 内存中的文件,例如在
/dev/shm
及其子文件夹中(/tmp 也可以驻留在 RAM 中) - 数据库—— session 表可能驻留在磁盘或内存中
- 专用内存后端
对您的评论的回应:您了解浏览器和网络服务器之间共享 session 数据的过程。但是,如果您想手动访问 session 数据(在 PHP 脚本之外),那么使用的 session 存储对您来说很重要。
如果您将 user_id
存储在 $_SESSION
变量中,那么可以 - 您可以在任何后续的 PHP 脚本中使用它来查询数据库中的用户相关信息请求。
关于php - 服务器如何存储使用 PHP 创建的 session 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17299940/