2012-08-17 97 views
0

我有四种不同类型的用户登录我的网站,如adminsuperadmin,companyemployees。他们每个人都有不同的页面集,但也有一些常见的页面。现在我有四个不同的表格来管理它们,登录屏幕为adminsuperadmin。当adminsuperadmin登录时,我将在提供访问权之前逐一检查两个表。我有一个单独的登录屏幕companyemployees。这是接受的方式吗?改进登录系统

实际上,我希望将其更改为一个包含所有用户和一个角色表的用于区分角色的表。我相信一张四桌的概念真的很糟糕。我不能简单地将它放在一张桌子上,因为以前的开发人员习惯于在网站上使用的文本文件中保存用户评论和用户活动。

我是否认为四表登录系统不好?将日志存储在网站中直接使用的文本文件中是不是一个好主意?

回答

5

你有4张桌子吗?只需使用一个用户表和一个可以是'admin','superadmin','company'或'employees'的字段。那么你可以拥有无​​限种类的账户。 (我会做数字代码,如1,2,3或4代替字符串代码或ENUM类型字段)。

但是,你的单桌的想法是好的。如果您需要一个角色表,请为您的角色字段添加一个外键并将其链接到您的角色表。对于不同的用户,您可以拥有一个登录名,而不是不同的登录名,并根据该外键值检查权限。

+0

感谢您对登录系统的建议,并且您对日志有任何建议吗? – Deepak 2012-08-17 02:37:16

2

首先,你可以用一张表完成整个事情。在该表中,您应该有像用户名,密码,typefuser和其他必要信息的字段。

检索用户信息,如:

$username = $_POST['username']; //Retrieving a username from HTML login form 
$row = mysql_query(sprintf("SELECT * FROM table WHERE username ='%s'", mysql_real_escape_string($username))); //Retrieving a row from the database 
$res = mysql_fetch_array($row); 
$type = $row['typeofuser']; //Retrieving whether it is administrator, super administrator, user, etc. 
if ($type == "admin") 
    header(Loction:adminpge); 

同样,你可以检查任何类型的用户,可以重定向到另一页。

+0

我已经编辑了一些部分,如果你有任何怀疑可以随意问。 – 2012-08-17 00:39:44

+2

@Anoopss Golden如果你发布了代码,你应该确保它是正确的/当代的。你正在使用不推荐的'mysql_ *'函数,并且有一个大胆的sql注入漏洞。 – jeroen 2012-08-17 00:46:28

+0

'mysql_query(SELECT * FROM table WHERE username ='$ username');'和'header(Loction:adminpge);'不正确。忘了一些引号.. – 2012-08-17 01:10:39

4

这里是我的建议,

而不是使用为您的用户四张表的,这将是更好地使用一个

您可以创建基本的user表是这样的(变化军衔什么适合你的网站/脚本):

ID username password email bla bla bla rank 

因此而不是使用四个表,你可以让你的PHP脚本检查用户是否有所需的访问级别。

这里有一个简单的功能,以保护网页从较低访问级别的用户:

function required_level($level){ 
    $user_level = mysql_return(mysql_query("SELECT $rank FROM `Accounts` WHERE `user_id` = $user_id")); 
    if($user_level<$level){ 
     header("Location:index.php"); 
    } 
} 

然后你想从低级别用户访问来保护每一页上。您可以拨打required_level(4);,该页面只允许具有此级别或以上的用户访问该页面。

实施例:

  • Bob是一个雇员,所以他具有1的用户级别,
  • Joe是一个超级管理员所以他的4

一个用户级别两个用户通常登录,并且都尝试访问admin.php

admin.php以required_level(4)开头;因此Bob会被重定向到主页(您也可以传递错误),但是Joe会打包访问此页面,因为他的排名与访问此页面所需的排名相同或更高。

所以,这里是我可以做的超长解释!我希望这可以帮助你,并给你一些想法,如何让你的用户表更好,更容易创建保护页:)

+0

感谢您的回复..您对日志有任何建议吗? – Deepak 2012-08-17 02:38:04

+0

@Deepak你想要登录什么?登录或管理员/用户在做什么? – BExDeath 2012-08-17 02:51:41

+0

如果某些用户在注释中键入,它现在保存在日志文件而不是数据库中。这种做法是否以任何方式被接受? – Deepak 2012-08-17 03:11:33