php pdo类别级访问

时间:2014-07-17 05:25:53

标签: php pdo

我希望对用户进行类别级访问,我将从管理员端提供用户应访问哪些类别以及哪些不访问。在这里我有麻烦请帮助我,这是我的代码

在我的数据库权限表中,在那个userid和catids字段中,如果用户点击类别功能将在权限表中看到如果用户有权限则不会那么它将会出现。

public function Grants($username)
{
$q = $this->db->prepare("select * from permissions where user = ?");
$q->bindParam(1, $username);
$q->execute();
$results = $q->fetchAll();
return $results;
} 

类别页面

$check = new Access;
$data = $check->Grants($user);
foreach($data as $v)
{
if($v['catid'] == $_GET['p'])
{
foreach($nav as $list)
{
echo '<a href="subcat.php?p='. $list['id'] . '">' . '<li style="display:inline; padding:10px;">' . $list['catname'] . '</li>'  . '</a>';
}
}
else{
echo 'Access Denied'; }
}

如果我在权限表中只有一个类别它可以正常工作,如果用户有两个或更多的catids不工作。

权限表示例: 用户&gt; 1 catid&gt; 1,2,3阵列模型给出问题我如何解决请帮助,如果我只放置一个类别它正在工作。

2 个答案:

答案 0 :(得分:1)

如果您的数据存储为我认为它来自您发布的内容,它将如下所示:

------------------------
|  User   |   catid    |
------------------------
    1         1,2,3

我是对的吗?如果是这样的话。然后当你这样称呼时:

$check = new Access;
$data = $check->Grants($user);

您的$data变量将包含以下内容:

1,2,3

NOT 您认为可以使用数组。

您应该使用explode()创建该网址:

$check = new Access;
$data = explode(',', $check->Grants($user));

反过来;应该给你一个这样的数组:

Array (
    [0] => 1,
    [1] => 2,
    [2] => 3,
)

允许您根据需要进行迭代。


修改

根据您的comment,您需要访问catid数组元素。如果你有正确的php版本,你可以这么简单:

$check = new Access;
$data = explode(',', $check->Grants($user)[0]['catid']);

如果抛出错误,请尝试:

$check = new Access;
$cats = $check->Grants($user);
$data = explode(',', $cats[0]['catid']);

答案 1 :(得分:0)

我找到了简单的解决方案。

$check = new Access;
$data = $check->Grants($user);

foreach($data as $result)
{
$str = $result['catid'];
$string = explode(',' , $str);
}
if(in_array($_GET['p'], $string))
{
foreach($nav as $list)
{
echo '<a href="subcat.php?p='. $list['id'] . '">' . '<li style="display:inline; padding:10px;">' . $list['catname'] . '</li>'  . '</a>';
}

}
else { echo "You dont have permission"; }