【问题标题】:managing my sessions管理我的会话
【发布时间】:2012-09-09 14:32:06
【问题描述】:

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

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

【问题讨论】:

  • 您已经提出了 24 个问题,但您只接受了其中 52% 的答案。在这个网站上这是不受欢迎的——人们试图帮助你,而你只是无视他们的工作。
  • session_start(); var_dump($_SESSION); 看看里面有没有'usr'键
  • 这是 var_dump 的输出:array(0) { }

标签: php session login session-variables


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 2012-10-11
    • 2011-04-29
    • 2011-10-22
    • 2011-08-01
    • 2012-11-12
    • 2014-06-19
    相关资源
    最近更新 更多