2012-09-15 33 views
0

在PHP中,我希望使用一個單獨的文件中保存的腳本來處理表單並對其進行驗證。如果有錯誤,我希望表單顯示用戶更改的錯誤和原始值。 目前驗證腳本與表單位於同一頁面,所有工作都正常。不過,我希望遠離表單,並使用表單中的「操作」將表單變量發送到腳本。 如果我這樣做,但我怎麼才能回到帶有錯誤信息和原始值的表單  —我是否簡單地在腳本中使用$ _POST和標題位置?或者有更好的方法。 如果表單確認無誤,我會轉到單獨的頁面(使用標題)。php - 進程和驗證表單 - 正確的過程

誰能幫我理解這個過程/邏輯,我應該努力實現和函數s頁面之間過去的變量($ _ GET?)

+2

*(提示)*搜索「POST REDIRECT GET pattern」。 – Gordon

+0

相關:http://stackoverflow.com/questions/10827242/understanding-post-redirect-get –

回答

0

如果你想跟蹤多個頁面的變量,它可能可行的調查sessions。您可以將變量從$ _GET或$ _POST分配給會話,並且可以跨頁訪問。

0

我想你要找的是一個叫做模型 - 視圖 - 控制器(MVC)的框架。在你的情況下,你的表單是「視圖」,處理數據的腳本是「控制器」,那麼控制器可以選擇向用戶顯示哪些內容(錯誤信息或其他頁面包含成功信息)。但是MVC比這更復雜一點。如果你想學習MVC,閱讀一些文章並選擇使用CakePHP,CodeIgniter,Zend框架等等的MVC框架。

如果你正在學習PHP的基礎知識,你可能不希望開始使用一個框架,在這種情況下,你可以做這樣的事情(登錄示例):

的login.php

<?php 
    $error = ""; 
    $username = ""; 
    $password = ""; 

    //POST method used. The user is trying to login 
    if(isset($_POST)) 
    { 
     $username = $_POST["username"]; 
     $password = $_POST["password"]; 

     //process login here 
     //check database 
     if($success == true) 
     { 
      header('Location: home.php') ; 
     } 
     else 
     { 
      include "login-view.php"; 
      $error = "Either username or password is incorrect."; 
     } 
    } 
    else //GET method used. The user visits the login page 
    { 
     include "login-view.php"; 
    } 
?> 

登錄-view.php

<p><?php echo $error; ?></p> 
<form method="post" action="login.php"> 
    <input type="text" name="username" value="<?php echo $username ?>" /> 
    <input type="password" name="password" /> 
    <input type="submit" value="send" />   
</form> 

鱈魚e上面是這樣的:

1)用戶訪問登錄頁面。 login.php將檢測到使用的方法是GET - 鎖定鏈接,打開書籤或輸入URL到地址欄。 login.php然後將包含包含表單的登錄視圖。

2)用戶鍵入他的用戶名和密碼,然後單擊提交按鈕。 login.php會檢測到請求是POST,然後驗證用戶名和密碼,並在必要時提供錯誤消息。如果有效,則重定向到主頁,如果沒有,則包括login-view.php(表單),這次是錯誤消息和以前輸入的用戶名。