在提交之前存储表单数据的最佳方法?

时间:2013-03-22 00:43:19

标签: php forms session datastore

首先让我来描述一下这个场景。假设用户在我的网站中填写表单。表格可能包含大约14个字段。现在完成7场后,他/她错误地回去或关闭窗口或重新启动电脑。

现在当他/她回来的时候有办法向他展示7个字段已经填满了吗?现在有三种情况需要处理:

从主页面返回 关上窗户 重启电脑。

所有这些可能都没有解决方案。如果只有1和2的情况可以处理,那很好。

我知道会话,但到目前为止,我知道在会话中保存一些东西,你需要提交网站或刷新,这不是我的重要案例。

所以我需要一个很好的方法来做到这一点?

实际上,我的网站将在每种表单中托管大约20-40个字段。因此,如果用户关闭标签或返回,则为用户进行恢复非常重要。

4 个答案:

答案 0 :(得分:1)

您还可以每隔x秒设置一次会话VIA ajax。这样您就可以消除刷新页面以保存会话值的问题。

setInterval(function(){
     $.post("/ajaxLogin.php",{
            value: $("#value").val()
        }, 
        function(result){
            console.log('saved!');
      });
}, 2000);

这是通过ajax

调用的ajaxLogin.php
<?php
    session_start();
    $_SESSION['value'] = $_POST["value"];
?>

答案 1 :(得分:1)

在网络世界中,通常要做的是在Cookie或会话中保存数据。 Cookie存储在用户的计算机上,直到其到期日期为止,而会话通常具有更短的时间跨度(通常取决于服务器的会话时间)。

一种方法,如果用户可以离开并稍后返回(即使在重新启动后),则将其保存到cookie中。您可以在PHP中使用setcookie,并序列化数据。

示例:

setcookie("UserFormData", serialize($_POST), time()+3600);  /* expire in 1 hour */

来自:http://php.net/manual/en/function.setcookie.php

答案 2 :(得分:0)

你可以使用Ajax将数据保存到会话......你不需要刷新..你可以在每个字段更新或任何你想要的时候进行ajax调用..ajax调用不需要等待表单提交..它可以在每个按键/键盘上触发(虽然不推荐)

答案 3 :(得分:0)

您可以创建creates/updates a cookie的onchange函数。你可以为每个输入设置一个特定的cookie,假设你正在使用PHP和我提供的链接中的函数:

<input type="text" name="username" onchange="SetCookie('username',this.value,1);" value="<?=$_COOKIE['username'];?>" />

这似乎非常乏味,可能有更好的解决方案......