首先,您应该知道您应该将用户信息存储在数据库中。然后,当有人登录并且您验证登录时,您可以将他或她的用户 ID 存储在会话中,然后要获取所有其他用户信息,例如user_type
,您将根据该 ID 查询数据库。不确定你是否正在这样做,但如果你没有这样做,你应该这样做。
就用户权限而言,您有两种选择。
面向对象的方式
这是我推荐的。它需要创建一个User
类,该类封装了从数据库中检索用户并随后检查该用户是否具有特定权限的所有逻辑。
class User {
protected static $_rights = array(
'admin'=>array(
'create_page','remove_page', etc...
)
);
public static retrieve($id) {
// Call to your database or persistent storage to retrieve user info based on id
return new static($retrieved_user_data);
}
public function has_right($right) {
return in_array($right, static::$_rights[$this->user_type]);
}
}
非 OOP 方式
这是低得多的级别,同时可能对您更好。基本上,您将为每个用户级别创建一组权限,并将其存储在与用于检查权限的函数相同的文件中。然后这个功能必须反过来包含在您计划使用它的每个页面上。
例如,假设您将函数放在一个名为 的文件functions.php
中,它看起来像这样:
$user_rights = array(
'admin'=>array('create_page','remove_page','edit_user',...),
'veteran'=>array('ban_user','edit_page'),
// Other rights here
);
function has_right($user_id, $right) {
global $user_rights;
// Retrieve information from persistent storage about the user
// which I'm assuming you will store in $user_info
return in_array($right, $user_rights[$user_info['user_type']]);
}
然后您应该将此文件包含在您要检查用户权限的任何其他文件中,然后您只需要用户 ID(登录后存储在会话中)和用户类型,您可以从数据库或其他持久存储。