我快疯了!
function initialize() {
session_start(); //EDITED
if(blnSessionIsStarted() && !session_destroy()) // Destroy session on disk
return false;
...
if(!blnSessionIsStarted() && !session_start()) //EDITED
return false; //EDITED
} //EDITED
function blnSessionIsStarted()
{
//From: http://uk3.php.net/manual/en/function.session-status.php#113468
if ( php_sapi_name() !== 'cli' ) {
if ( version_compare(phpversion(), '5.4.0', '>=') ) {
return session_status() === PHP_SESSION_ACTIVE ? TRUE : FALSE;
} else {
return session_id() == '' ? FALSE : TRUE;
}
}
return FALSE;
}
在我的网站上,这会返回一个
PHP WARNING (2): session_destroy(): Trying to destroy uninitialized session
在blnSessionIsStarted()
中,session_id()
包含一个非空会话字符串,因此函数返回true。我使用的是PHP 5.3.10。我想摆脱这个警告,但无论我读到哪里,所使用的代码似乎都是最好的实践。我是不是错过了什么?
编辑根据一些用户的建议并查看他们的反馈,我添加了一些经过编辑的行。然而,现在它返回了另一个错误(注意)"PHP注意(8):会话已经启动-忽略session_start()"。
但是,这些更改是无关紧要的:为什么blnSessionIsStarted()在会话尚未启动的情况下仍返回true?如果是,如何在不强制调用session_start()的情况下准确检测会话已启动?为什么在重新调用session_start()时会发出通知,以及如何检测到即使blnSessionIsStarted()表示它不再启动,也无法调用session_stat()?
您需要先调用session_start();
。现在没有会话。