2016-02-14 45 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"); 
}