我想知道服务器如何存储(不是位置而是程序/方法)并管理会话变量。如果我错了,请更正。
我把它想象成: -
假设我创建了三个会话变量
$_SESSION['id']=12;
$_SESSION['flag']=t;
$_SESSION['name']=alex;
然后服务器创建一个表(或任何文件)
-----------------------------------------------
session_id | id | flag | name
-----------------------------------------------
a45sdg665 | 12 | t | alex
| | |
| | |
session_id由服务器创建,对每个用户都是唯一的。服务器然后将session_id作为cookie发送到客户端浏览器。当用户在会话期间发送另一个请求时,浏览器也会发送该session_id以及请求。然后,服务器引用该表并可以识别用户。 作为程序员,我们可以使用id(由我们存储)从数据库中获取不同的信息。 (如果我错了,请简要说明一下程序。)
答案 0 :(得分:1)
会话数据被序列化为文本字符串并存储在每个会话的文件中,通常名为“sess_SESSIONIDHERE”,可能在/ var / lib / php5中(至少在Debian上默认)。看看php ini设置“session.save_path”以发现会话文件的存储位置。
http://www.php.net/manual/en/session.configuration.php#ini.session.save-path
答案 1 :(得分:1)
会话可能但不必使用数据库后端。其余的陈述通常都很好(cookies,session_id)。
PHP中的默认会话存储是/tmp
文件夹中的文件 - 可以通过打印session.save_path
来检查路径。
总结一下,会议可以利用:
/dev/shm
及其子文件夹(/ tmp也可以驻留在RAM中)回复您的评论:您了解在浏览器和Web服务器之间共享会话数据的过程。但是,如果要手动访问会话数据(在PHP脚本之外),则使用的会话存储对您很重要。
如果将user_id
存储在$_SESSION
变量中,则是 - 您可以使用它在任何后续请求中使用PHP脚本在数据库中查询用户相关信息。
答案 2 :(得分:0)
默认情况下,会话数据存储在session.save_path(sessions configuration)
中保存的文件中答案 3 :(得分:0)
检查一下。它只是作为文件存储在服务器的/ tmp目录中。
答案 4 :(得分:0)
$_SESSION
变量存储的位置由PHP的session.save_path
配置决定。通常这是Linux / Unix系统上的/ tmp。如果不是100%确定,请使用phpinfo()函数查看您的特定设置,方法是在域的DocumentRoot中创建包含此内容的文件。
更多请参阅: