我的网站上有一个profile页面,欢迎使用session变量的用户名用户。在我取消设置此变量后,页面仍然可以访问该名称。我无法正确删除数据。
我试图将其设置为空,session_unset,session_destroy
<?php @session_start(); ob_start(); ?>
//Some HTML code here
<?php
if( isset($_SESSION["user"]) && $_SESSION["login"]) {
echo '<div><p>welcome ' .$_SESSION["user"]. '!</p></div>';
echo
"<form action='' method='post'>
<input type='submit' name='use_button' value='Log out' />
</form>";
if(isset($_POST['use_button'])) {
$_SESSION["login"] = false;
unset($_SESSION["user"]);
session_unset();
echo "logout successful.";
echo '<script>window.location.href = "same-page.php";</script>';
}
}
else
echo 'no login data.';
?>
//Some HTML code here
<?php ob_end_flush(); ?>
我希望在重定向之后,第一个
if
条件不会得到满足,它会给出输出“没有登录数据”,但它仍然可以访问会话变量。外部php文件:
<?php
session_start();
$_SESSION["user"] = '' ;
$_SESSION["login"] = false ;
echo '<script>window.location.href = "../profile.php";</script>';
?>
最佳答案
我认为可以通过使用session_destroy()
方法销毁会话来完成此操作。session_destroy()
销毁与当前会话关联的所有数据。它不会取消设置与会话关联的任何全局变量,也不会取消设置会话cookie。要再次使用会话变量,必须调用session_start()。
您可以从session_destroy()