Php 注销功能在一台服务器上工作,而不是在另一台服务器上工作?

Php 注销功能在一台服务器上工作,而不是在另一台服务器上工作?,php,Php,我有一个非常基本的PHP注销文件,它将破坏用户的会话,并将他们从帐户中注销。此PHP文件在使用PHP5.2.17(000webhosting)的服务器上工作 但是它在使用PHP5.3.21的服务器上不起作用,它基本上不会注销用户 代码如下: <?php session_start(); session_destroy(); $_SESSION = array(); if(!session_is_registered('id')){ $msg = "You are now logged

我有一个非常基本的PHP注销文件,它将破坏用户的会话,并将他们从帐户中注销。此PHP文件在使用PHP5.2.17(000webhosting)的服务器上工作

但是它在使用PHP5.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>";
} 
?> 


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

会话已注册()已弃用,请尝试使用以下方法:

→ 在调用会话的页面上\u register()

→ 并且在您使用会话的页面上注册了()

编辑:包括刷新标记作为会话错误的“macgyver修复”

     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>";
     }
session_start();
回显“”;//自动刷新
如果(!isset($\u SESSION[0])//代替SESSION\u注册()
{ 
回显“您现在已注销”;
}
其他的
{
echo“无法将您注销”;
}

我刚刚做了。很抱歉。这意味着它不会注销用户的帐户。这是一个注销页面。。它不能做上千件其他的事情。。。它只会将用户从其帐户中注销。它不工作意味着它没有做它应该做的事情。可能在一个现在有PHP5.4的服务器上使用一个函数。你在PHP5.4上吗?您以前使用的版本和现在使用的版本…版本0.2而不是0.1或什么。新版本和旧版本可以是一切!新服务器上的PHP版本是5.3.21!在新服务器上设置isset,因为我遇到了不推荐的错误,您可以查看上面的代码。但那也没用!!我还使用了您的$_会话['id']=“id”;建议,但仍然没有运气:(@rooziFar如果您将echo$\u SESSION['id']放在SESSION\u start()的正下方,您会得到什么输出)?我必须尝试查看什么输出?我确实在代码的顶部放置了一个位置,以查看是否有任何错误,也没有任何错误。@rooziFar请尝试我的更新答案,我发现一些信息使我认为关联数组在会话破坏后会因为某种原因而保留下来。感谢您的回复。该解决方案在某种程度上起到了作用。但是,它没有一直工作!!如果我注销并再次访问用户帐户,它将显示我已登录,如果我再次注销并刷新“注销页面”几次,然后刷新“用户页面2”几次,然后访问用户页面,那么注销功能工作!!这很奇怪。我从未见过这样的事情!!
     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>";
     }