【发布时间】:2012-03-22 13:07:12
【问题描述】:
请解释一下session_start() 函数的工作原理。
我不明白在 php 中启动会话时的操作顺序。试着解释一下。
HTTP 是一种客户端-服务器架构。这意味着浏览器发送它的请求,服务器处理请求并返回它的答案。这些动作中的每一个都有适当的标题。
当我想开始会话时,我检查了(使用headers_list())服务器会发送回哪些标头及其答案。除其他外,还有标题
Set-Cookie: PHPSESSID=7f4cbf53fbcd4717792447f32da7dba8
看来一切正常,服务器下令浏览器设置cookie。
但是,要开始会话,我必须在页面代码的开头包含 session_start() 函数。所以这个函数是在浏览器开始解析页面的时候启动的。浏览器遇到 php 开始标签 <?php 后跟 session_start() 函数。它立即将控制权委托给服务器。并且服务器现在才启动该功能。仅当它已经将页面连同所有标题一起发送到浏览器时。
所以我不明白服务器如何在浏览器开始解析页面并满足session_start()功能之前发送Set-Cookie标头?它怎么知道必须在命令session_start() 执行之前放置Set-Cookie 标头?还是我误解了流程?
【问题讨论】:
标签: php session session-cookies