我使用bitwise作为页面的访问控制,在user表中有一个page_access列。在菜单表中有一个permid列。
菜单表(和permid)中的4页:
然后我用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