我一直在设计一个用于收集数据的站点,但我正在为其设计的人想要某种形式的冗余,以防窗口关闭或系统关闭。如果用户断开连接一段时间,或者如果他们关闭浏览器窗口/关闭系统而不提交数据,是否有任何方法可以将收集的数据写入 MYSQL 数据库?
3 回答
网络是无状态的和断开连接的——所以所有数据都将(或者更确切地说:应该)在页面请求之间持久化。
我假设您有一个由 PHP 生成的网页,其中包含一个冗长的数据输入表单,并且您希望在用户关闭浏览器窗口时将数据保存在该表单中 - 解决方案是使用客户端脚本使用表单中的当前数据轮询服务器,或者至少挂钩到窗口关闭事件。
实际实施是留给 OP 的任务。
部分防止这种情况的最常见技术是 Web 应用程序使用心跳功能,该功能通过 javascript 以恒定间隔触发并向服务器发送请求,pe 以显示用户仍在登录 - 或者,在您的在这种情况下,也可以提交已经输入表单字段的数据。
将其视为 ajax 驱动的自动保存功能!
为此,您必须在代码中添加一些 javascript,但常用的 javascript 库,如 jquery 或 mootools,都有很好的文档记录,并提供了很多示例如何执行此类操作。
这不能仅使用纯 HTML 页面来完成 - 如果用户不提交表单,您的服务器将不知道他们输入了什么。
但是,您可以在页面上放置一些 Javascript,每隔几秒(或每隔几次按键或点击)进行一次 AJAX 调用。这个想法是让 JavaScript 无形地将整个表单提交到 PHP 页面,该页面将其保存到某种“保存区域”中。
如果用户随后提交了表单,则可以清除保留区域,但如果他们从未这样做过,则保留区域中的数据会告诉您他们去了哪里。