【问题标题】:How can I delete an image when a user leaves my site in php? [closed]当用户在 php 中离开我的网站时,如何删除图像? [关闭]
【发布时间】:2025-12-22 19:05:07
【问题描述】:

我想在用户离开我的网站或关闭浏览器或在地址栏中输入任何其他网址时删除图像。

【问题讨论】:

标签: php


【解决方案1】:

您无法捕捉用户何时选择离开网站。您最好在某处记录他们上次从会话中访问您的网站的时间,并在一段时间后执行某种 cron 工作来清除他们的图像。

【讨论】:

  • 不必要地轮询服务器和 cron 来完成如此简单的任务
【解决方案2】:

这很难实现。没有正确的方法来检测用户何时离开您的网站。最准确的方法是向您的页面添加一个脚本,该脚本会以较小的间隔定期请求某个 URL。当用户离开时,这个 URL 不再被请求,你意识到用户已经离开了,你可以删除一些东西。

【讨论】:

  • 实现起来一点都不难,有专门针对这个的javascript事件
  • onunloadonbeforeunload 事件不可靠。
【解决方案3】:

好吧,我不是一个优秀的 JavaScript Pro,但我认为可能有一个功能可以检查用户是否离开页面。 (想想这个不时出现的弹出窗口,你会被问到你是否真的想离开这个页面。) 您现在检查此事件(离开页面)是否正在发生,当它发生时,您发送一个 AJAX 请求。您的 PHP 响应删除了您的图像。

就像我说的,不确定 Javascript 中的这个函数是否有效。

【讨论】:

    【解决方案4】:

    您可以在 onbeforeunload 事件上使用 Javascript,然后在异步设置为关闭的情况下执行 AJAX 请求,因此它会在用户离开之前“阻止”浏览器

    您可以使用 jQuery 进行异步 AJAX 调用,如下所示:

    window.onbeforeunload = function(){
       $.ajax({
          url:"your_delete_script.php", 
          async:false
       });
    }
    

    或者您可以即时创建一个图像,该图像就像一个信标来执行脚本。

    window.onbeforeunload = function(){
      var img = new Image();
      img.src = "script.php";
    }
    

    只需确保您的脚本在该部分得到ignore_user_abort,这样无论用户是否关闭浏览器,它都会独立执行

    【讨论】:

    • 您不应该 100% 依赖 onunloadonbeforeunload。参见:*.com/questions/3876827/…*.com/questions/1594548/… 例如
    • 我知道,但他别无选择。这是他最好的选择,不幸的是
    • 不,他最好的选择是实现一个基于服务器的系统,在那里他检查过期的会话。
    • 用户仍然可以在页面中处于空闲状态,会话过期,那怎么办?
    • 客户端浏览器可能没有启用javascript,因此服务器端解决方案会更好。