我有一个非常基本的PHP注销文件,它会破坏用户的会话并将其记录在他们的帐户之外。此PHP文件适用于PHP 5.2.17(000webhosting)的服务器。
但它在使用PHP 5.3.21的服务器上不起作用,它基本上不会注销用户。
这是代码:
<?php
session_start();
session_destroy();
$_SESSION = array();
if(!session_is_registered('id')){
$msg = "You are now logged out";
} else {
$msg = "<h2>could not log you out</h2>";
}
?>
<html>
<body>
<?php echo "$msg"; ?><br>
<p><a href="login.php">Click here</a> to return to our home page </p>
</body>
</html>
有谁知道导致此问题的原因是什么?
我也在新服务器上使用过它,但仍然无效:
<?php
session_start();
unset($_SESSION['id']);
session_destroy();
$_SESSION = array();
if(!isset($_SESSION['id'])){
$msg = "You are now logged out";
} else {
$msg = "<h2>could not log you out</h2>";
}
?>
<html>
<body>
<?php echo "$msg"; ?><br>
<p><a href="login.php">Click here</a> to return to our home page </p>
</body>
</html>
这是我到目前为止所做的:
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
?>
<?php
session_start();
$_SESSION[ 0 ] = "id";
session_destroy();
unset($_SESSION['0']);
if(!isset($_SESSION['0'])){
$msg = "By Clicking The Button Below, You Will Agree That You will Be Logged Out.";
} else {
$msg = "<h2>could not log you out</h2>";
}
?>
非常奇怪的是,我必须从浏览器刷新一次成员页面,以便将用户显示为已注销。如果我不刷新页面,它将保持登录状态!!!
答案 0 :(得分:0)
session_is_registered() 已弃用,因此请尝试使用此功能:
→在您打电话 session_register()
的页面上 session_start();
$_SESSION[ 0 ] = "id"; // in place of session_register()
→在您使用 session_is_registered()
的页面上→编辑:包含针对会话错误的“ macgyver fix ”的刷新代码
session_start();
echo '<meta http-equiv="refresh" content="0">'; // auto-refresh
if( !isset( $_SESSION[ 0 ] ) ) // in place of session_is_registered()
{
echo "You are now logged out";
}
else
{
echo "<h2>could not log you out</h2>";
}