!isset使用有效变量返回FALSE?

时间:2013-10-11 10:29:02

标签: php session isset

我正在尝试为我的网站流程添加更多安全性,以便试图绕过登录页面的外部用户将遇到一个!isset,它检查是否设置了登录$ _SESSION变量,如果没有,则销毁会话并重定向回主登录页面。

我的问题是!isset函数返回一个FALSE值,因此会破坏会话并重定向,但是当我使用print_r测试该页面上的变量时,它们将被识别并存储。

我的代码(我已经删除了变量):

<?php  

 session_start();

 if(!isset($_SESSION['xxx'], $_SESSION['xxx']))
  { echo "Login successfull"; }

  else 

  { session_destroy();
    header("location:main_login.php");
  }

?>

如果有人能解释我做错了什么(甚至不一定在纸上给我答案,我喜欢理解和学习,因为我是新手)这将是惊人的。我试着环顾四周但却找不到我想要的东西。非常感谢提前!

2 个答案:

答案 0 :(得分:2)

isset($_SESSION['xxx'], $_SESSION['xxx'])
如果没有设置所有变量,

将返回false。

所以你的情况必须如下。

if(isset($_SESSION['xxx'], $_SESSION['xxx']))

答案 1 :(得分:2)

if(!isset($_SESSION['xxx'], $_SESSION['xxx']))

这是检查会话是否设置为not,请注意!符号。因此,当未设置会话变量时,您将回显Login Successfull

您应该拥有以下内容:

if(isset($_SESSION['xxx'], $_SESSION['xxx']))
{ 
    echo "Login successfull"; 
}
else 
{ 
    session_destroy();
    header("location:main_login.php");
}
相关问题