我创建了一个页面,其中modorators(组2)可以拥有自己的页面来显示正在进行的内容,禁止用户等。我希望管理员(组1)也能够访问该页面。我正在使用的功能是:
function mod_protect() {
global $user_data;
if (has_access($user_data['user_id'], 1, 2) === false) {
header('Location: index.php');
exit();
}
}
当我只使用mods组号(2)时,它工作正常,但是当我尝试将两者都放在1件作品中时?
抱歉has_access代码:
function has_access($user_id, $type) {
$user_id = (int)$user_id;
$type = (int)$type;
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `user_id` = $user_id AND `type` = $type"), 0) == 1) ? true : false;
}
答案 0 :(得分:1)
我可以建议您将此作为has_access()
功能的替代方法:
function has_access($user_id, $type) {
$user_id = (int)$user_id;
if( is_array( $type ) {
$types = implode(',',$type);
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `user_id` = $user_id AND `type` IN ($types)"), 0) == 1) ? true : false;
else {
return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `user_id` = $user_id AND `type` = $type"), 0) == 1) ? true : false;
}
}
这样做可以将单个类型传递给has_access()
函数,或者将类型数组传递给同一个函数。
答案 1 :(得分:0)
根据你的代码,你可以这样做(虽然它可以使用两个查询,当一个可以轻松使用 - 这是你要做的优化):
if (has_access($user_data['user_id'], 1) === false && has_access($user_data['user_id'], 2) === false) {
header('Location: index.php');
exit();
}