0

我是 postgreSQL 的新手,我正在使用 9.1 版我想创建一个具有不同权限的不同用户的登录系统。

我心中所想的......

有一个简单的用户,我们称他为“访客”。他只能从用户表中“选择”。当有人提供登录名和密码登录时,php 会获取登录名和密码并以“访问者”身份连接到数据库。如果找到匹配对(表中的日志/传递给定日志/传递相同),则让我们启动会话等等,例如

session_start();
        $_SESSION['authenticated']=true;
            while ($arr=pg_fetch_array($r)) {

让我们保存用户的ID

$_SESSION['c_id']=$arr['c_id'];

并让我们保存用户的“角色”。Role 是一个简单的 int,可以在 users 表中找到。它定义了每个用户的权限。如果是 1 ,用户可以更新/插入/删除表。如果是 2 个用户可以更新/插入/删除两个表,如果是 3 个用户可以更新/插入/删除两个表并添加新用户,在“级别”1 和 2(超级用户)。

这仅仅意味着每个用户都有不同的菜单,所以让我们使用一个简单的“如果”来引导他们使用不同的菜单。

$_SESSION['role']=$arr['role'];

if ($_SESSION['role']==1){header('Location:menouOne.php');} 
elseif ($_SESSION['role']==2) {header('Location:menouTwo.php');} 
elseif ($_SESSION['role']==3) {header('Location:menouThree.php');}

例如,menouOne 只有“更新/删除/插入”,menouThree 除了menouOne 之外还有“添加新用户”。

这种做法对我来说听起来不错,但我必须创建很多不同的文件。

所以,我的问题

  1. 这是一个好习惯,还是更容易/更快?

  2. 你有关于在 postgreSQL 中创建新用户的链接吗?我找到了一些,但我仍然感到困惑。

  3. 您是否有任何有关将 md5 安全性添加到 postgreSQL 的链接?

谢谢

4

1 回答 1

0

就我个人而言,我会将所有用户发送到同一页面以及switch该页面内的不同设置之间。

例如

<?
$_SESSION['role']=$arr['role'];
header("location:themenu.php");
exit;
?>

<?
//themenu.php
session_start();
switch($_SESSION['role'])
{
    case 1://html for role 1
    {
        $controls['update'] = '<div id="contr_update">update</div>';
        $controls['delete'] = '<div id="contr_delete">delete</div>';
        $controls['insert'] = '<div id="contr_insert">insert</div>';
        break;
    }
    case 2://html for role 2
    {
        $controls['update'] = '<div id="contr_update">update</div>';
        $controls['delete'] = '<div id="contr_delete">delete</div>';
        $controls['insert'] = '<div id="contr_insert">insert</div>';
        $controls['adduser'] = '<div id="contr_adduser">add new user</div>';
        break;
    }
    case 3://html for role 3
    {
        $controls['update'] = '<div id="contr_update">update</div>';
        $controls['delete'] = '<div id="contr_delete">delete</div>';
        $controls['insert'] = '<div id="contr_insert">insert</div>';
        $controls['adduser'] = '<div id="contr_adduser">add new user</div>';
        $controls['other'] = '<div id="contr_other">other functions</div>';
        break;
    }
    default:
    {
        header("location:login.php");
        exit;
    }
}
?>
<html>
<head>
...
</head>
<body>
...some html
<? echo $controls['update']; ?>
...some more html
<? echo $controls['delete']; ?>
...some more html
<? echo $controls['insert']; ?>
...some more html
<? echo $controls['adduser']; ?>
...some more html
<? echo $controls['other']; ?>
</body>
</html>

在数据库中存储密码时,您应该使用 MD5 对其进行加密,以便在用户登录时将其与提供的密码进行比较。

$password = md5($password); 将 $password 保存到数据库。

当用户登录时,您执行与上述相同的操作并比较两个加密密码是否匹配。

于 2013-02-19T19:40:09.257 回答