首页 > 解决方案 > 删除后PHP图像仍然显示

问题描述

我正在使用长表格来更新我的数据库中的广告。我还使用此表单通过按删除按钮来删除图像。删除进度很好,它从数据库中删除了图像的路径,但图像仍在显示,直到我手动重新加载页面。我试图在 isset 方法的末尾回显一个 javascript 重新加载代码,但它会无限地重新加载。

我的代码:

// Delete image
if (isset($_POST['delete'])) {
    $delete_imageid = $_POST['imageid'];
    $stmt = $link->prepare("DELETE FROM images WHERE id = ?");
    $stmt->bind_param('i', $delete_imageid);
    $stmt->execute();
    $stmt->close();

}

标签: php

解决方案


您从根本上针对 PHP 最佳实践做了很多事情:

  1. 您不应该在具有 HTML 输出的页面上删除。您应该在只能通过身份验证机制(CSRF 密钥或类似密钥)访问的单独页面上删除。

  2. exit first page --> load new page --> reload first page例程还将解决您的刷新问题,因此您的浏览器将需要加载一个仅限 PHP 的删除页面,然后才能被静默重定向(如biesoir所示)回到您的 HTML 显示页面。因此显示页面将刷新(由于重新加载)。

  3. 如果time()显示页面由于某种原因被缓存,您可以通过函数向调用添加时间戳来强制忽略缓存:

    header("Location: yoursite.com/your-desired-return-path-here?t=".time());
    exit;
    

Javascript 完全不需要,因为 Javascript 在浏览器上工作,而 PHP 在服务器上工作。这就是您进入无限循环的原因,因为当 PHP 仅在服务器端运行时,您试图不断检查浏览器端的更改。

这两件事没有相互作用。HTML 和 Javascript()仅在 PHP 完成并将结果发送到远程浏览器后才能工作。

PHP/Server --> Javascript/HTML/Browser

推荐阅读