gpt4 book ai didi

php - 根据从链接传递的变量执行 mysql 更新?

转载 作者:行者123 更新时间:2023-11-29 06:40:47 24 4
gpt4 key购买 nike

我已经根据选择查询的数组构建了一个链接列表。

链接到相关页面效果很好,但我为每个页面添加了一个链接选项来删除相关页面。唯一的问题是,我想知道将给定页面的页面 ID 传递到删除(停用)页面的查询的最佳方法。

我像这样构建页面链接:

  <?php foreach($result as $page): ?>
<div class="col-lg-3 col-sm-6 d-flex" style="padding-bottom: 20px;">
<div class="card text-center flex-fill">
<h2><?php echo $page["title"] ?></h2>
<p><?php echo $page["Name"]?></p>
<a target="_blank" href="showpage.php?pageid=<?php echo $page['id'] ?>">View Page</a>
<a href="">Edit Page</a>
<a href="">Delete Page</a> <!--this is where I need to pass $page['id'] and use it in the query below-->
</div>
</div>
<?php endforeach?>

删除/停用的查询:

$deletePage = "
UPDATE pages
set active = 0
where id = /*this is page ID from previous link*/
";

$performDelete = $mysqlConn->query($deletePage);

将链接的 pageID 传递到此查询中的最佳做法是什么?

最佳答案

您将目标页面作为第一页上的 URL 参数传递,因此可以通过 $_GET 在第二页上使用该目标页面,因此标准结构为:

$deletePage = "更新页面设置 active=0 where id=$_GET['pageid']";

但是,请注意上述内容容易受到攻击;对于用户来说,只需修改地址栏中的值,从而更新错误的行,这很简单。事实上,通过一些 SQL 注入(inject),用户甚至可以使用上述 PHP/SQL 完全删除整个数据库。

避免这种情况的最好方法是参数化查询(我假设是 MySQLi):

$stmt = $mysqlConn->prepare("UPDATE pages set active=0 where id=?");
$stmt->bind_param('i', $_GET['pageid']);
$stmt->execute();

请注意,您仍然需要确保查看页面的用户有权执行 UPDATE 命令,最有可能的是通过检查他们的 $_SESSION

关于php - 根据从链接传递的变量执行 mysql 更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51697964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com