[英]Setting user privileges in PHP and MYSQL
我想让某些用户可以访问我的一些php页面。 我将用户表中的这些用户标记为'user_privilege'属性中的'super_user'。 这么胖我有登录和会话工作。 但我不确定'super_user'页面。 基本上这是我想让只有超级用户才能访问的页面:
<?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 doc检查用户的会话是否已过期并且工作正常。 我还添加了这个:require_once('../ includes / su_permission.inc.php'); 在代码中检查用户是否是超级用户。 这是我对代码的尝试:
<?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) {
这样,如果您不小心输入=
而不是==
或===
,您将获得错误输出,而不是在执行您不希望它执行的操作时安静地运行代码。
我在我正在努力的网站上做了类似的事情。 我为不同的用户'类型'设置了三个不同的区域。
然后,我为页面组设置了3个不同的会话检查文件。 我确信这可以只使用一个文件来完成,而其他一些文件也可以。 无论如何,这里是我在我的页面上使用的代码片段,用于检查用户是否已登录,以及他们是否是查看页面的用户的“类型”:
if (isset($_SESSION['authenticated']) && $_SESSION['authenticated'] !== 'admin') {
//if (!isset($_SESSION['authenticated'])) {
header("Location: $redirect");
exit;
如果它们不对,则重定向它们。 我希望有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.