我有大约15-20个用户登录时加载的权限设置。这些设置都存储为值为1或0的会话。
我想知道,如果$_SESSION['permissions']
之类的会话值为dothis:0,dothat:1,doanother:1
等等(一个大字符串)会更好,我可以在以后使用PHP进行分解和分离,或者最好将所有这些作为单独的会话,只有1或0的值?
答案 0 :(得分:5)
而不是要解析的字符串,将它们存储为$_SESSION
中的数组。这使得修改单个权限变得更加容易,而无需进行大量的字符串操作。
session_start();
$_SESSION['permissions'] = array();
$_SESSION['permissions']['dothis'] = TRUE;
$_SESSION['permissions']['dothat'] = FALSE;
$_SESSION['permissions']['doanother'] = TRUE;
<强>附录强>
你可能已经想到了这一点,但我想我会补充一点,通过一些小功能与这些进行交互最容易。这些将节省大量的输入(和输入错误),并确保所有值最终都为布尔值。
function grant($permission) {
$_SESSION['permissions'][$permission] = TRUE;
}
function revoke($permission) {
$_SESSION['permissions'][$permission] = FALSE;
}
// Test if the user is allowed to do $permission
// FALSE if the permission isn't set
function user_can($permission) {
return isset($_SESSION['permissions'][$permission]) ? $_SESSION['permissions'][$permission] : FALSE;
}
您可以将它们称为:
grant('dothis');
revoke('dothat');
if (user_can('doanother')) {
// congratulations you're allowed
}
答案 1 :(得分:4)
我有一个拥有所有权限的关联数组......
$_SESSION['permissions'] = array(
...
);