/** * Возвращает 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); }
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; } }