【发布时间】:2014-10-12 12:20:58
【问题描述】:
在我的用户组中,我设置了可以选中或取消选中每个控制器名称的位置,然后单击提交并将名称发送到数据库。文本/数组格式。如果尝试访问未选中的控制器,我本来可以访问的那些控制器应该重定向到'admin/error_permission'
每个用户在用户 ID 旁边还有用户组 ID。
我怎样才能从数据库中获取我的控制器的名称,然后让它们像这样重定向到我的错误页面
表名: user_group:列:user_group_id、名称、权限
存储控制器名称的列的名称是权限
和控制器名称的存储方式如下 permission a:2:{s:6:"access";a:1:{i:0;s:11:"column_left";}s:6:"modify";a:1:{i:0;s:11:"column_left";}}
我如何从数据库中获取控制器名称,而不是在数组中写入每个控制器名称。
function __construct()
{
parent::__construct();
if ( ! $this->session->userdata('logged_in'))
{
// Allow some methods names from the database permission?
$allowed = array(
);
if ( ! in_array($this->router->fetch_method(), $allowed)
{
// Not Allowed Access
redirect('admin/error_permission');
}
}
}
【问题讨论】:
-
这看起来像 PHP serialized arrays and objects。如果 Codeigniter 存储了这些,它希望有一个简单的方法来单独调用它们。通过查询准确地从 MySQL 中获取详细信息将非常困难。它确实需要由 PHP 完全检索,然后
unserialized()'d 和 Codeigniter 必须有记录的方式。 -
天啊。如果没有反序列化,您无法从权限中获取单个键或值 = 数据库无法帮助您,您必须查询和反序列化,查找名称。这很奇怪。从数据库设计的角度来看,以序列化形式保存数据效率非常低(除非它是一个喜欢 json 的 no-sql 数据库。)。数据应该存储在反映其内部结构的单独表中。这将允许简单的查询。
-
你有没有反序列化的例子可以得到我想要的东西
-
是的,我已将其添加为答案
标签: php codeigniter