Php 提交前存储表单数据的最佳方式?
首先让我描述一下这个场景。假设一个用户在我的站点中填写表单。表单可能包含大约14个字段。现在,在完成7个字段后,他/她会错误地返回或关闭窗口或重新启动电脑 现在,当他/她回来时,有没有办法让他知道7个字段已满?现在有三种情况需要处理: 从主页返回 关上窗户 重新启动电脑 可能没有解决所有这些问题的办法。如果只有1和2的情况可以处理,这是很好的 我知道会话,但到目前为止,我知道要在会话中保存一些东西,您需要提交网站或刷新,这不是我的重要案例 所以我需要一个好方法来做到这一点Php 提交前存储表单数据的最佳方式?,php,forms,session,datastore,Php,Forms,Session,Datastore,首先让我描述一下这个场景。假设一个用户在我的站点中填写表单。表单可能包含大约14个字段。现在,在完成7个字段后,他/她会错误地返回或关闭窗口或重新启动电脑 现在,当他/她回来时,有没有办法让他知道7个字段已满?现在有三种情况需要处理: 从主页返回 关上窗户 重新启动电脑 可能没有解决所有这些问题的办法。如果只有1和2的情况可以处理,这是很好的 我知道会话,但到目前为止,我知道要在会话中保存一些东西,您需要提交网站或刷新,这不是我的重要案例 所以我需要一个好方法来做到这一点 实际上,我的站点将在每
实际上,我的站点将在每个表单中托管大约20-40个字段。因此,如果用户关闭选项卡或返回,对其进行恢复是非常重要的 您可以使用将数据保存到会话。。。你不需要刷新。。您可以在每次字段更新时或任何时候调用ajax。。ajax调用不需要等待表单提交。。它可以在每次按键/keyup时触发(尽管不推荐)您也可以每隔x秒通过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"];
?>
在网络世界中,通常要做的事情是将数据保存在cookie或会话中。Cookie存储在用户的机器中,直到其到期日期为止,而会话的时间跨度通常较短(通常取决于服务器的会话生存时间) 一种方法是,如果用户可以在稍后离开并返回(即使在重新启动后),将其保存到cookie中。您可以在PHP中使用setcookie来实现这一点,并序列化数据 例如:
setcookie("UserFormData", serialize($_POST), time()+3600); /* expire in 1 hour */
From:您可以创建一个onchange函数。您可以为每个输入设置一个特定的cookie,假设您使用的是PHP和我提供的链接中的函数,您可以执行以下操作:
<input type="text" name="username" onchange="SetCookie('username',this.value,1);" value="<?=$_COOKIE['username'];?>" />
您应该逐页存储数据,只有在X分钟内未更新数据后才能“完成”。至少我是这样完成了一个类似的任务的,我在工作中为一个站点创建了一个4页的连接过程。以会话id作为密钥存储page1数据,然后对其他页面进行更新。这样,如果用户返回或取消,您仍然可以获得他们的一些数据。我想我没有让您了解我的情况。我的问题是,如果用户填写了表单的一半并将其关闭,那么我如何在会话中实际保存数据。如果用户在这种情况下提交,我可以在会话中保存数据。很难保证所有数据都以这种方式保存。有些可能,但不一定是全部。但是,有些总比没有好。如果在每个字段更新(更改)事件上触发ajax调用,那么保存数据是有意义的,否则为什么要保存特定字段的“未完成”项。。有意义吗?例如,在字段更改时保存更有意义,并且可能会使数据与用户有时间(在他/她关闭浏览器之前)一样准确,或者让用户做其他事情。如果cookie可用,会话存储和本地存储也是一个很好的替代品,但您希望在包含所有内容的单个JSON字符串上执行此操作。。。window.localStorage.setItem('idname',data);window.localStorage.getItem('idname');我不熟悉JSON。所以我最好使用cookie或会话SCUZYSETCOKIE是默认函数吗?同样在这种情况下,如果我对输入框进行更改,并且不提交按钮,它会将值保存到cookie吗?