如何使用 mysql 启动会话并为用户设置访问级别

How to start a session and set access levels for users using mysql

我已经准备好登录系统并且 100% 正常工作,但现在我想在登录时添加访问级别,但我不知道如何操作。在我的数据库中,在我登录的 table 中,有一个我创建的名为 'permission_level' 的列,默认设置为 'default',管理员为 'master'

我该如何解决这个问题?

尝试失败:

<?php

$mysqli = new mysqli('', '', '', '');

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$query = "SELECT permission_level FROM authme WHERE = '".$user."'";
echo $user;

if ($result = $mysqli->query($query)) {

    /* fetch associative array */
    while ($row = $result->fetch_assoc()) {
        printf ("%s \n", $row["permission_level"]);
    }

    /* free result set */
    $result->close();
}


session_start();
$_SESSION['UserSession'] = $_POST['username'];

您需要在 sql 查询后将数据库 table 数据存储到会话变量中。

(1)请移步session_start();到页面的开头。

(2) 然后更改

if ($result = $mysqli->query($query)) {

    /* fetch associative array */
    while ($row = $result->fetch_assoc()) {
        printf ("%s \n", $row["permission_level"]);
    }

    /* free result set */
    $result->close();
}

if ($result = $mysqli->query($query)) {

    /* fetch associative array */
    while ($row = $result->fetch_assoc()) {

$_SESSION['permission_level'] = $_row['permission_level'];

        printf ("%s \n", $row["permission_level"]);
    }

    /* free result set */
    $result->close();
}

然后你可以使用 $_SESSION['permission_level'] 做你想做的事(记得把 session_start() 放在所有使用会话变量的 PHP 脚本的开头)

例如,如果您只希望权限级别为“master”的用户访问某个页面(例如admin.php),那么在这个admin.php中,您应该在顶部添加,脚本的以下内容:

<?php
session_start();

if ($_SESSION['permission_level']!="master")
{
echo "You are not allowed to access this page";
exit();
}

// add other codes below this line.

?>

另一方面,正如@esquw 提到的,也请使用参数化准备语句来避免 SQL 注入。