Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当用户关闭浏览器时从mysql表中删除信息_Php_Mysql_Session - Fatal编程技术网

Php 当用户关闭浏览器时从mysql表中删除信息

Php 当用户关闭浏览器时从mysql表中删除信息,php,mysql,session,Php,Mysql,Session,我正在创建两个名为 餐桌临时客人 表2临时订单 现在,如果一位客人进来了,我们会把他的个人信息保存在第一张桌子上,如果他从任何一个摊位上买东西,我们会把它保存为临时订单保存在桌子上 现在我的问题是: 我使用的是会话id,所以当用户注销(不签出)时 我使用会话id从两个表中删除他的信息(个人和订单), 但是如果他关闭浏览器,或者不去结帐(任何原因),那怎么办 从两个表中删除他的信息 请告诉我怎么做 附加问题: 是否有其他方法可以通过其他方式完成整个过程。当用户关闭浏览器或键入新地址时,您无法检测到

我正在创建两个名为

  • 餐桌临时客人
  • 表2临时订单
  • 现在,如果一位客人进来了,我们会把他的个人信息保存在第一张桌子上,如果他从任何一个摊位上买东西,我们会把它保存为临时订单保存在桌子上

    现在我的问题是:

    我使用的是会话id,所以当用户注销(不签出)时 我使用会话id从两个表中删除他的信息(个人和订单), 但是如果他关闭浏览器,或者不去结帐(任何原因),那怎么办 从两个表中删除他的信息 请告诉我怎么做

    附加问题:
    是否有其他方法可以通过其他方式完成整个过程。

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

    有一个
    窗口。onunload
    事件可以用javascript检测,但它不是普遍支持的,它检测窗口关闭,而不是浏览器关闭


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

    超时将是最好的方法

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


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

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

    为此,您可以向表中添加一个ModifiedDate字段,为便于使用,您可以将其设置为“更新时”字段,然后删除所有ModifiedDate字段早于几个小时的记录。

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

    没有办法检查broswer是否关闭,你可以信赖


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

    但同时有许多来宾从不同的PC上访问站点,那么如何在上次访问日期之前删除该特定用户的信息??如果有多个来宾同时使用计算机而不关闭浏览器窗户(还是一扇接一扇)?真的没有办法。每次访问和浏览php会话都是唯一的。如果你访问亚马逊,在购物车中添加一些东西,然后离开电脑,下一个人仍然可以看到你的(未完成的)订单。这就是为什么每个人都在公共计算机上说“完成后记得关闭浏览器”。您可以为来宾提供一个注销链接,该链接会破坏会话数据。用户正在关闭浏览器,但现在正在注销。如果您在windows上,则关闭浏览器等同于退出,下次有人访问该站点时,他们将获得一个新的唯一会话id。在任一表上使用“last_updated_at”字段,并定期(比如说,每天一次)删除所有最近更新的条目。我不知道如何在php中设置cronjob,请告诉我过程或简单的教程站点。谢谢你不能在php中设置它们;你必须编写一个shell脚本(无论你的特定服务器使用什么shell),并插入到该服务器的cron列表中。如果您需要帮助,我建议您发布另一个关于cron作业以及如何编写其条目的问题。有些主机有一个非常简单的输入作业的界面。这完全取决于您的主机。您可以用php编写脚本,并在作业中使用/path/to/php yourscript.php调用它。大多数web主机发布某些可执行文件的路径的时间。如果您具有shell访问权限,则更容易,因为您自己可以找到路径。我认为phpinfo()甚至显示了可执行路径。通过cron作业,我们可以删除特定用户的详细信息(通过使用会话id)或者cron作业清空了表??请为我推荐一个windows中cron作业的好站点(Xampp)