【问题标题】:remove information from mysql table when user close his Browser用户关闭浏览器时从 mysql 表中删除信息
【发布时间】:2011-01-12 19:51:11
【问题描述】:

我正在创建两个名为的表(在 mysql 中)

  1. table_temp_guest
  2. table_temp_order

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

现在我的问题是:

我使用会话 id,所以当用户退出时(没有结帐)然后 我使用会话 ID 从两个表中删除他的信息(个人和订单), 但是如果他关闭浏览器,或者不去结帐(任何原因),那么如何 从两个表中删除他的信息 请建议我如何做到这一点?

其他问题: 有没有其他方法可以通过其他方式完成整个过程。

【问题讨论】:

    标签: php mysql session


    【解决方案1】:

    如果您仍然使用 session_id() (我想这就是您所说的会话 ID),只需使用 php 会话。 PHP 会自动为您使它们无效,您不需要这两个表(您可以将所需的所有内容存储在 $_SESSION 中)。

    无法检查您可以依赖的浏览器是否未关闭。

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

    【讨论】:

    • 通过 cron 作业我们可以删除该特定用户的详细信息(通过使用会话 ID)还是该 cron 作业清空表?请建议我在 windows(Xampp) 中进行 cron 工作的好网站
    【解决方案2】:

    您还可以尝试让脚本在客户端运行并 ping 服务器,以便您知道脚本是否有一段时间没有 ping,用户关闭了浏览器。话虽如此,我同意之前的海报,超时/清理程序是最好的。

    为此,您可以将 ModifiedDate 字段添加到表中,您可以将其设置为“ON UPDATE”字段以方便使用,然后只需删除 ModifiedDate 字段早于几个小时的所有记录。

    【讨论】:

      【解决方案3】:

      超时将是最好的方法。

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

      请注意您允许的时间。您必须允许慢速用户和断开连接。

      【讨论】:

      • 我不知道如何在php中设置cronjob,你能告诉我过程或简单的教程网站吗?谢谢
      • 你不能在php中设置它们;您必须编写一个 shell 脚本(对于您的特定服务器使用的任何 shell),然后插入该服务器的 cron-list 中。如果您需要这方面的帮助,我建议您发布另一个关于 cron-jobs 以及如何编写它们的条目的问题。
      • 一些主机有一个非常简单的界面来输入作业。这完全取决于您的主机。您可以在 php 中编写脚本并在作业中使用 /path/to/php yourscript.php 调用它。大多数情况下,某些可执行文件的路径是由 Web 主机发布的。如果你有 shell 访问权限,那就更容易了,因为你自己找出路径。我认为 phpinfo() 甚至显示了可执行路径。
      【解决方案4】:

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

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

      【讨论】:

      • 但同时有许多访客从不同的 PC 在网站上,那么我如何才能在上次访问日期之前删除该特定用户的信息??
      • 如果有多个客人同时使用计算机而不关闭浏览器窗口(或一个接一个)?实在没有办法。每次访问和浏览器的 php 会话都是唯一的。如果您访问亚马逊,将一堆东西添加到您的购物车,然后离开计算机,下一个人仍然可以看到您的(未完成的)订单。这就是为什么每个人都在公共计算机上说“完成后记得关闭浏览器”的原因。您可以为客人提供一个注销链接,该链接会破坏会话数据。
      • 用户正在关闭浏览器,但现在退出了亲爱的
      • 如果您在 Windows 上,关闭浏览器相当于退出,下次有人访问该站点时,他们将获得一个新的唯一会话 ID。
      【解决方案5】:

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

      【讨论】:

      • 在任一表上使用“last_updated_at”字段,并定期(例如,每天一次)删除所有 last_updated_at 条目在很久以前的条目。
      猜你喜欢
      • 1970-01-01
      • 2019-04-28
      • 2012-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多