我有一个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