Пример #1
0
/**
 * Возвращает UID авторизованного юзера. Если юзер неавторизован и у него стоит
 * "автологин", то авторизует его. Может запоминать текущий URI страницы в сессии,
 * чтобы после залогинивания отправить юзера на эту страницу.
 * ВНИМАНИЕ! возвращает UID юзера, если находит его. Либо возвращает
 *    0 - не найден
 *  -1 - аккаунт забанен
 *  -2 - аккаунт неактивирован
 *  Отрицательные значения возвращает только для юзеров с "автологином"
 *
 * @param boolean $set_uri сохранять ли текущуй URI страницы в сессии
 * @return integer                UID юзера
 */
function get_uid($set_uri = true)
{
    if (defined('NEO')) {
        return xFront::creaker()->triggerFunction(__FUNCTION__, func_get_args());
    }
    $fid = 0;
    $fid = isset($_SESSION['uid']) ? $_SESSION['uid'] : '';
    $ip = getRemoteIP();
    if ($fid) {
        is_banned(intval($fid));
    } else {
        // случайное число, используемое в get/post запросах для защиты.
        if (!$_SESSION['rand']) {
            $_SESSION['rand'] = csrf_token();
        }
    }
    /*if ($fid) {
          if(!isset($_SESSION['user_ip']) || $_SESSION['user_ip']!=$ip) {
              $GLOBALS['session']->logout($_SESSION['login']);
              session_unset();
              $fid = 0;
          }
      }*/
    require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/users.php";
    if ($fid) {
        if (!isset($_SESSION['user_ip']) || $_SESSION['user_ip'] != $ip) {
            users::SaveLoginIPLog($fid, $ip);
            if (!users::CheckUserAllowIP($ip, $fid)) {
                // IP запрещен
                $GLOBALS['session']->logout($_SESSION['login']);
                session_unset();
                $fid = 0;
                header('Location: /denyip.php?login='******'login']);
                exit;
            }
        }
    }
    if (!$fid && (int) $_COOKIE['id'] && !headers_sent()) {
        if ($_COOKIE['pwd'] && $_COOKIE['pwd'] == users::cookieHashPasswd($_COOKIE['id'], $pwd_data)) {
            $fid = login($_COOKIE['name'], $pwd_data['pwd'], 1, false);
        } else {
            uncookie();
            // например, пароль сменили а в куки старый остался.
        }
        is_banned(intval($fid));
    } else {
        if ($set_uri) {
            $_SESSION['ref_uri'] = urlencode(isset($_SERVER['HTTP_ORIGINAL_URI']) ? $_SERVER['HTTP_ORIGINAL_URI'] : $_SERVER['REQUEST_URI']);
        }
    }
    return intval($fid);
}
Пример #2
0
            exit;
        }
    }
}
// если это редактирование черновика
if ($draft_id && $action !== 'do.Edit.post') {
    $site = 'Editdraft';
    $action = 'Edit.post';
}
// если пытаемся опубликовать из черновика
if ($draft_id && $action === 'do.Edit.post') {
    $site = 'Newtopic';
    $action = 'do.Create.post';
}
if (defined('NEO')) {
    xFront::creaker()->fillGlobals(get_defined_vars());
}
$reloc = __commShaolin($error, $comm, $top, $restrict_type, $user_mod);
$restrict_type = bitStr2Int($comm['restrict_type']);
if ($restrict_type & commune::RESTRICT_READ_MASK) {
    if ($site != 'Join' && $action != 'Join' && !($user_mod & (commune::MOD_COMM_AUTHOR | commune::MOD_COMM_ACCEPTED | commune::MOD_ADMIN | commune::MOD_MODER))) {
        $content = 'join.php';
        if (!get_uid()) {
            $css_file = array();
            include '../fbd.php';
            exit;
        }
        include '../template2.php';
        exit;
    }
}