我正在尝试为我的网站流程添加更多安全性,以便试图绕过登录页面的外部用户将遇到一个!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");
}
?>
如果有人能解释我做错了什么(甚至不一定在纸上给我答案,我喜欢理解和学习,因为我是新手)这将是惊人的。我试着环顾四周但却找不到我想要的东西。非常感谢提前!
答案 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");
}