php - 在 PHP 和 MYSQL 中设置用户权限

标签 php mysql session privileges

我想让某些用户可以访问我的某些 php 页面。我在我的用户表中将这些用户标记为“user_privilege”属性中的“super_user”。太胖了,我的登录和 session 都在工作。但我不确定只有“ super 用户”的页面。基本上这是我想让 super 用户可以访问的页面:

<?php
require_once('../includes/su_permission.inc.php');
require_once('../includes/session_timeout_db.inc.php');
?>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Secret page</title>
</head>

<body>
<h1>Restricted area</h1>
<p><a href="menu_db.php">Back to restricted menu</a> </p>
<?php include('../includes/logout_db.inc.php'); ?>
</body>
</html>

session_timeout_db.inc.php 文档检查用户的 session 是否已过期并且工作正常。我还添加了这个:require_once('../includes/su_permission.inc.php');在代码中检查用户是否是 super 用户。这是我对代码的尝试:

<?php
require_once 'login.php';
$conn = new mysqli ($host, $user, $password, $database) or die("Connection Failed");

$sql = 'SELECT user_role FROM users WHERE user_email = ?';

$stmt = $conn->stmt_init();
$stmt->prepare($sql);

$stmt->bind_param('s', $user_email);

$stmt->bind_result($user_role);
$stmt->execute();
$stmt->fetch();

if ($user_role='SU') {
  $_SESSION['privilege_level'] = $user_role;

// some other code needed here
  exit;
} else {
  echo 'No permission to visit this page';
}

我知道这是一次糟糕的尝试,但我不确定接下来还能做什么。有人可以建议我最好的方法吗?

谢谢

最佳答案

这是你的问题:

if ($user_role='SU') {

这里需要一个合适的比较运算符(=====)。您现在正在做的是在所有情况下都将 SU 的值分配给 $user_role

避免此类问题的一个轻微的编程建议是像这样翻转到比较顺序:

if ('SU' == $user_role) {

那样的话,如果你不小心键入了 = 而不是 =====,你将得到一个错误输出,而不是您的代码在执行您不希望它执行的操作时安静地运行。

关于php - 在 PHP 和 MYSQL 中设置用户权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14740551/

相关文章:

mysql - 如何通过nodejs导入大量数据到mysql?

php - 设置 php session (session_set_save_handler)

security - 实践中的 session 劫持

mysql - 查询 MySQL 数据库 vs 读取静态文件

mysql - ERROR 1005 MySQL Workbench 正向工程

session - 在中间件中使用 .NET Core Session

php - 具有先前获取参数的 HTML 表单 GET 方法

php 两个依赖的下拉菜单 mysql 查询获取数组

PHP 和编写干净的代码

PHP PDO session 将我重定向到登录页面