我已阅读有关此主题的相互矛盾的信息,所以我希望我提出的方案,一个计划将比另一个更理想。
在我的情况下,有“用户”可以访问由“部分”组成的“组”。根据用户的配置方式,每个部分可以具有不同的权限级别。所以我可能是一个部门的“管理员”,而我的同事是“基本的”。
登录后,用户将选择要管理/查看的组。我最初的计划是查找用户/组/部分/ permisison信息并在会话中存储在一个数组中......
$_SESSION[group_id][sectioin_id]['permission'] = 7; // 1+2+4 (R+W+X)
然后,当他们访问某个页面时,我可以查看他们所在的群组,查看他们所在的部分页面,并根据他们的权限显示相应的信息。
或者,我可以构建一个数据库查找脚本来检查此信息,但它必须在多个连接表中查找并解析每个页面的结果。这对我来说似乎效率低下,但从我正在阅读的关于如何为每个页面编写会话的内容来看,可能不是这样。
感谢您的任何想法/建议。
// ----有关可能会话大小的更多信息
现在,一个组最多有5个部分,最多包含3个数据。会话的最大大小目前是:
$_SESSION[1][1]['permission'] = 7;
$_SESSION[1][1]['type'] = 'paid';
$_SESSION[1][1]['expires'] = '2011-08-01';
$_SESSION[1][2]['permission'] = 7;
$_SESSION[1][2]['type'] = 'free';
$_SESSION[1][3]['permission'] = 7;
$_SESSION[1][3]['type'] = 'paid';
$_SESSION[1][3]['expires'] = '2011-08-01';
$_SESSION[1][4]['permission'] = 7;
$_SESSION[1][4]['type'] = 'paid';
$_SESSION[1][4]['expires'] = '2011-08-01';
$_SESSION[1][5]['permission'] = 7;
$_SESSION[1][5]['type'] = 'free';
如果部分1,3,4处于付费级别且2,5处于免费版本,则会出现这种情况。 每次登录都会记录太多的会话内容吗?
答案 0 :(得分:0)
无论哪种方式都能发挥作用。注意事项:
答案 1 :(得分:0)
我称这是一个非常难看的黑客。你要做的是建立一个大对象,并在PHP解释器的多个执行中保持它。将对象潜入会话数据是聪明的,但这是“错误”的方式。
请记住,使用您的方法,对于每个新用户会话,您要存储完整的权限表集,一遍又一遍地复制相同的数据。
IMO你应该在登录时采取昂贵的查找命中(无论如何可能没有其他繁重的工作),然后在他/她的会话中保留用户的权限掩码,如$ _SESSION [“permission”] = 7 < / p>
如果您真的想要跨多个交互保存权限提供程序,请查看对象序列化;您可以将数据库中的对象存储为真实而不会滥用$ _SESSION。