我正在开发一个有多个应用程序的web应用系统,每个应用程序都有一个主键来识别它们。每个用户都有一个与应用程序相关联的安全级别,例如app #1,其安全级别为5。我希望将所有应用程序/安全信息作为令牌存储在数据库中,然后检索该信息,以便将其存储在会话中。
因此,考虑到以下应用程序:
如果用户的安全级别分别为3、5和7,则令牌将存储为:
1.3|2.5|3.7.
我的问题是,如何以可用的形式检索数据?我想把它放在数组中,使用App的数组键,比如somearray[1] = 3
、somearray[2] = 5
等等,但我不知道如何处理。
我在这方面还处于起步阶段,所以我对建议有一个非常开放的想法。提前谢谢你的帮助。
发布于 2012-03-30 20:54:55
令牌将存储为: 1.3-2.5-3.7。
为什么不将安全级别存储在数据库中呢?管理起来会容易得多。我能想象到几乎没有几张桌子是这样的:
App
--------
id
name
....
Users
--------
id
name
email
...
App_users_permissions
--------
id
app_id (references App.id)
user_id (references Users.id)
level
然后,您可以执行以下简单的查询:
SELECT level FROM App_users_permissions WHERE user_id = 1 AND app_id = 2
然后,该查询将返回给定的应用程序id和用户id的当前Preil日id。
我认为这是最简单的办法。
发布于 2012-03-30 21:37:00
您应该按照皮埃尔·奥利维尔·布尔吉的建议重新设计您的数据库。
如果您想坚持所描述的格式,可以使用preg_match_all()
$subject = '1.3|2.5|3.7.';
$pattern = '=(\d+)\.(\d+)=';
$result = preg_match_all($pattern, $subject, $subpattern, PREG_SET_ORDER);
foreach ($subpattern as $match) {
$out[$match[1]] = $match[2];
}
print_r($out);
发布于 2012-03-30 20:54:27
如果您真的希望将这些东西存储为一个字符串(您不应该这样做),您可以使用爆炸()再次将其分解。
无论如何,更好的解决方案是正确规范数据库 (一步一步的指南)。
https://stackoverflow.com/questions/9950239
复制相似问题