2011-05-11 72 views
3

我是一个非常优秀的程序员,但在设计系统架构方面我并不擅长。我有一个非常简单的库存系统,但我想知道构建它的好方法。设计库存系统的正确方法

我有大约20件设备,用户可以[查看全部|更新|删除|添加]每个人。但是,对于不同的设备,我有不同的访问级别(这需要动态,更改谁可以查看或删除)。

例如,一件设备会有?

addPart1.php 
removePart1.php 
updatePart1.php 
index.php (view all parts) 

addPart2.php 
removePart2.php 
updatePart2.php 
index.php (view all parts) 

对于所有零件?我很困惑试图设计一个好的,可扩展的和有效的结构。

+0

如果您的业务增长并以50,000个不同部分结尾,会发生什么情况?你将有50,000个addPart.php,50,000个removePart.php等等,完全不可维护。 – 2011-05-11 21:24:40

+0

'addPart.php?id = 1' GET参数是否被破坏? – Cyclone 2011-05-11 21:40:25

回答

6

访问控制列表(ACL)是附加到对象的权限列表。 ACL指定哪些用户或系统进程被授予对对象的访问权限,以及允许对给定对象执行哪些操作。在典型的ACL中,列表中的每个条目指定主题和操作(例如,文件WXY的ACL上的条目(Alice,delete)赋予Alice访问文件WXY的权限)。

来源:维基

请看看:

http://dev.juokaz.com/php/acl-made-easy-part-1(ACL的教程)

http://sourceforge.net/projects/tackle/

+0

有趣,谢谢。 – user622469 2011-05-17 16:41:26

1

你可以分类您的产品表,所以每种设备都有其自己的“类别”或“组”。您可以通过为每个产品分配一个“group_id”(在表格上的新列上)来实现。如果您有300个产品,其中一些将在组1上,其他组将在第2组上等。

然后,在您的用户表(包含每个管理员的用户名/密码的表)上,需要添加称为“group_permissions”的附加字段。在该字段中,您必须存储每个用户可以查看的“组ID”列表。您可以存储以逗号分隔的权限。

$permissions = '1,2,5,9'; 

用户每次访问你的PHP文件中的一个,你会得到它的权限,并做了简单的检查是这样的:

SELECT * FROM products WHERE group_id IN($permissions) 

这将只返回用户有权修改或产品视图。这取决于您的界面。