0

我在每次登录时创建会话变量,它是 $_SESSION['usr'] 和 $_SESSION['psw']。当我注销时,我正在使用以下代码销毁它们:

<?php
session_start();
session_destroy();
if(count($_SESSION) == 0)
{
$_SESSION=array();
session_destroy();
}
header("Location:home.php");
?>

我要做的是限制某些页面仅供登录用户使用,所以我尝试使用这段代码:

<?php if(!$_SESSION['usr']){header('Location:home.php');} ?>

我不明白为什么它不起作用,因为它完全有意义,但没有人知道为什么?谢谢你的帮助...

4

1 回答 1

1

您不应该尝试两次破坏会话。

它应该是:

<?php
  session_start();   
  $_SESSION = array();
  //Session Cookie
  if (ini_get("session.use_cookies")) {
      $params = session_get_cookie_params();
      setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
      );
  }
  session_destroy();
?>

http://php.net/manual/en/function.session-destroy.php

无需检查是否设置了某些内容。检查应该是:

<?php if(!isset($_SESSION['usr'])) {
   //header() - see below
} ?>

并且位置需要是一个绝对网址(例如http://www.mydomain.com/home.php

于 2012-09-09T16:25:32.543 回答