-6ren">
gpt4 book ai didi

php - 根据数据库 php/mysql 中的用户角色显示 div

转载 作者:行者123 更新时间:2023-11-29 22:52:10 25 4
gpt4 key购买 nike

在这里搜索并尝试不同的方法但没有成功后,我想我会问。

这样的东西会很完美,但我不知道如何设置它来检查用户角色

<?php
if (roles->getUserRole(reports)) { echo "<li><a href='/page5'>Reports</a></li>"; }
?>

我想根据数据库中的用户角色显示/不显示菜单项。我将其在数据库中设置为

(管理员)角色 - 1 或( super 管理员)角色 2

enter image description here

这是login.php

    <?php
session_start(); // Starting Session

$error=''; // Variable To Store Error Message
if (isset($_POST['submit'])) {
if (empty($_POST['username']) || empty($_POST['password'])) {
$error = "Username or Password is invalid";

} else {

// Define $myusername and $mypassword
$myusername=$_POST['username'];
$mypassword=$_POST['password'];

// Establishing Connection with Server by passing server_name, user_id and password as a parameter
$connection = mysql_connect("localhost", "db_admin", "db-password");
// To protect MySQL injection for Security purpose

$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

// Selecting Database
$db = mysql_select_db("db_database", $connection);

// SQL query to fetch information of registerd users and finds user match.
$query = mysql_query("select * from members where password='$mypassword' AND username='$myusername'", $connection);
$rows = mysql_num_rows($query);
if ($rows == 1) {
$_SESSION['login_user']=$myusername; // Initializing Session
header("location: dashboard.php"); // Redirecting To Other Page

} else {

$error = "Username or Password is invalid";
}
mysql_close($connection); // Closing Connection
}
}
?>

dashboard.php 顶部的代码

<?PHP
session_start();
if (isset($_SESSION['loggedin']) && $_SESSION['loggedin'] == true) {

} else {
header ("Location: index.php");
}
?>

以及我想根据用户角色显示/隐藏的菜单项。

       <li>
<a href="employees.php" class="dropdown-toggle" data-toggle="dropdown" data-hover="dropdown">
<i class="fa fa-user"></i>
Employees
<span class="caret"></span>
</a>

<ul class="dropdown-menu">
<li><a href="employees.php"><i class="fa fa-th-list nav-icon"></i> See All</a></li>
<li><a href="add-employee.php"><i class="fa fa-plus-square-o nav-icon"></i> Add</a></li>
<li><a href="edit-employee.php"><i class="fa fa-edit nav-icon"></i> Edit</a></li>
</ul>
</li>

作为旁注(因为我知道它会被提及),我知道我的代码应该是 mysqli,当我让它全部工作时,我将把我的网站切换到它。我现在正在学习。

最佳答案

首先,您应该在 session 中存储的不仅仅是用户登录信息:如果身份验证成功,则使用类似

的内容创建一个唯一 token
    // SQL query to fetch information of registerd users and finds user match.
$query = mysql_query("select * from members where password='$mypassword' AND username='$myusername'", $connection);
$rows = mysql_num_rows($query);
if ($rows == 1) {
$_SESSION['login_user'] = $myusername; // Initializing Session
$token = md5(uniqid());
$_SESSION['token'] = $token;
$query = mysql_query("update token from members where username='$myusername' set token = '$token'", $connection);
header("location: dashboard.php"); // Redirecting To Other Page
} else {
...
}

此 token 将用于验证您网站的所有其他页面上的身份验证,如果没有它,您只能假设如果您的 session 中有登录名,则身份验证是正确的。

这当然可行,但根本不安全,如果用户想要更新他的密码,已经登录同一帐户的其他计算机将永远不会断开连接。

使用 token ,您可以稍后在更改密码时重置它。

<小时/>

在其他页面中,您可以使用 session 用户名来获取当前 token 和当前角色。

// Check for a session
if(isset($_SESSION['login_user']) && isset($_SESSION['token']))
{
// SQL query to fetch information of registerd users and finds user match.
$query = mysql_query("select * from members where username='".$_SESSION['login_user']."'", $connection);
$rows = mysql_num_rows($query);
if ($rows == 1) {
$row = mysql_fetch_array($query , MYSQL_BOTH);
if($row['token'] != $_SESSION['token'])
{
// Incorrect token, disconnect the user
unset($_SESSION['login_user']);
unset($_SESSION['token_user']);
// Make redirection and stuff
}
else
{
// User still logged
$role = $row['role'];
// You can then use that variable later in page
// If $role == 1, Admin, show menu, prevent function access, ect
}
}
}

希望对你有帮助!

关于php - 根据数据库 php/mysql 中的用户角色显示 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28858123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com