【发布时间】: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 将前端点击事件与后端连接起来。