【问题标题】:User privileges with mysql database and phpmysql数据库和php的用户权限
【发布时间】:2012-01-29 00:26:51
【问题描述】:

我正在制作一个登录页面,我实际上已经完成了登录,但是我将如何让网页显示基于用户权限的不同内容以及如何在我的 mysql 数据库中设置权限?然后在我的 php 代码中使用它们?

【问题讨论】:

  • 你安装了 phpmyadmin 吗? mysql 工作台也将帮助您编写查询并设置您的架构。
  • 是的,我有 phpmyadmin,我会得到 mysql 工作台
  • 你从php成功mysql_connect到mysql数据库了吗?
  • 是的,我有一个完美的登录。我只需要知道如何按权限区分某些用户
  • 你有一张供用户使用的表格吗?

标签: php mysql privileges


【解决方案1】:

我通常在users 表中创建一个名为admin 的字段,或者在这种情况下可能是privilege_level,然后在您的php 中,您定义该字段的哪些值对应于哪些权限级别。

编辑(示例):

// start session on every page using $_SESSION array
session_start();
session_name("Your Site Name");
header("Cache-control: private");

// in login file:
$q = mysql_query("SELECT uid, privilege_level FROM users WHERE pw = 'escaped_and_preferrably_hashed_password' AND username = 'escaped_username' LIMIT 0,1");

// if row found:
if($q && mysql_num_rows($q) > 0){

    // get associative array
    $array = mysql_fetch_assoc($q);

    // set session vars
    $_SESSION['privilege_level'] = $array['privilege_level'];

}

然后,在您想要检查权限级别的页面上,您可以使用开关或其他控制结构/设计模式来动态加载内容,即:

switch($_SESSION['privilege_level']){
    default:
        echo 'you have no privileges';
    break;
    case "1":
        echo 'you have some privileges';
    break;
    case "2":
        echo 'you have lots of privileges';
    break;
}

【讨论】:

  • 所以一旦我连接到我的数据库并选择该表和字段 privilege_level 那么我会做什么?你能给我一个这样的代码示例吗?我对此有点陌生。谢谢:)
  • 你的例子比我的好+1
  • 抱歉这几天过去了,但权限级别默认设置为 1 和 2 吗?
【解决方案2】:

当用户登录时,他们会提供用户名/密码。数据库应存储此用户名和密码的哈希值。例如md5($password)。你首先做一个类似"SELECT privilege_level FROM table WHERE username = ".mysql_real_escape_string ($_POST["username"])." AND password=".md5($_POST["password"])的查询

然后将该 privilege_level 保存到会话中。 $_SESSION["privilege_level"] = $privilege_level

现在当他们加载下一页时,该页面应该引用会话变量中的权限级别来构建页面。

【讨论】:

    猜你喜欢
    • 2016-11-04
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多