如何检查是否设置了两个 PHP 会话


How to check if two PHP sessions is set or not

我需要检查这个$_SESSION['1'] || $_SESSION['2']是否设置好

我试过这个

ob_start();
session_start();
if (!isset($_SESSION['log']) && $_SESSION['log'] !== 1) {
    if (!isset($_SESSION['insAdmin']) && $_SESSION['insAdmin'] !== 1) {
        header("Location:sessionManager/login.php");
    }
} 

但如果$_SESSION['insAdmin']塞特

我收到笔记

( !注意:未定义索引:登录 C:''wamp''www''mysite''en''admin''headers.php 在第 13 行

你在自相矛盾:

!isset($_SESSION['log']) & $_SESSION['log'] !== 1

你基本上是在说if $_SESSION['log'] is not set and $_SESSION['log'] is not 1这没有意义。

如果未设置$_SESSION['log'],则尝试通过$_SESSION['log']访问其值(&&后面的第二个表达式(当然会导致未定义的索引。

您应该删除!

if (isset($_SESSION['log']) && $_SESSION['log'] !== 1) {
    if (isset($_SESSION['insAdmin']) && $_SESSION['insAdmin'] !== 1) {
        header("Location:sessionManager/login.php");
    }
} 

通常使用 isset 来测试变量是否包含值,然后再检查它的实际值。

但是您检查变量是否未设置!isset($_SESSION['log']然后检查其值,如果未设置log,这当然总是会导致通知。

您正在检查它是否未设置,请检查它是否已设置。

if (isset($_SESSION['insAdmin']) && $_SESSION['insAdmin'] !== 1) {
    header("Location:sessionManager/login.php");
}