我试图修复我的登录脚本,在我的localhost上工作但上传到我的在线测试服务器,注销被破坏,我收到此错误:
Warning: session_destroy() [function.session-destroy]: Trying to destroy uninitialized session in htdocs/logout.php on line 17
Warning: Cannot modify header information - headers already sent by (output started at htdocs/logout.php:17) in htdocs/logout.php on line 18
Warning: Cannot modify header information - headers already sent by (output started at htdocs/logout.php:17) in www/htdocs/logout.php on line 34
不太确定是什么导致它,因为它正在我的localhost工作,任何想法?
答案 0 :(得分:11)
session_start();
session_destroy(); /*or sesion_unset();*/
答案 1 :(得分:6)
要使session_destroy生效,必须使用session_start启动会话。
答案 2 :(得分:3)
如果你需要删除会话(例如在自动调用的exit / logout /析构函数脚本中),它可能存在也可能不存在,那么你可以使用session_status来检查状态。
从PHP 5.4.0开始,您可以这样检查:
if(session_status() == PHP_SESSION_ACTIVE)
{
session_destroy();
}
这比创建一个新的部分只是为了以后销毁它更好。
根据PHP手册,session_status将返回一个可与以下常量进行比较的整数:
Return Values
• PHP_SESSION_DISABLED - Returned if sessions are disabled.
• PHP_SESSION_NONE - Returned if sessions are enabled, but none exists.
• PHP_SESSION_ACTIVE - Returned if sessions are enabled, and one exists.
这使您可以编写更好,更高效,更灵活的会话管理代码。