如何使用 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 注入。
我已经准备好登录系统并且 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 注入。