0

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

很奇怪,我必须从浏览器刷新一次成员页面,这样它才会显示用户已注销。如果我不刷新页面,它将保持登录状态!!!

4

1 回答 1

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>";
     }
于 2013-03-13T13:42:26.463 回答