2012-08-10 34 views
0

可能重複:
PHP: 「Notice: Undefined variable」 and 「Notice: Undefined index」PHP公告:未定義指數:登錄在C: XAMPP htdocs中的index.php上線55

我得到警告。我想照顧它。這裏是違規代碼

if ($_REQUEST['login']) $user = $_REQUEST['login']; 
elseif ($_COOKIE['user']) $user = $_COOKIE['user']; 

if ($_REQUEST['encpas']) $pass = $_REQUEST['encpas']; 
elseif ($_COOKIE['pass']) $pass = $_COOKIE['pass']; 

if ($_REQUEST['randsess']) $sess = $_REQUEST['randsess']; 
elseif ($_COOKIE['sess']) $sess= $_COOKIE['sess']; 

我不知道如何擺脫它們。

感謝

+4

'$ _REQUEST ['login']'沒有被定義;該通知甚至會給出行號 – Don 2012-08-10 19:38:48

+1

在嘗試使用它之前,請務必確保索引已存在。 – Matt 2012-08-10 19:39:42

+0

另外,因爲看起來你對PHP開發相對來說比較陌生,所以我強烈建議你不要使用$ _REQUEST superglobal,除非你真的有可能通過POST或GET傳遞參數的情況。我會想象你正在嘗試處理POST的登錄,所以你應該使用$ _POST,因爲你可能不希望人們能夠將登錄憑據附加到你的URL並讓它們工作。 – 2012-08-10 19:45:17

回答

6

檢查變量,看看他們是否設置,並有一個值或不:

if (isset($_REQUEST['login'])) { 
    $user = $_REQUEST['login']; 
} elseif (isset($_COOKIE['user'])) { 
    $user = $_COOKIE['user']; 
} 
0

您應該使用array_key_exists或isset。根據一些基準,最後一個更快。

if(isset($_REQUEST['login'])) { 
    $user = $_REQUEST['login']; 
} 

isset不計數爲NULL值。

index.php?login=&otherstuff 

將設置登錄與空值:

,因爲下面要小心一點。但它會被設置。

相關問題