警告:session_destroy()?

时间:2011-04-22 06:30:04

标签: php session

我试图修复我的登录脚本,在我的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工作,任何想法?

3 个答案:

答案 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. 

这使您可以编写更好,更高效,更灵活的会话管理代码。