我不明白为什么下面的代码没有重定向,我已经破坏了会话,所以条件应该是真的,但它不会重定向到这个页面,
<?php
session_start();
if(!isset($_SESSION['userid'])) {
header('Location: Login.html');
exit;
}
?>
但是在注销php中,重定向工作正常。
<?php
session_start();
session_destroy();
header('Location: Login.html');
exit;
?>
修改
我可以在Chrome开发者工具中看到重定向调用,但实际上并没有重定向
请帮我理解代码中的错误。
答案 0 :(得分:0)
确保<?php
之前没有空格,因为这会阻止您设置任何标题属性。
答案 1 :(得分:0)
明确地执行unset($_SESSION['userid']);
就足够了。
session_destroy()会销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie。要再次使用会话变量,必须调用session_start()。
为了完全终止会话,要将用户注销,还必须取消设置会话ID。如果使用cookie来传播会话ID(默认行为),则必须删除会话cookie。 setcookie()可以用于此。