我的页面上有一个包含许多字段的表单。一旦用户输入值,我就会在数据存储区中保存字段值(无需等待表单提交)。一些分数基于字段值计算并显示给用户。我还生成用户的客户端ID并将其存储在用户的cookie中一小时。
我不确定当用户在浏览器中刷新页面时会发生什么:
在这两种情况下,我都不想为此用户创建新记录,因此客户端ID应保持不变。但在方案(1)中,我不应该清除数据存储区中的字段值及其分数,但我应该在方案(2)中进行。我怎样才能在服务器端识别出来?
答案 0 :(得分:0)
您解释的两个方案是浏览器内置的行为。如果您在提交数据的页面上按F5,大多数浏览器将尝试重新提交表单数据。这是为了避免普通用户丢失数据。
就好像您要进入网站一样,填写表单并再次单击“全部提交”。
为避免再次处理此数据,您可以生成随机密钥并将其存储在隐藏的表单字段中。然后,在提交数据时,将此密钥保存在会话变量中。如果重新提交数据,您可以检查回发,将表单数据中的随机密钥与会话中的随机密钥进行比较。如果它们相同则数据已经处理完毕。
答案 1 :(得分:0)
当用户进入“注册”页面并将其存储在数据库中时,创建一个SESSION ID。我认为只有当用户关闭浏览器时,会话ID才会改变。
如果用户刷新页面,则使用SESSION ID从数据库中检索值。
当用户单击“提交”按钮并成功将值查询到数据库时。销毁SESSION ID重置表单字段...
答案 2 :(得分:0)
最好的方法是,当你加载页面时,如果每个表单字段中都有任何内容已经保存在db中,你应该检查它,否则尝试一些客户端表单字段缓存技术。