1

我正在尝试为我的网站进程添加更多安全性,以便试图绕过登录页面的外部用户将遇到一个 !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");
  }

?>

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

4

2 回答 2

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

如果没有设置所有变量,将返回 false。

所以你的条件必须如下。

if(isset($_SESSION['xxx'], $_SESSION['xxx']))
于 2013-10-11T10:34:16.500 回答
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");
}
于 2013-10-11T10:35:07.037 回答