基于从链接传递的变量执行mysql更新?

时间:2018-08-05 20:20:54

标签: php html mysql

我已经根据选择查询中的数组建立了链接列表。

链接到相关页面可以正常工作,但是我为每个链接都添加了一个链接选项以删除相关页面。唯一的问题是,我想知道将给定页面的页面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传递到此查询中的最佳做法是什么?

2 个答案:

答案 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>