我有一個HTML表單。比方說,我填寫所有字段並提交它(PHP腳本在這裏運行)。 然後我想用瀏覽器的「返回」按鈕回到表單。 我看到的是空的形式。 如何使用瀏覽器的「返回」按鈕返回到頁面後,如何將輸入的數據保留在頁面上?以HTML格式保存數據
謝謝!
我有一個HTML表單。比方說,我填寫所有字段並提交它(PHP腳本在這裏運行)。 然後我想用瀏覽器的「返回」按鈕回到表單。 我看到的是空的形式。 如何使用瀏覽器的「返回」按鈕返回到頁面後,如何將輸入的數據保留在頁面上?以HTML格式保存數據
謝謝!
如果您使用瀏覽器的「返回」按鈕,那麼您的瀏覽器負責重新填充表單數據。
您可以潛在地將數據存儲在會話中,並使用PHP會話重新填充數據。您應該創建一個單獨的後退按鈕,將您帶到上一頁。
例子:
存儲數據:
$_SESSION['data'] = $_POST['item1'];
在HTML表單:
<input type="text" name="someinput" value="<?=$_SESSION['data']?>" />
通常該功能是由瀏覽器來處理,但是如果你想「強制」字段始終預填充用戶的數據,您可以將$ _ 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()。
這就是我所懷疑的。 所以SESSION是不可避免的。隨它去。 :) 非常感謝! – vlevsha 2010-10-21 16:43:41
isset($ _ POST)始終爲真... – 2010-10-21 19:52:06
@YuriKolovsky:你說得對。你想要做'isset($ _ POST [「name_of_form」])'或類似的 – 2010-10-21 20:04:40
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...
}
則可以簡化,但對於一個例子的緣故,它的這種方式更好。
(確保最終清理掉舊的表格數據)
至$ _SESSION參考[「數據」]將導致異常的第一次,如果它是不是已經定義的形式加載。 – 2010-10-21 16:25:21
謝謝! 但我希望找到一種方法讓瀏覽器的按鈕讓我保留數據。 – vlevsha 2010-10-21 16:46:22