2010-02-03 26 views
0

IM创建两个表(在MySQL)命名删除从MySQL表中的信息时,用户关闭了浏览器

  1. table_temp_guest
  2. table_temp_order

现在如果客人然后进入我们救他的个人信息在第一张表格中,如果他从任何摊位购买了一些东西,它将作为临时订单保存在table_temp_order中。

现在我的问题是:使用会话ID

IM,所以当用户进入退出(不检出),然后 我使用会话ID删除他从两个表中的信息(个人和秩序)) , 但如果他关闭浏览器,或不去结帐(任何共振),然后如何 删除他的信息从这两个表 请建议我该怎么做?

另一个问题: 是有任何其他方式通过一些其他的方式来做到这整个过程。

回答

4

用户关闭浏览器或键入新地址时无法检测到。你基本上需要像其他网站一样拥有“超时”设施。

+0

和ho我们是否管理超时设施?请你告诉我 – diEcho 2010-02-03 21:32:08

+0

在任一表上使用“last_updated_at”字段,并定期(比如说,每天一次)删除last_updated_at条目以前的所有条目。 – 2010-02-03 21:40:46

2

有一个window.onunload事件,您可以使用javascript检测,但它不被普遍支持,并且它检测到窗口关闭,而不是浏览器关闭。

您的最佳解决方案可能是跟踪session_id和上次访问日期。在每次加载页面时重新更新表格last_accessed_date,并删除超过几个小时的所有内容。

+0

但同时很多客人都来自不同的PC上的网站,那么我怎么才能删除上次访问日期的特定用户信息? – diEcho 2010-02-03 21:38:49

+0

如果有多个客人同时使用计算机而不关闭浏览器窗口(或一个接一个地点)?没有什么办法。每次访问和浏览器,php会话都是独一无二的。如果您访问亚马逊,请将一堆东西添加到购物车中,然后离开计算机,下一个人仍然可以看到您的(未填写的)订单。这就是为什么每个人都在公共计算机上写着“记住在完成后关闭浏览器”的原因。 您可以为销毁会话数据的客人提供注销链接。 – davethegr8 2010-02-03 22:46:37

+0

用户正在关闭浏览器,但现在注销了亲爱的 – diEcho 2010-02-03 23:58:23

1

暂停将是最好的方法。

在来宾表中记录上次活动时间。定期在Web服务器上运行cron作业,以清理超出您希望允许的最长时间的会话。

要小心你允许的时间。你必须允许用户速度慢和丢弃连接。

+0

我不知道如何在PHP中设置cronjob,你会告诉我的过程或简单的教程网站吗?谢谢 – diEcho 2010-02-03 21:41:26

+2

你不能在php中设置它们;你将不得不编写一个shell脚本(用于你的特定服务器使用的任何shell),并插入到该服务器的cron列表中。如果您需要帮助,我建议发布有关cron-jobs的其他问题以及如何编写它们的条目。 – macabail 2010-02-03 22:47:38

+0

有些主机有一个非常简单的输入作业界面。这一切都取决于你的主机。您可以在php中编写脚本,并在作业中使用/ path/to/php yourscript.php来调用它。大多数情况下,Web主机发布某些可执行文件的路径。如果您有shell访问权限,则更容易,因为您可以自己找出路径。我认为phpinfo()甚至显示可执行文件的路径。 – Buggabill 2010-02-04 13:28:29

0

此外,您可以尝试在客户端运行脚本并对服务器执行ping操作,以便知道脚本是否暂时停止运行,用户关闭浏览器。这就是说,我会同意以前的海报,超时/清理程序是最好的。

为此,您需要为表格添加ModifiedDate字段,您可以将其设置为“ON UPDATE”字段以便于使用,然后删除所有ModifiedDate字段为老版本然后几个小时的所有记录。

1

如果你使用session_id()无论如何(我想这是你的意思是会话ID),只需使用PHP会话。 PHP为你自动使它们失效,你不需要这两个表(你可以在$ _SESSION中存储你需要的所有东西)。

没有办法检查你是否可以依靠的关闭的布尔歇。

如果您不想改变项目现在的工作方式,只需在表格中添加一个创建的字段,并在您“看到”特定用户时将其设置为当前时间()。然后设置一个cronjob,它会删除此表中比特定超时更早的所有记录。

+0

通过cron作业我们可以删除特定用户的详细信息(通过使用会话ID)或该cron作业清空表?请建议我sgood网站在cron作业在Windows(Xampp) – diEcho 2010-02-03 22:12:29

相关问题