CakePHP中session.php的以下代码是做什么的?
我试图理解CakePHP源代码中的一个方法。以下代码取自CakePHP中session.php的以下代码是做什么的?,php,cakephp,Php,Cakephp,我试图理解CakePHP源代码中的一个方法。以下代码取自 为什么不直接启动会话呢?为什么要检查发送的头?以及头('P3P:CP=“NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM“)的含义是什么?在什么情况下,将清空($\u会话)或!isset($\u会话)是否计算为真?非常感谢对所有代码的解释。在标题上快速搜索可以提供一些不错的信息。 它是针对IE6的,用于解决第三方cookie的问题(如果您的db数据来自与Web服务器不同的域/IP)。 您可以阅读更
为什么不直接启动会话呢?为什么要检查发送的
头?
以及头('P3P:CP=“NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM“)的含义是什么代码>?在什么情况下,将清空($\u会话)
或!isset($\u会话)
是否计算为真?非常感谢对所有代码的解释。在标题上快速搜索可以提供一些不错的信息。
它是针对IE6的,用于解决第三方cookie的问题(如果您的db数据来自与Web服务器不同的域/IP)。
您可以阅读更多内容session\u start()
通常将cookie发送到http响应中,以便用户始终使用相同的会话
如果headers\u sent()
为true,则发送此cookie为时已晚(cookie位于响应的标题中)。因此,此检查是为了避免PHP错误
P3P头是用于隐私策略的,但实际上仅在Internet Explorer中实现。如果(headers_sent()){
块中的代码的用途是什么?该代码确保您有一个$\u会话对象。因为在调用SESSION_start()后,您通常希望从$\u会话读取和写入。
function __startSession() {
if (headers_sent()) {
if (empty($_SESSION)) {
$_SESSION = array();
}
return false;
} elseif (!isset($_SESSION)) {
session_cache_limiter ("must-revalidate");
session_start();
header ('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');
return true;
} else {
session_start();
return true;
}
}