php - 无法登录管理面板检查是否是管理员或作家

标签 php mysql web mysqli

我希望有人能帮助我解决这个问题。我尝试使用 admin 或 writer 登录管理面板并阻止示例用户登录,但是当我使用此代码时遇到一些问题:

<?php
session_start();
include_once("../include/config.php");

if(isset($_SESSION['id'])) {
    $sql = mysqli_query($conn, "SELECT * FROM `users` WHERE `user_id` = '$_SESSION[id]' AND `role` = 'admin' OR 'writer'");
    if(mysqli_num_rows($sql) != 1) {
        header("Location: ../index.php");
    } else {
        echo '';
    }
} else {
    header("Location: ../index.php");
}

此代码让我只能使用管理员登录,而无法使用编写器登录。 当我尝试这样做(“管理员”或“作家”)时,这也让示例用户登录到管理面板,我需要帮助来阻止用户登录到此页面

谢谢。

最佳答案

我认为您缺少一个状况良好的部件。 将其添加到您的代码中:

or `role` = 'writer'

所以应该是这样的:

SELECT * FROM `users` WHERE `user_id` = '$_SESSION[id]' AND `role` = 'admin' OR `role` = 'writer'

关于php - 无法登录管理面板检查是否是管理员或作家,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50239875/

相关文章:

php - SQL连接3个表

mysql - Windows 8.1 XAMPP MySQL 服务检测到路径错误

python - 存储用户信息 Django

javascript - 如何修复React Js中类组件的 "if statements"中的 "return part"?

php - 如何根据 session 变量php从两个表中获取数据?

php - 如何正确要求 Composer 中的特定提交,以便它可用于依赖包?

php - 如何在 json 中传递变量数组并检索它

php - 通知 : Undefined index: variable

php - php中具有相同输入名称的多次插入

sql - 将两个表中的几列合并为一行,分别为前一个表中的id