我有大约 15-20 个权限设置,它们会在用户登录时加载。每个权限设置都存储为值为 1 或 0 的 session 。
我想知道,是否有一个类似 $_SESSION['permissions']
的 session 会更好,其值为:dothis:0,dothat:1,doanother:1
等(一个大字符串),稍后我可以使用 PHP 对其进行分解和分离,或者最好将所有这些都作为单独的 session ,其值仅为 1 或 0?
最佳答案
不是要解析的字符串,而是将它们作为数组存储在 $_SESSION
中。这使得修改个人权限变得更加容易,而无需进行大量的字符串操作。
session_start();
$_SESSION['permissions'] = array();
$_SESSION['permissions']['dothis'] = TRUE;
$_SESSION['permissions']['dothat'] = FALSE;
$_SESSION['permissions']['doanother'] = TRUE;
附录
您可能已经想到了这一点,但我想我要补充一点,通过一些小功能与这些交互是最简单的。这些将节省大量输入(和输入错误),并确保所有值都以 bool 值结束。
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
}
关于php - 什么最好?许多小 session 值还是一个大 session 值? PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7655904/