什么是最好的?许多小会话值或一个大的值?PHP

Ose*_*eer 2 php session

我有大约15-20个用户登录时加载的权限设置.这些设置都存储为值为1或0的会话.

我想知道,如果有一个类似于$_SESSION['permissions']:dothis:0,dothat:1,doanother:1等的会话(一个大字符串),我可以在以后使用PHP进行爆炸和分离,或者最好将所有这些作为单独的会话进行分离会更好吗?只有1或0的值?

Mic*_*ski 5

而不是要解析的字符串,将它们存储为数组$_SESSION.这使得修改单个权限变得更加容易,而无需进行大量的字符串操作.

session_start();
$_SESSION['permissions'] = array();
$_SESSION['permissions']['dothis'] = TRUE;
$_SESSION['permissions']['dothat'] = FALSE;
$_SESSION['permissions']['doanother'] = TRUE;
Run Code Online (Sandbox Code Playgroud)

附录

您可能已经想到了这一点,但我想我会补充说,通过一些小功能与这些进行交互是最容易的.这些将节省大量的输入(和输入错误),并确保所有值最终都是布尔值.

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;
}
Run Code Online (Sandbox Code Playgroud)

您可以将它们称为:

grant('dothis');
revoke('dothat');
if (user_can('doanother')) {
   // congratulations you're allowed
}
Run Code Online (Sandbox Code Playgroud)