我已经根据选择查询中的数组建立了链接列表。
链接到相关页面可以正常工作,但是我为每个链接都添加了一个链接选项以删除相关页面。唯一的问题是,我想知道将给定页面的页面ID传递到删除(取消激活)页面的查询中的最佳方法。
我建立这样的页面链接:
format!()
要删除/停用的查询:
<?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?>
将链接的pageID传递到此查询中的最佳做法是什么?
答案 0 :(得分:3)
您要在第一页上将目标页面作为URL参数传递,因此可以通过$_GET
在第二页上使用目标页面,因此标准结构为:
$deletePage = "UPDATE pages set active=0 where id=$_GET['pageid']";
但是,请注意,以上内容容易受到攻击;对于用户而言,简单地修改其地址栏中的值,从而更新错误的行,这是微不足道的。实际上,通过少量的SQL注入,用户甚至可以使用上述PHP / SQL完全删除整个数据库。
避免这种情况的最佳方法是参数化查询(以下假设为MySQLi):
$stmt = $mysqlConn->prepare("UPDATE pages set active=0 where id=?");
$stmt->bind_param('i', $_GET['pageid']);
$stmt->execute();
请注意,您仍然需要确保查看页面的用户被授权执行UPDATE
命令,很可能是通过检查他们的$_SESSION
来实现的。
答案 1 :(得分:-1)
在链接中传递它,并使用$ _GET ['id']
在第二页中获得它<a href="deletepage.php/id?$page['id']">Delete Page</a>