php - 什么最好?许多小 session 值还是一个大 session 值? PHP

标签 php session

我有大约 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/

相关文章:

python - 使用 Python Requests 在请求之间设置新的 cookie

PHP session 不会在 Amazon EC2 上持续存在

ruby-on-rails - 使用rails中的 session 变量在模型中评分算法

jsp - 避免跨多个选项卡使用同一 session

php - 为什么这个php和MySQL不显示结果

php - "INSERT into"不工作

php - CodeIgniter 4,辅助函数不起作用

php - 在 domdocument 中加载后字符串的结果不同

javascript - 将 PHP 数组解析为 Javascript 的最佳方法是什么?

java - 如何让 Spring Security 将 HTTP session 存储在数据库中以在多个服务器上使用 Web 应用程序?