注销功能在一台服务器上运行而不在另一台服

时间:2013-03-13 13:26:36

标签: php

我有一个非常基本的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>";
} 
?> 

非常奇怪的是,我必须从浏览器刷新一次成员页面,以便将用户显示为已注销。如果我不刷新页面,它将保持登录状态!!!

1 个答案:

答案 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>";
     }