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

q09*_*987 3 php session

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

这是一个问题:

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

存在潜在问题,例如:

Q1>如何保存临时数据?

Q2>如果用户在未提交表单的情况下保存临时数据然后退出,我该怎么办?此功能类似于Gmail提供的草稿功能.

dki*_*zer 8

您可以为要保存的字段创建会话.例如

$this_form = array(
  'field1' = 'value',
  'field2' = 'value2',
);
Run Code Online (Sandbox Code Playgroud)

然后将其保存到会话中:

$_SESSION['this_form'] = $this_form;
Run Code Online (Sandbox Code Playgroud)

如果你想变得非常懒,你可以在会话中保存$_POST$_GET变量.

$_SESSION['my_post'] = $_POST;// or $_GET depending on your form.
Run Code Online (Sandbox Code Playgroud)

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

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

echo $_SESSION['this_form']['field1'];
Run Code Online (Sandbox Code Playgroud)

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

unset $_SESSION['this_form']
Run Code Online (Sandbox Code Playgroud)

您还可以使用会话功能:

PHP Session Functions


Nat*_*hot 5

Q1 >如何保存临时数据?

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

然后,您可以"验证"通过一切必要的程序数据和列设置1true根据需要.

Q2 >如果用户在未提交表单的情况下保存临时数据然后退出,我该怎么办?此功能类似于Gmail提供的草稿功能.

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

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


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