离开网站时Javascript / PhP删除文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了离开网站时Javascript / PhP删除文件相关的知识,希望对你有一定的参考价值。

我正在寻找一种方法来删除在特定文件夹中生成的唯一文件。当用户离开页面而未完成“任务”时,应删除该文件。文件命名是通过uniqid()统一的

我用以下方式尝试了它:

<script>

    window.onbeforeunload = <?php unlink($_POST['localfile']) ?>;

</script>

但不知何故,这并不总是奏效。例如,当我使用后退按钮时,它正在工作,但当我将其他网址放入我的搜索栏并转到所需目的地时,例如google.com,该文件将不会被删除。我怎么能解决这个问题,还是有其他方法可以解决这个问题?

答案

我不知道这将如何运作。您在此处混合客户端和服务器端代码。

<script>标记是javascript,将在客户端的计算机上执行。而<? PHP?当页面在服务器端生成并发送到客户端时,将触发>标记。

它可以在后退按钮上工作的唯一原因是因为当时设置了变量$ _POST。

执行此操作的最佳方法是使用window.onunload事件并发布ajax请求

该解决方案的唯一问题是,如果客户端计算机崩溃,它将不会运行javascript,因此您将实现一个不可靠的解决方案,最终得到一个充满旧文件的文件夹,需要定期清理。

如果您生成的文件小到足以保留在内存中,则应使用$ _SESSION变量。

javascript代码如下

<script>
  document.body.onunload = function() {
    var xhr = new XMLHttpRequest();
    xhr.open("GET", './unlink.php, true);
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.onreadystatechange = function () {
      if (xhr.readyState == 4 && xhr.status == 200) {
        if (xhr.responseText) {
          //somecode
        }
        else {
          alert(xhr.responseText);
        }
      }
    };
    xhr.send();
  }
</script>

另一种解决方案是在数据库中使用将自动删除的临时表。

如果您决定使用$ _SESSION变量,请记住调用session_start();在PHP脚本的开头。

您将从学习客户端/服务器关系中受益。

希望这可以帮助

以上是关于离开网站时Javascript / PhP删除文件的主要内容,如果未能解决你的问题,请参考以下文章

Meteor,ReactJS,MongoDB:当用户离开页面时执行某些操作

JavaScript实现添加班级和离开班级功能通知加入删除pushindexOfsplice

禁用“离开网站?”关闭 Orbeon 窗体窗口时弹出

使用 Ajax 执行 php 文件

如何从我网站上的所有 php 文件中删除 iframe 病毒

XAMPP/Localhost 外部 Javascript 文件为空