【问题标题】:Need to perform a database query on close of browser需要在浏览器关闭时执行数据库查询
【发布时间】:2014-01-21 03:12:57
【问题描述】:

当用户关闭他的浏览器时,我需要对数据库执行 MySQL 查询。我正在开发一个应用程序,当用户登录数据库字段 lo-gin_status 设置为 1 并且用户注销他的 lo-gin_status 时设置为0。但是如果用户登录但没有注销他只是关闭了他的浏览器,我该怎么办。

【问题讨论】:

  • 你试过什么?您自己似乎没有做出任何努力...展示您到目前为止所做的尝试
  • 您可以将 this answer 之类的内容与将标志设置为 0 的 AJAX 请求结合使用,或者在“不活动” x 分钟后使标志超时
  • 您试图解决一个已经解决的问题:只需设置一个超时阈值。只要用户与您的网站交互,延迟阈值。如果用户在阈值用完后尝试进行交互,请将他重定向到登录页面。
  • 我这里有问题,页面刷新时窗口卸载功能起作用。所以它将登录状态设置为0。我用它来防止多用户访问

标签: javascript php ajax browser


【解决方案1】:

您可以尝试使用 Javascript 执行此操作并检查窗口关闭事件,但这取决于浏览器是否支持。

您可以做的是创建一个表来记录人们何时访问您的网站,然后运行一个 cron 作业来检查他们更改页面后的时间。如果超过 X 分钟,则将该用户的状态设置为离线。

还是试试吧:

使用 window.onunload 事件。

https://developer.mozilla.org/en-US/docs/Web/API/window.onunload

您应该能够进行 ajax 调用来运行您想从那里运行的查询

【讨论】:

  • 请举个例子
【解决方案2】:

您可以在卸载 js 事件时向服务器端发送一些 ajax 请求。 Look here for details

【讨论】:

    【解决方案3】:

    确切地说,您正在寻找 .unload() jQuery event

    $( window ).unload(function() {
      //call a php function that sets the flag to 0 or whatever you want
    });
    

    【讨论】:

    • 回答问题,但不能保证请求确实完成。
    • 我知道,他应该给我们一些代码来更好地帮助他。
    • 你是在问还是在说?
    • 这适用于关闭事件的 chrome 但在 FF 中它也适用于重新加载,这并不好。我不想在重新加载时执行查询。我想在关闭时执行
    【解决方案4】:

    你从错误的角度来处理这个问题。没有 100% 确定的方法可以判断他是注销还是关闭了浏览器(他也可能只是杀死浏览器或关闭 pc/移动设备)。

    相反,将会话数据存储在数据库中,并在用户每次在页面上执行操作时刷新它,如果在特定时间(例如 30 分钟左右)没有操作,只需手动将其注销。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 2013-04-08
      • 1970-01-01
      • 1970-01-01
      • 2014-05-16
      • 2023-03-21
      • 2015-03-19
      相关资源
      最近更新 更多