我创建了两个名为
的表(在mysql中)现在如果客人进入,那么我们将他的个人信息保存在第一张表中,如果他从任何摊位购买了东西,它就会在table_temp_order中保存为临时订单。
现在我的问题是:
我正在使用会话ID,所以当用户进入注销(没有结账)时 我使用会话ID从两个表中删除他的信息(个人和订单), 但如果他关闭浏览器,或者没有去结账(任何共鸣)那么如何 从两个表中删除他的信息 请建议我怎么做?
其他问题: 是否有其他方式通过其他方式完成整个过程。
答案 0 :(得分:4)
您无法检测用户何时关闭浏览器或键入新地址。您基本上需要像其他网站一样拥有“超时”功能。
答案 1 :(得分:2)
您可以使用javascript检测到window.onunload
事件,但它不受普遍支持,并且会检测窗口关闭,而不是浏览器关闭。
您的最佳解决方案可能是跟踪session_id
和上次访问日期。在每个页面加载时重新更新表格last_accessed_date
,并删除超过几个小时的所有内容。
答案 2 :(得分:1)
超时是最好的方法。
记录来宾表中的最后一个活动时间。让一个cron作业定期在Web服务器上运行,清理超出您希望允许的最长时间的会话。
请注意您允许的时间。您必须允许缓慢的用户和断开的连接。
答案 3 :(得分:1)
如果你正在使用session_id()(我想这是你的会话ID的意思),只需使用php会话。 PHP会自动为您自动使用它们,并且您不需要这两个表(您可以在$ _SESSION中存储所需的所有内容)。
没有办法检查broswer是否未关闭,你可以依赖。
如果您不想改变项目现在的工作方式,只需在表格中添加一个创建的字段,并在您“看到”特定用户时将其设置为当前时间()。然后设置一个cronjob,删除此表中所有早于特定超时的记录。
答案 4 :(得分:0)
此外,您可以尝试使用可在客户端运行的脚本并ping服务器,以便您知道脚本是否已暂停,用户关闭了浏览器。话虽这么说,我同意以前的海报,超时/清理程序是最好的。
为此您可以向表中添加ModifiedDate字段,您可以将其设置为“ON UPDATE”字段以便于使用,然后只删除所有具有较旧时间的ModifiedDate字段的记录。