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

时间:2016-02-14 11:40:39

标签: php session

我需要检查是否存在此$_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']

我得到了一个笔记

  

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

3 个答案:

答案 0 :(得分:1)

你自相矛盾:

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

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

如果未设置$_SESSION['log'],则尝试通过$_SESSION['log']&&后面的第二个表达式)访问它的值将导致未定义的索引。< / p>

您应该删除!

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

答案 1 :(得分:1)

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

但是你检查变量是否未设置!isset($_SESSION['log'],然后检查它的值,如果没有设置log,这当然会引起通知。

答案 2 :(得分:1)

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

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