【问题标题】:Click an icon, run an UPDATE query单击图标,运行 UPDATE 查询
【发布时间】:2019-05-07 14:25:51
【问题描述】:

当我单击网页上的图标时,我试图运行 UPDATE 查询。我只需要让图像在onclick中具有正确的调用函数即可从相应的php文件中运行mysql。

页面已经加载并显示了与 $show_id 关联的列表中的所有值,因此该变量已经从网页中拉入到 php 代码中。我只需要能够将该变量拉入下面的查询中,并在我单击与之关联的图标时让它运行。

这是我在 php 文件中的代码:

function retired()
{
if(strlen(($_POST['retired'])) > 0){

$sql = "UPDATE ttb_books SET status_id = '2' WHERE show_id='$show_id'";
$db = new database();
$db->myquery($sql, 1);
header('Location:books.php?show_id=$show_id');
die();
    }
}

这是当前的图像/表单 html:

          <form method="post" action="books.php?show_id={show_id}">
          <input type="image" src="../images/icon-Red_Light.png" width="20" name="retired" alt="Set status to Out of Print" title="Set status to Out of Print" onclick="return confirm('Set ALL status to Out of Print?')">
          <input name="shid1" type="hidden" id="shid1" value="{show_id}" />
          </form>

因此,onclick 将使用该 mysql 字符串调用该函数并相应地更新列表中的所有项目。

【问题讨论】:

  • 您对 SQL 注入持开放态度,应该立即解决
  • 内联 JS 也是一种不好的做法。对于单行来说这没问题,但对于项目的可维护性(和可读性)来说,它只会让事情变得困难 100 倍
  • 我没有看到任何 javascript 或表单。 $show_id 的值是 GET 还是 POST 变量?请添加足够的代码来复制问题
  • 这是在管理端,所以除了我之外的任何人都看不到/无法访问它,所以我不担心注射。至于 $show_id,它是附加到 html 文件的完整 php 代码的一部分:books.html 和 books.php。该变量工作正常,所以我需要做的就是在单击图像图标时将其拉入查询,并重新加载页面。没有多余的装饰,只需一个简单的函数调用即可运行查询。
  • 如果您“不担心注射”,那么您的工作就错了。请阅读 SQL 注入以及它可能有多糟糕。尽管如此,您可能希望使用 AJAX 将前端点击事件与后端连接起来。

标签: php mysql


【解决方案1】:

也许您可以在该图标上执行此操作:

首先,您需要输入您的 $show_id,从您的数据库中调用它并将其放到下面的链接中

<a href="actionsite.php?update=show_id">
    <img src="../images/icon-Red_Light.png" width="20" name="retired" alt="Set status to Out of Print" title="Set status to Out of Print"/>
</a>

这在actionsite.php

$show_id = mysqli_real_escape_string($_GET['update']);
$query = $db->query("UPDATE ttb_books SET status = 37 WHERE show_id = '$show_id'");
echo "<script>window.history.back();</script>";

希望这可以帮助你...

【讨论】:

  • 您没有清理用户提供的数据。这可能会导致 SQL 注入。
  • 人们可以添加他们自己的消毒,我只是解释它是如何工作的。
  • 有些人不了解 SQLi,他们可能只是复制粘贴您的代码。 那很危险。
  • 感谢您的指正!我刚刚添加了消毒功能。可以帮助他们:)
  • 使用mysqli_real_escape_string怎么样? :)
猜你喜欢
  • 2010-11-12
  • 2021-12-30
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
  • 2020-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多