PHP - 按位作为访问控制

时间:2017-02-04 16:29:34

标签: php mysql bitwise-operators

我使用bitwise作为页面的访问控制,在user表中有一个page_access列。在菜单表中有一个permid列。

菜单表(和permid)中的4页:

  • map 1
  • import 2
  • 用户4
  • 测试8

然后我用mysql来拉菜单...(getuserdets($ liuid,'page_access') - 从mysql返回登录用户page_access)

$sql = "SELECT name,page,permid FROM menu ORDER BY permid";
$res = mysqli_query($mysqli,$sql);
while($row = mysqli_fetch_row($res)) {
    $checked = '';
    if ($row[2] & getuserdets($_REQUEST['id'],'page_access')) { $checked = 'checked'; }
    $access .= $row[2]." -- ".getuserdets($_REQUEST['id'],'page_access')." $checked<br>";
    << SNIP FORM CHECKBOXES >>
}

这很有效。

然而,使用以下内容显示PHP中的等效项:

All should be checked - (wrong)
1 -- 15 checked
2 -- 15
4 -- 15
8 -- 15 

Two checked - (correct)
1 -- 3 checked
2 -- 3 checked
4 -- 3
8 -- 3

这似乎从2个不同的用户显示不正确($ access是显示此的临时变量),一个按预期工作,另一个不工作...

app

无法看到PHP代码与MySQL查询的区别,并且所有4个页面都按预期返回15个permid

0 个答案:

没有答案