警告:session_destroy():尝试销毁未初始化的会话

Rat*_*Don 11 php session

我的class.inc文件:

<?php
class logout{
    public function logout(){
        $_SESSION = array();
        if (ini_get("session.use_cookies")) {
            $params = session_get_cookie_params();
            setcookie(session_name(), '', time() - 42000, $params['path'], $params['domain'], $params['secure'], $params["httponly"]);
        }
        session_destroy();
    }   
}

?>
Run Code Online (Sandbox Code Playgroud)

用于注销的代码:

session_start();
require($path."include/class.inc");
if(!empty($_GET['logout'])){
    $object=new logout();
    $object->logout();
    $content='5;url='.$path.'index.php';
}
Run Code Online (Sandbox Code Playgroud)

logout调用该函数时,它会销毁会话,但会显示警告:

Warning: session_destroy(): Trying to destroy uninitialized session in class.inc on line 9
Run Code Online (Sandbox Code Playgroud)

我无法排除故障,如会话没有被任何其他方式破坏之前session_destroy()class.inc.

Jij*_*ohn 32

你必须在logout类的logout函数的顶部调用下面提到的函数.

session_start();
Run Code Online (Sandbox Code Playgroud)

添加上述功能并试用.如果您没有在文件顶部启动会话,则会抛出"已发送标头","无法启动会话"等异常.


Jam*_*mes 12

如果您尚未事先启动会话,则此错误很常见

if (!isset($_SESSION))
  {
    session_start();
  }
Run Code Online (Sandbox Code Playgroud)

  • @Jonathan你可以尝试`if(!session_id())session_start();` (2认同)