php-如何临时保存表单数据

php-如何临时保存表单数据,php,session,Php,Session,我设计了一个用户配置文件表单,这是一个非常复杂的长表单。 在用户提交和保存表单之前,需要对表单进行验证 问题是: 当表单保存到数据库中时,会涉及多个表。 现在我想介绍一个名为“saveform”的函数,它在内部不验证表单,只保存用户输入的内容 存在一些潜在问题,例如: Q1>如何保存临时数据 Q2>如果用户保存临时数据,我应该怎么做 不提交表单,然后退出。 此功能看起来像Gmail提供的草稿功能 Q1>如何保存临时数据 有几种方法可以做到这一点。您可以将其保存到另一个表中。您还可以(可能更流行)

我设计了一个用户配置文件表单,这是一个非常复杂的长表单。 在用户提交和保存表单之前,需要对表单进行验证

问题是:

当表单保存到数据库中时,会涉及多个表。 现在我想介绍一个名为“saveform”的函数,它在内部不验证表单,只保存用户输入的内容

存在一些潜在问题,例如:

Q1>如何保存临时数据

Q2>如果用户保存临时数据,我应该怎么做 不提交表单,然后退出。 此功能看起来像Gmail提供的草稿功能

Q1>如何保存临时数据

有几种方法可以做到这一点。您可以将其保存到另一个表中。您还可以(可能更流行)将其保存到与已完成概要文件相同的表中,但为此目的,可以通过列将其标记为不完整。此列可以命名为
complete
。如果配置文件不完整,将设置为
0
false
。如果完成,将设置为
1
true
。然后可以基于它进行查询

然后,您可以通过所需的任何程序“验证”数据,并根据需要将列设置为
1
true

Q2>如果用户保存临时数据时没有 提交表单,然后退出。此功能看起来像草稿 Gmail提供的功能

上面的答案也应该达到这个目的

如果需要重新加载数据并允许用户继续填写未完成的表单,则需要为他们获取某种标识符以允许此操作。您可以通过设置cookie,或者通过他们在表单顶部输入的某种唯一标识符(如SSN、phone、student ID等)来实现这一点



如果你正在寻找Gmail的草稿功能,你需要实现某种AJAX调用,每X秒/分钟自动触发一次,以自动保存数据。

你可以为你想保存的字段创建一个会话。比如说

$this_form = array(
  'field1' = 'value',
  'field2' = 'value2',
);
然后将其保存到会话中:

$_SESSION['this_form'] = $this_form;
如果你真的想偷懒,你可以在会话中保存
$\u POST
$\u GET
变量

$_SESSION['my_post'] = $_POST;// or $_GET depending on your form.
当然,在你验证它们并进行常规接种之前,你知道不要对它们做任何事情

稍后只需调用保存的会话变量,即可重新读取该变量

i、 e

完成会话后,可以使用unset命令将其删除:

i、 e

您还可以使用以下会话功能:


这就是会话的用途。虽然这是一个古老的答案,但它是谷歌的热门话题,因此我要补充的是,cookie有大小限制(4K),当您尝试在每个请求上检索cookie数据时(即大的
字段),速度会减慢很多。我建议使用服务器端会话,这会带来更好的安全性(客户端不能拒绝删除它们,如果您的密钥很弱/不存在,也不能篡改它们)。仅将客户端cookie用于简单的事情。elithrar,您应该注意会话不是cookie(按说法)。会话数据保存在服务器端,只向浏览器传递会话id。
echo $_SESSION['this_form']['field1'];
unset $_SESSION['this_form']