0

我创建一个文件 logout.php 并通过调用它

 <a href='logout.php'>log out</a>

但会话没有破坏或未设置。帮我logout.php文件如下

  <?php session_start();

  if(isset($_SESSION['user_id']) | isset($_SESSION['mem_id'])|                         
   isset($_SESSION['fname']) | isset($_SESSION['lname'])) {

   $_SESSION=array();
   unset($_SESSION['user_id']);
   unset($_SESSION['mem_id']);
   unset($_SESSION['fname']);

  if(isset($_COOKIE[session_name()]))  {

  setcookie(session_name(), '' , time()-3600);
 } 
   session_destroy();
    }
  header("location:index.php"); 
   ?> 

在我的登录文件中,我生成了三个会话变量,它们是

   $_SESSION['user_id'])
   $_SESSION['mem_id'])
   $_SESSION['fname'])

帮我销毁这个会话变量

4

2 回答 2

1

你不这样做$_SESSION=array();,变量已经存在并且是一个数组,你不要再声明为一个。

您还需要||用于 OR。单个管道|是按位运算符,而不是您想要的。

... isset($_SESSION['user_id']) || isset($_SESSION['mem_id']) ...

您可以做的一件事是echoif语句中添加一些内容。如果它确实将它回显到屏幕上,你就知道它进入了那个 if 语句。如果没有,你知道它没有。然后你就可以开始弄清楚 if 语句的条件是否满足来找出问题所在。

于 2012-11-08T06:11:27.057 回答
1

为什么你使用这么长的代码来破坏 logout.php 上的会话。只需启动会话,然后将其销毁。就像代码一样。

<?php
session_start();
if(session_destroy())
{
header("Location: index.php");
}
?>
于 2012-11-08T06:48:14.967 回答