我第一次访问了我的网站,我看到了服务器设置的会话cookie。我正在重新加载页面,我看到只有我的浏览器将会话标识符发送到服务器,而服务器不返回会话cookie。我正在使用Kohana框架。我想知道这是否是本机PHP行为,如果请求已经拥有它并且它没有过期或者这是由框架处理,则不发送会话cookie?
我发现下面的一段代码可以说是神奇的:
protected function _read($id = NULL)
{
// Sync up the session cookie with Cookie parameters
session_set_cookie_params($this->_lifetime, Cookie::$path, Cookie::$domain, Cookie::$secure, Cookie::$httponly);
// Do not allow PHP to send Cache-Control headers
session_cache_limiter(FALSE);
// Set the session cookie name
session_name($this->_name);
if ($id)
{
// Set the session id
session_id($id);
}
// Start the session
session_start();
// Use the $_SESSION global for storing data
$this->_data =& $_SESSION;
return NULL;
}
这是我在找什么?
答案 0 :(得分:0)
当调用session_start()或会话自动启动时,PHP会 调用open和read session保存处理程序。这些将是一个 默认情况下或由PHP扩展提供的内置保存处理程序(例如 as SQLite或Memcached);或者可以是定义的自定义处理程序 的session_set_save_handler()。 读回调将检索任何现有的会话数据(存储在 特殊的序列化格式)并将被反序列化并用于 读取时自动填充$ _SESSION超全局 callback将保存的会话数据返回给PHP会话处理。
所以答案应该是这样的:除非您通过session_set_save_handler()
定义了自定义保存处理程序,否则这是本机PHP行为。