!isset返回FALSE和有效变量?
问题描述:
我想为我的网站过程添加更多的安全性,以便试图绕过登录页面的外部用户将运行到!isset,该设置检查是否设置了登录$ _SESSION变量,如果不是,则会破坏会话并重定向回主登录页面。!isset返回FALSE和有效变量?
我的问题是!isset函数返回一个FALSE值,从而破坏会话和重定向,但是当我用print_r测试该页面上的变量时,它们被识别并存储。
我的代码(我削除变量):
<?php
session_start();
if(!isset($_SESSION['xxx'], $_SESSION['xxx']))
{ echo "Login successfull"; }
else
{ session_destroy();
header("location:main_login.php");
}
?>
如果有人可以解释我我做错了什么(甚至不一定是给我在纸上的答案,我想了解和学习以来我是一名新秀),那将是惊人的。我试图环顾四周,但无法真正找到我正在寻找的东西。提前谢谢了!
答
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");
}
答
isset($_SESSION['xxx'], $_SESSION['xxx'])
如果不是所有的变量都设置,将返回false。
所以你的条件必须如下。
if(isset($_SESSION['xxx'], $_SESSION['xxx']))
非常感谢你。我不知道'!'符号表示它检查NOT SET变量。 –
欢迎您。一般来说'!'的意思不是。例如'!true'将等同于'false'。 – Paddyd