Php Can';我不明白!isset语句

Php Can';我不明白!isset语句,php,Php,我试图使用会话变量来限制对页面的访问。我有三个访问级别:管理、帮助和技术。在有帮助或技术访问的页面上,也允许访问管理。我不知道如何写if语句。 以下是我的代码: <?php //Start session session_start(); //Check whether the session variable SESS_MEMBER_ID is present or not if(!isset($_SESSION['SESS_MEMBER_ID']) |

我试图使用会话变量来限制对页面的访问。我有三个访问级别:管理、帮助和技术。在有帮助或技术访问的页面上,也允许访问管理。我不知道如何写if语句。 以下是我的代码:

<?php
    //Start session
    session_start();

    //Check whether the session variable SESS_MEMBER_ID is present or not
    if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == ''))  {
        header("location: fail_access.php");
        exit();
    }
    if ((!isset($_SESSION['SESS_ACCESSLVL']) == 'admin') || (!isset($_SESSION['SESS_ACCESSLVL']) == 'help')) {
        header("location: fail_access.php");
        exit();
    }
?>

当我像这里显示的那样使用它时,它允许所有级别访问应该限制为“帮助”的页面(也包括“管理”)。 有人能指出我的错误吗??非常感谢您的帮助。我对这一点很陌生,显然不完全理解


Cheers

isset
检查是否设置了变量或数组项,并相应地返回布尔值。它不以任何方式考虑或返回值。

只需检查它是否已设置,如果已设置,请检查值

if(isset($_SESSION['SESS_ACCESSLVL']))
{
  $level = $_SESSION['SESS_ACCESSLVL'];
  // Check $level
}

isset
检查是否设置了变量或数组项,并相应地返回布尔值。它不以任何方式考虑或返回值。

只需检查它是否已设置,如果已设置,请检查值

if(isset($_SESSION['SESS_ACCESSLVL']))
{
  $level = $_SESSION['SESS_ACCESSLVL'];
  // Check $level
}
你想在这里干什么
isset
返回一个布尔值。您正在将布尔值与字符串进行比较。想想看

试试这个:

(isset($_SESSION['SESS_ACCESSLVL']) && $_SESSION['SESS_ACCESSLVL']==='admin')
严格来说,
isset
部分不是必需的,因为如果不设置后一个条件,它将失败,但我认为它会抛出一个警告(除非您将它们关闭)

你想在这里干什么
isset
返回一个布尔值。您正在将布尔值与字符串进行比较。想想看

试试这个:

(isset($_SESSION['SESS_ACCESSLVL']) && $_SESSION['SESS_ACCESSLVL']==='admin')

isset
部分不是严格需要的,因为后一个条件如果不设置就会失败,但我认为它会抛出一个警告(除非您将它们关闭)。

isset返回true或false。您正在将此真/假值与访问字符串进行比较。在PHP中,
true=='some string'
为true,因此您的代码使每个人都成为管理员。

isset返回true或false。您正在将此真/假值与访问字符串进行比较。在PHP中,
true=='some string'
为true,因此您的代码使每个人都成为管理员。

尝试:

if (
     !isset($_SESSION['SESS_ACCESSLVL']) || 
     !(($_SESSION['SESS_ACCESSLVL'] == 'admin') || ($_SESSION['SESS_ACCESSLVL'] == 'help'))
   ) 
{
    header("location: fail_access.php");
    exit();
}
你也可以试试

尝试:

你也可以试试


isset()
返回一个
布尔值,所以
!isset($\u SESSION['SESS\u ACCESSLVL'])=='help'
将无法按“预期”工作。
isset()
返回一个
布尔值,因此
!isset($\u SESSION['SESS\u ACCESSLVL'])=='help'
将无法按“预期”工作。请注意Mate!!谢谢你的帮助。它帮助我开始了解如何做我想做的事情。多亏了像你这样心甘情愿的人,我们这些试图理解的人至少有了一个战斗的机会。干杯在大副身上!!谢谢你的帮助。它帮助我开始了解如何做我想做的事情。多亏了像你这样心甘情愿的人,我们这些试图理解的人至少有了一个战斗的机会。干杯我现在明白了。我正在努力处理这些事情,而互联网是我的老师,所以有时我会感到困惑。谢谢你向我指出这一点。干杯,我现在明白了。我正在努力处理这些事情,而互联网是我的老师,所以有时我会感到困惑。谢谢你向我指出这一点。干杯