为什么这只允许一种类型而不是两种? PHP

时间:2014-04-01 19:33:46

标签: php

我创建了一个页面,其中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;
}

2 个答案:

答案 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();
}