2016-02-14 40 views
2

我需要检查,如果这$_SESSION['1'] || $_SESSION['2'] isset或不如何检查是否两个PHP会话设置或不

我想这

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'] isset

我得到一个音符

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

+0

你的if语句是没有意义的。你的第一个if是:'如果$ _SESSION ['log']没有设置,并且它不等于1,那么输入if语句'。如果索引未设置,则不能有值 – Rizier123

回答

1

你自相矛盾:

!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"); 
    } 
} 
1

您正常使用isset测试一个变量包含检查它的实际值之前的值。

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

1

你检查,如果它没有设置,检查它的设置来代替。

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