我的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)
https://www.php.net/manual/en/function.session-status.php
if (session_status() === PHP_SESSION_ACTIVE)
session_destroy();
Run Code Online (Sandbox Code Playgroud)