如何管理用户权限?(Php,Mysql)


How to manage user privileges? (Php, Mysql)

与我以前的帖子一样,我正在创建一个在线店面。我这次要做的(这是我需要完成的最后一部分)是允许管理员或发布该项目的用户能够编辑/删除该项目。这是我创建的代码,用于检查该特定商品的"卖家 ID"是否与 $_SESSION['user_id'] 相同。如果是,则允许该用户(如果他/她不是管理员)编辑/删除该项目。但问题是,即使使用该代码,也只有管理员才能编辑/删除该项目。有人知道为什么吗?

<?php
      $mysqli = mysqli_connect("localhost", "php24sql", "some password", "smithside");
      $query2 = "SELECT * FROM lots";
      $results2 = mysqli_query ($mysqli, $query2);
      $row2 = mysqli_fetch_assoc($results2); 
      $seller = $row2['seller'];
      }
      ?>
      <?php if ($accessLevel == 'Admin' || $seller == $_SESSION['user_id']) { ?>
      <a class="button edit" 
        href="index.php?content=lotdelete&cat_id=<?php echo $cat_id_in; ?>&lot_id=<?php echo $lot->getLot_id(); ?>">Delete
      </a>
      <a class="button edit" 
        href="index.php?content=lotedit&cat_id=<?php echo $cat_id_in; ?>&lot_id=<?php echo $lot->getLot_id(); ?>">Edit
      </a>
<?php } ?>

如果可以的话,请帮忙!谢谢!

1.) 您有一个没有开场{的结束}

...
  $row2 = mysqli_fetch_assoc($results2); 
  $seller = $row2['seller'];
  // } <<<<==== ????
  ?>
  ....

2.) 您可以先开始会话:

session_start();
...
  $row2 = mysqli_fetch_assoc($results2); 
  $seller = $row2['seller'];
  // } <<<<==== ????
  ?>
  ....

这是你的代码的问题。您从 'lots' 表中选择 *,在 WHERE 语句中没有特定的约束。运行查询时,您只选择从"lots"表中返回的任何内容的第一行。在 $seller 和 $_SESSION['user_id'] 之间进行比较时,$seller变量是不明确的。下面是一些可能会有所帮助的更新代码。

也。。。尽量避免在 SQL 语句中使用 *。通过选择要读取的列,将减少需要分析的数据量。另外,这是很好的做法。

$query2 = "SELECT * FROM lots WHERE <columnName> = {$_SESSION['user_id']}";
  $results2 = mysqli_query ($mysqli, $query2);
  $row2 = mysqli_fetch_assoc($results2); 
  $seller = $row2['seller'];
  }
  ?>
  <?php if ($accessLevel == 'Admin' || $seller == $_SESSION['user_id']) { ?>