繁体   English   中英

以HTML形式保留数据

[英]Retaining data in HTML form

我有一个HTML表单。 假设我填写了所有字段并提交(PHP脚本在此处运行)。 然后,我想使用浏览器的“返回”按钮返回到表单。 我看到的是空表格。 使用浏览器的“返回”按钮返回输入的数据后,如何将其保留在页面上?

谢谢!

如果使用浏览器的“后退”按钮,则浏览器负责重新填充表单数据。

通常,该功能由浏览器处理,但是,如果您要“强制”始终始终用用户数据填充字段,则可以将$ _POST数据存储在会话变量中,然后使用该变量来加载表单。

例:

// 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_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...
}

然后在表单页面上

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

显然,可以简化上述操作,但是以示例为例,这种方法更好。

(确保最终清除旧表格数据)

您可以将数据存储在会话中,然后使用PHP会话将其重新填充。 您应该创建一个单独的后退按钮,将您带到上一页。

例:

存储数据:

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

在HTML表单中:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM