2017-07-10 76 views
-1

我敢肯定這是一個菜鳥問題,但我在$_POST密碼參數中得到未定義索引。

if ($_SESSION['Password'] == $_POST['Password']){ 
    echo 'Hi 2 '.$_SESSION['Password'].'<br>'; 
} 

如果我做要麼$_SESSION$_POST,我得到了正確的回聲線以下。

if (!empty($_SESSION['Password'])){      
    echo 'Hi 2 '.$_SESSION['Password'].'<br>';    
} 

難道兩個變量都不能使用相同的參數嗎?

+0

檢查您的輸入名稱屬性在HTML代碼中設置爲「密碼」。 –

+2

首先,您應該瞭解什麼是SESSION和POST變量。 SESSION用於存儲會話變量,可以從任何php文檔在整個會話中訪問該會話變量。 POST用於獲取通過post方法發送的任何變量。 在第一個代碼片段中,您正在檢查SESSION ['password'] == POST ['password']的天氣,並且您沒有通過post方法提供任何值,這就是爲什麼您會收到未定義的錯誤。所以要過來這個最好的方法是檢查天氣是否都是使用isset函數定義的變量。 –

+0

你的'POST'數據怎麼樣!顯示你的表單html。會話將在密碼發送後存儲,所以應該從數據庫檢查密碼! –

回答

1

首先您應該瞭解什麼是SESSION和POST變量。
SESSION用於存儲會話變量,可以從任何PHP文檔在整個會話中訪問該變量。
POST用於獲取通過post方法發送的任何變量。

在第一代碼段要檢查天氣 SESSION [「密碼」] == POST [「密碼」] 和您沒有提供通過柱方法和任何值後變量'密碼'沒有在你的程序中定義,這就是爲什麼你得到一個未定義的錯誤。

因此,要結束這一個最好的方法是檢查天氣變量是否已定義或不使用isset函數。

if(isset($_SESSION['Password']) && isset($_POST['Password'])){ 
    if ($_SESSION['Password'] == $_POST['Password']){ 
     echo 'Hi 2 '.$_SESSION['Password'].'<br>'; 
    } 
} 

通過正確的說法提供了POST [「密碼」]的值,那麼代碼將工作。 我想你知道如何爲SESSION變量設置值,因爲你正在比較SESSION變量和POST變量。

+0

是的。但是你必須爲post變量傳遞值,併爲會話變量設置值 –

+0

if(isset($ _ SESSION ['Password'])&& isset($ _ POST ['Password'])){//工作並執行如果聲明。 if($ _SESSION ['Password'] == $ _POST ['Password']){//不,並給出未定義的索引。 – marsheng

+0

我可以發佈整個代碼嗎?時間不長,只是一個測試程序。 – marsheng