user_tableid, etcpermission tableid, user_id, permission_type
通过这种结构,每个用户可以具有与其帐户相关联的几种权限类型,每种权限类型 可以 访问的一组权限类型。您将无需更改表结构即可添加新的权限类型。
要使此步骤更进一步,您可以将每种类型的权限设置为二进制数。这样,您可以使用按位运算符使一组权限由一个整数表示。
例如,如果您有常数
PERMISSION_CHANGE_PERMISSIONS = bindec('001') = 1PERMISSION_MAKE_CHANGES = bindec('010') = 2PERMISSION_ACCEPT_CHANGES = bindec('100') = 4您可以使用按位运算符“ |”将这些值组合为一个整数
(PERMISSION_CHANGE_PERMISSIONS | PERMISSION_MAKE_CHANGES) = bindec('011') = 3 = $users_combined_permissions然后要检查他们是否具有特定权限,请使用按位运算符“&”
($users_combined_permissions & PERMISSION_MAKE_CHANGES) = true
如果这样做,则每组权限只需要一个数据库记录。


![根据信誉实施权限[关闭] 根据信誉实施权限[关闭]](http://www.mshxw.com/aiimages/31/432841.png)
