2016-06-08 37 views
2

這是我的代碼。這是在登錄頁面。在提交後,保存到SESSION並將此SESSION發送到一個新的PHP頁面

session_start(); 
if (isset($_POST['username'])) { 
    $_SESSION['username'] = $_POST['username']; 
} 

<form action="BAMainPage.php" method="post"> 
    <button type="submit" id="login" onclick="loginfunction()" >Log In</button> 
    <script> 
    function loginfunction() { 
     if(document.getElementById('username').value!=="") {  
      //location.href="http://localhost/bhbonlineretailphp/BAMainPage.php";       
     } else { 
      alert("failed"); 
     }      
    } 
    </script> 
</form> 

這是在單擊登錄按鈕後打開的BAMainPage。

session_start(); 
echo $_SESSION['username']; 

但是,在打開時,BAMainPage會顯示此錯誤。

Notice: Undefined index: username in C:\xampp\htdocs\BHBOnlineRetailPHP\BAMainPage.php 

爲什麼用戶名未定義?我已將該值存入$_SESSION['username']

+1

你只值保存到會話時'$ _ POST [ 'username']'被設置,但通過它的外觀,你的表單指向一個不同的文件,以便代碼不會運行。還有一個問題,就是你似乎沒有任何定義'用戶名'的輸入,使得第一點沒有實際意義。 –

回答

1

看起來你可以發佈您的用戶名BAMainPage.php這意味着你需要將用戶名從POST在您從

提交表單相同的文件存在,而不是分配

所以只是移動

session_start(); 
if (isset($_POST['username'])){ 
     $_SESSION['username'] = $_POST['username']; 
    } 

到BAMainPage然後呼應它,你hsould能夠看到它,從那裏你可以繼續會話別的地方和$SESSION['username ']會跟着你

+0

OMG它的工作原理!謝謝!!哈哈我花了2個小時在這個,並不能解決這個問題。還有一個問題,這是否意味着我的動作會將我的POST帶到下一頁?因此,我必須在下一頁中調出POST? – Marcus

+0

是的,但是您可以將操作指定爲POST形式到同一頁面,因爲您是這樣的 action = <?php echo htmlspecialchars($ _ SERVER [「PHP_SELF」]); ?> – rojobo

+0

哇非常感謝你:) – Marcus

0

之前沒有得到您的$ _POST ['username']。

您的登錄操作是BAMainPage.php。所以,只要你在這裏得到你的表單POST數據,你應該在這個頁面上寫會話,而不是寫在前一頁。

// BAMainPage.php 
session_start(); 
if (isset($_POST['username'])){ 
    $_SESSION['username'] = $_POST['username']; 
} 

之後,你可以寫:

session_start(); 
echo $_SESSION['username']; 

在任何你想要的頁面。

0

[假設你只是忘了,包括在發佈代碼中的一些表單元素...]

此代碼永遠不會執行:

$_SESSION['username'] = $_POST['username']; 

因爲你從來沒有發佈表單到該頁面。你把它發佈到不同的頁面:

<form action="BAMainPage.php" method="post"> 

於是就BAMainPage.php是您將訪問$_POST['username']。基本上,在這種交互中你根本不需要使用會話狀態。表格值直接發送到BAMainPage.php