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

时间:2015-02-01 00:21:34

标签: 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 } ?>

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

2 个答案:

答案 0 :(得分:0)

1。)您的结束}没有开放{

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

2。)你可以先开始会议:

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

答案 1 :(得分:0)

以下是您的代码的问题。您正在从“批次”表中选择*而在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']) { ?>