2010-10-21 93 views
2

我有一個HTML表單。比方說,我填寫所有字段並提交它(PHP腳本在這裏運行)。 然後我想用瀏覽器的「返回」按鈕回到表單。 我看到的是空的形式。 如何使用瀏覽器的「返回」按鈕返回到頁面後,如何將輸入的數據保留在頁面上?以HTML格式保存數據

謝謝!

回答

3

如果您使用瀏覽器的「返回」按鈕,那麼您的瀏覽器負責重新填充表單數據。

0

您可以潛在地將數據存儲在會話中,並使用PHP會話重新填充數據。您應該創建一個單獨的後退按鈕,將您帶到上一頁。

例子:

存儲數據:

$_SESSION['data'] = $_POST['item1']; 

在HTML表單:

<input type="text" name="someinput" value="<?=$_SESSION['data']?>" /> 
+0

至$ _SESSION參考[「數據」]將導致異常的第一次,如果它是不是已經定義的形式加載。 – 2010-10-21 16:25:21

+0

謝謝! 但我希望找到一種方法讓瀏覽器的按鈕讓我保留數據。 – vlevsha 2010-10-21 16:46:22

1

通常該功能是由瀏覽器來處理,但是如果你想「強制」字段始終預填充用戶的數據,您可以將$ _ POST數據在session variable中,並使用它來加載表單。

例子:

// submission page 
session_start(); 
if(isset($_POST)){ 
    // save the posted data in the session 
    $_SESSION["POST"] = $_POST; 
} 

然後實際的表單頁面上,你可以檢查,看看是否存在會話數據。它不會,如果窗體被加載的第一次,但它會在用戶提交表單,然後按下瀏覽器的後退按鈕:

// form page 
session_start(); 
if(isset($_SESSION["POST"])){ 
    // previous POST data has been saved 
    // build the form with pre-defined values from $_SESSION 
    ... 
} else { 
    // no previous data 
    // build the form without pre-defined values 
    ... 
} 

請注意,您必須輸出任何HTML之前調用session_start()

+0

這就是我所懷疑的。 所以SESSION是不可避免的。隨它去。 :) 非常感謝! – vlevsha 2010-10-21 16:43:41

+0

isset($ _ POST)始終爲真... – 2010-10-21 19:52:06

+0

@YuriKolovsky:你說得對。你想要做'isset($ _ POST [「name_of_form」])'或類似的 – 2010-10-21 20:04:40

1

Store中的表單頁面

<input name="flowers" value="<?php echo if(isset($_SESSION['forms']['forms_1']['flowers'])){ echo htmlspecialchars($_SESSION['forms']['forms_1']['flowers']);} ?>" /> 

顯然上述的會話中的值

session_start(); 

//form so that you have all the potential forms in a single session array 
//form_1 to identify the form in question 

if(!empty($_POST)){ 
$_SESSION['forms']['form_1'] = $_POST;//if this is for the public internet, then I would really consider making sure that the posted data matches the received data... (and that its comming from YOUR form), which is way too long to post here... 
} 

則可以簡化,但對於一個例子的緣故,它的這種方式更好。

(確保最終清理掉舊的表格數據)