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

时间:2010-08-23 18:25:17

标签: php session

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

以下是问题:

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

存在潜在问题,例如:

  

Q1>如何保存临时数据?

     

Q2>如果用户保存临时数据,我该怎么办?           没有提交表格然后退出。           此功能类似于Gmail提供的草稿功能。

2 个答案:

答案 0 :(得分:8)

您可以为有兴趣保存的字段创建会话。例如

$this_form = array(
  'field1' = 'value',
  'field2' = 'value2',
);

然后将其保存到会话

$_SESSION['this_form'] = $this_form;

如果您想要非常懒惰,可以在会话中保存$_POST$_GET变量。

$_SESSION['my_post'] = $_POST;// or $_GET depending on your form.

当然,在你验证它们并进行常规接种之前,你知道不要对它们做任何事情。

您可以稍后通过调用它来重新读取保存的会话变量。

echo $_SESSION['this_form']['field1'];

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

unset $_SESSION['this_form']

您还可以使用会话功能:

PHP Session Functions

答案 1 :(得分:5)

  

<强> Q1 &GT;如何保存临时数据?

有几种方法可以做到这一点。您可以将其保存到其他表。您也可以(可能更受欢迎)将其保存到与完成的配置文件相同的表中,但为此目的通过列将其标记为不完整。此列可以命名为complete。如果个人资料不完整,则会将其设置为0false。如果已完成,则会将其设置为1true。然后,您可以根据它进行查询。

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

  

<强> Q2 &GT;如果用户没有保存临时数据,我该怎么办?   提交表格然后退出。此功能看起来像草稿   Gmail提供的功能。

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

如果您需要重新加载数据并允许用户继续填写不完整的表单,您需要获取某种标识符以允许它。您可以通过设置cookie或通过表单顶部输入的某种唯一标识符来完成此操作 - 例如SSN,电话号码,学生ID#等(或组合)。


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