2012-09-02 65 views
0

這裏有一個簡單的用戶名/密碼登錄表單。當我提交正確的數據時,它會去test.php和回聲'嗨'。但是如果我在test.php上刷新了它,它將顯示No Permission。我在提交後刷新test.php後,如何在test.php中顯示'hi'?刷新頁面包含郵編變量

的login.php:

<?php 
    session_start(); 
    session_unset(); 
?> 

<html> 
    <body> 
     <?php include 'header.php'; ?> 
     <form action = "test.php" method = "post"> 
      <br/> 
      Enter username 
      <input type = "text" name = "user"/> 
      <br/> 
      Enter passowrd 
      <input type = "password" name = "pass"/> 
      </br> 
      <input type = "submit" value = "submit" name = "submit"/> 
     </form> 
    </body> 
</html> 

test.php的:

<?php 
    session_cache_limiter('private_no_expire'); 
    session_start(); 
    $_SESSION['authuser'] = 0; 

    if(isset($_POST['user']) && isset($_POST['pass'])) 
    { 
     $_SESSION['username'] = $_POST['user']; 
     $_SESSION['userpass'] = $_POST['pass']; 
    } 
    else 
    { 
     $_SESSION['username'] = NULL; 
     $_SESSION['userpass'] = NULL; 
    } 

    if($_SESSION['username']=="joe" && $_SESSION['userpass'] == 123456) 
    { 
     $_SESSION['authuser']=1; 
     echo 'hi'; 
    } 
    else 
    { 
     echo "No permission"; 
     exit(); 
    } 
?> 

回答

1

刷新時,您的瀏覽器應該給你重新發布的值,如果您單擊是它應該工作的選項。

或者你可以刪除代碼的其他部分:

else 
{ 
    $_SESSION['username'] = NULL; 
    $_SESSION['userpass'] = NULL; 
} 

如果刪除則會話變量會被記住,你的代碼的其餘部分將使用這些會話值。

編輯

在該頁面中(與我上面建議的變化),第一負載,而不必登錄之前,你會得到未定義指數錯誤。爲了解決這個問題,你可以改變行:

if($_SESSION['username']=="joe" && $_SESSION['userpass'] == 123456) 

if(isset($_SESSION['username']) && $_SESSION['username']=="joe" && isset($_SESSION['userpass']) && $_SESSION['userpass'] == 123456) 

這將檢查用戶名和爲userpass設置,檢查它們的值了。

+0

謝謝你的回答。如果我刪除其他部分它的作品。儘管瀏覽器不需要隨時重新發布。另外我擔心如果我刪除其他部分它會給未定義的索引錯誤,我不知道爲什麼這不會發生 – Mzee

+0

你是對的我沒有想到,我已經添加了一個編輯來解決這個問題。 – Timm