Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何管理用户权限?(Php、Mysql)_Php_Mysql - Fatal编程技术网

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

如何管理用户权限?(Php、Mysql),php,mysql,Php,Mysql,与我之前的文章一样,我正在创建一个在线店面。我这次要做的是允许管理员或发布该项目的用户能够编辑/删除该项目,这也是我需要完成的最后一部分。 这是我创建的代码,用于检查特定项目的“卖方id”是否与$\u会话[“用户id]”相同。如果是,则允许该用户(如果他/她不是管理员)编辑/删除该项目。但问题是,即使使用该代码,也只有管理员能够编辑/删除项目。有人知道为什么吗 <?php $mysqli = mysqli_connect("localhost", "php24sql", "so

与我之前的文章一样,我正在创建一个在线店面。我这次要做的是允许管理员或发布该项目的用户能够编辑/删除该项目,这也是我需要完成的最后一部分。 这是我创建的代码,用于检查特定项目的“卖方id”是否与$\u会话[“用户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。您有一个结束}而没有开始{:

2.您可以先开始会话:

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

您的代码存在问题。您正在从“lots”表中选择*,而WHERE语句中没有特定约束。运行查询时,您只选择从“lots”表返回的内容的顶行。在$seller和$SESSION['user\u 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']) { ?>

@DagurTidalwave请更改数据库凭据。这些凭据可能对您不重要,它们可能是专用开发服务器的临时凭据,但在发布之前始终删除私人信息(包括密码)是一种很好的做法。您真的应该立即更改数据库上的密码。它已在多个服务器上发布您问了几个问题。现在已经太晚了,您可能已经编辑了它,但它可以在编辑历史记录中查看。请尽快在数据库服务器上更改它!@DagurTidalwave您[已启动会话[?您需要在每个可以从会话数组加载值的页面上调用会话\u start.@t0是的,我已经完成了,但它仍然不起作用。
$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']) { ?>