管理我的会话

时间:2012-09-09 14:32:07

标签: php session login session-variables

我正在创建会话变量,每次登录都是$ _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');} ?>

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

1 个答案:

答案 0 :(得分: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