-1

我想在删除记录时显示Yes No 消息,我尝试了此代码,它工作正常,但No 按钮也可以用作Yes 按钮,这意味着即使我单击No,它也会删除该记录

<script language="javascript">
   function alert_remove() {
      confirm("Are u sure u want to delete ?");
   }
</script>
<a rel='tooltip' title='Delete' href='actions.php?delete=$row->id' onClick='javascript:alert_remove();'>

actions.php 文件:

        if (isset($_GET['delete'])){
            $id = $_GET['delete'];
            $query = mysql_query("DELETE FROM users WHERE id=$id");
            header("Location: liste.php");
        }
4

1 回答 1

0

你需要返回false

为了防止导航,该onclick函数必须返回false

onClick='javascript:alert_remove();'

它没有return声明,所以它什么也不返回。

所以:

  1. 去掉无意义的标签
  2. 添加return声明

这样的:

onclick='return alert_remove();'

现在您正在返回 的返回值alert_remove,但该函数也没有 return 语句,因此您需要添加一个:

   function alert_remove() {
      return confirm("Are u sure u want to delete ?");
   }

旁白

过时的 HTML

<script language="javascript">

这是 HTML 3.2。当前的 HTML 版本是 HTML 5。写入当前标准:

<script>

…并使用验证器

无效的 HTML

rel='tooltip'

这不是 的注册值rel

如果您想将任意数据添加到元素以供 JavaScript 访问,请使用data-*属性

GET不应该用来删除东西

href='actions.php?delete=$row->id'

删除东西不是一个安全的操作。HTTP 规范为安全操作保留 GET 请求。

曾经有一个浏览器插件,旨在通过预取后续页面来加快浏览速度,删除了论坛上的大量帖子,因为管理员用户安装了它,并且表单使用链接来删除帖子。

如果要删除内容,请使用 a<form>并发出 POST 请求。

数据库访问过时且不可靠

mysql_query("DELETE FROM users WHERE id=$id");

您正在使用已从PHP中删除过时数据库 API 。这意味着您使用的 PHP 版本自 2018 年以来尚未进行安全修复。请尽快升级 PHP。

您应该为您的数据库 API选择一个现代替代品。

更重要的是,您很容易受到SQL 注入攻击,现代 API 可以让您更轻松地保护自己免受攻击。

内在事件属性有问题

它们有许多陷阱,自 90 年代以来就没有被认为是最佳实践。我们addEventListener现在有了。

于 2021-05-15T12:18:32.210 回答