PHP - session 多用户和管理员权限

标签 php mysql session privileges

谁能帮帮我?

我在使用这里的大部分 php 东西方面还是新手。我在使用 session 创建多用户时遇到了问题。

我想做的就是这个。一个专供​​管理员使用的帐户和一个仅供普通用户使用的帐户。

管理员权限将只能访问管理员页面,而登录的普通用户将只能访问用户页面。

到目前为止,我已经创建了一个单一的用户登录凭据。仅供管理员使用。我真的很困惑如何添加非管理员才能访问仅供他们访问的页面。

谁能帮我处理这段代码?

这是首页

<?php

//Initialize Session
session_start();

error_reporting(E_ALL ^ E_NOTICE);

//$name = $_SESSION['username'];
if(isset($_SESSION['username']))
    {
        header('Location: index_admin.php');
    }
?>

这是管理页面

<?php
// Inialize session
session_start();

// Check, if username session is NOT set then this page will jump to login page
if (!isset($_SESSION['username']))
    {
        header('Location: index.php');
    }
?>

这是登录表单

<form action="login.php" method="post">

                            <input type="text" name="uname"     placeholder="USERNAME . . . "  autofocus/>
                            <br/>
                            <input type="password" name="pword"     placeholder="PASSWORD . . . " />
                            <br/>
                            <center><input type="submit" name="submit"     value="LOGIN" /><button type="reset" value="Reset" />RESET</button></center>

</form>

这是login.php

<?php
session_start();

include("config.php");

$login = mysql_query("SELECT * FROM users WHERE (username = '" .     mysql_real_escape_string($_POST['uname']) . "') and (password = '" .     mysql_real_escape_string($_POST['pword']) . "')");
// Check username and password match
if (mysql_num_rows($login) == 1)
    {
        // Set username session variable
        $_SESSION['username'] = $_POST['uname'];

        // Jump to secured page
        header('Location: index_admin.php');
    }
else 
    {

        // Jump to login page

        header('Location: index.php');

    }
    ?>

这是数据库

user_tbl


id = 1


username = admin


password = 12345

在此先感谢您的协助。

最佳答案

从您的问题看来,您将为管理用户和非管理用户使用相同的登录页面。我将针对这种情况提供答案。

在验证特定用户名和密码的过程中,您需要确定授予该用户的权限级别。您的用户表中可能有一个名为“特权”的列。

usr_tbl 需要看起来像这样:

 id    username     password    privilege
  1      admin      W$^%^$%^%^%  admin
  2      reggel     DJDT&646364  user
  3      ollie      DTHDHFGEERT  user

登录后,您会读取 usr_table 并将该用户的值从列中拉出并将其存储为 session 变量,如下所示:

 $_SESSION['privilege'] = $privilege; /* from user table */

然后你可以按照这样的逻辑来决定你的用户应该看到什么,以及她应该能够做什么。

 if ( 'admin' == $_SESSION['privilege'] ) {
    // Jump to secured page
    header('Location: index_admin.php');
 }
 else {

    // Jump to login page
    header('Location: index.php');
}

在以后的页面 View 中,如果您的 session 逻辑正常运行,$_SESSION['privilege'] 变量应该继续可用。

附注mysql_ 安全代码的API?真的吗?

关于PHP - session 多用户和管理员权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22069398/

相关文章:

php - 从多个表中删除不起作用

php - 带 php session 的倒数计时器

php - Phar 存档输出乱码

python - 使用Python RE模块解析SQL语句

python - 使用 SQLAlchemy 生成数据库架构

php - 用户登录无法正常工作未知错误

java - 如何从 ManagedBean 获取 xhtml jsf 页面上的 session 信息?

php - mysql在一行中获取多个id

installation - Laravel composer 安装卡在 "Installing dependencies"并消耗大量资源(CPU、DISK)

php - 内存泄漏?!在 'create_function' 中使用 'array_map' 时,垃圾收集器是否正常运行?