gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 02:23:18 25 4
gpt4 key购买 nike

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

实现的 uniqe

我尝试了以下方法:

<script>

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

</script>

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

最佳答案

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

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

它在后退按钮上起作用的唯一原因是因为变量 $_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 离开网站时删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49061558/

25 4 0
文章推荐: javascript - 使 ajax 响应全局并可在所有路由中使用
文章推荐: javascript - Controller 作为语法不适用于 Angular 1.4.5 var vm = 此模板未显示
文章推荐: javascript - 输入的占位符不会从