if (!WalletTypes::isWalletActive($uid)) { $result['wallet_popup'] = true; } echo json_encode($result); exit; } if (strtolower($_POST['pro_auto_prolong']) == 'off') { $user->setPROAutoProlong('off', $uid); echo json_encode(array('success' => true)); exit; } if ($uid) { $bill = new billing($uid); $_SESSION['pro_last'] = payed::ProLast($_SESSION['login']); $_SESSION['pro_last'] = $_SESSION['pro_last']['is_freezed'] ? false : $_SESSION['pro_last']['cnt']; $_SESSION['is_was_pro'] = $_SESSION['pro_last'] ? true : payed::isWasPro($_SESSION['uid']); if ($_SESSION['pro_last']['is_freezed']) { $_SESSION['payed_to'] = $_SESSION['pro_last']['cnt']; } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/account.php'; $op_codes = new op_codes(); $opcodes = $op_codes->getCodes('80,16,65'); $user = new freelancer(); $user->GetUser($_SESSION['login']); $account = new account(); $ok = $account->GetInfo($uid, true); $u_is_pro_auto_prolong = $user->GetField($uid, $e, 'is_pro_auto_prolong', false); // Включено ли у юзера автоматическое продление PRO $is_user_was_pro = $bill->IsUserWasPro(array(billing::STATUS_RESERVE, billing::STATUS_NEW)); //payed::IsUserWasPro($uid); $dateFrozenMaxLimit = 'date_max_limit_' . date('Y_m_d', strtotime($_SESSION['pro_last'] ? $_SESSION['pro_last'] : ($is_user_was_pro ? '+30 day' : '+ 7 day')));
/** * Залогинивает юзера. Возвращает UID юзера. Выставляет куки "автологина". * ВНИМАНИЕ! возвращает UID юзера, если находит его. Либо возвращает * 0 - не найден * -1 - аккаунт забанен * -2 - аккаунт неактивирован * -3 - IP не входит в список IP разрешенных пользователем * -4 - требуется 2ой этап авторизации * * @param string $login логин юзера * @param string $pwd пароль * @param integer $autologin флаг "автологина" * @return integer UID юзера */ function login($login, $pwd, $autologin = 0, $annoy_check = true) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/annoy.php"; $annoy = new annoy(); $user = new users(); if ($annoy_check) { if (intval($_SESSION['login_wait_time']) > time()) { $redirect_checkpass = true; } else { // Проверить сколько раз воодился пароль if (isset($_SESSION['login_wait_time'])) { $annoy->Clear(getRemoteIP()); } $login_count = $annoy->Check(getRemoteIP()); if ($login_count >= $GLOBALS['max_login_tries']) { $_SESSION['login_wait_time'] = time() + $GLOBALS['login_wait_time'] * 60; $redirect_checkpass = true; } } if ($redirect_checkpass == true) { header("Location: /checkpass.php"); exit; } } //Получаем логин и проверяем счетчик $_uid = $user->getUidByLoginEmailPhone($login); if ($_uid > 0 && !$annoy->allowRepeatPass($_uid)) { header("Location: /banned.php"); exit; } //@todo: нет проверок наличия ключей $t_filter_prj = $_SESSION['f_project_filter']; $t_filter_frl = $_SESSION['f_freelancers_filter']; $t_ref_uri2 = $_SESSION['ref_uri2']; $adCatalog = $_SESSION['toppayed_catalog']; $adMain = $_SESSION['toppayed_main']; $adHead = $_SESSION['toppayed_head']; $adText = $_SESSION['toppayed_text']; $masssending = $_SESSION['masssending']; $newPrjName = $_SESSION['new_project_name']; $newPrjCost = $_SESSION['new_project_cost']; //Сохраняем значение типа 2хэпапной авторизации перед очисткой сессии $_2fa_provider = isset($_SESSION['2fa_provider']) ? $_SESSION['2fa_provider'] : null; $_2fa_redirect = isset($_SESSION['2fa_redirect']) ? $_SESSION['2fa_redirect'] : null; //Переносим хеши ссылок на уже зафиксированные местки для юзера при выходе/входе $_ga_stat_url_hash = isset($_SESSION['ga_stat_url_hash']) ? $_SESSION['ga_stat_url_hash'] : null; //Последняя посещенная страница $_ref_uri = isset($_SESSION['ref_uri']) ? $_SESSION['ref_uri'] : null; $_pda = isset($_SESSION['pda']) ? $_SESSION['pda'] : null; $_customer_wizard = isset($_SESSION['customer_wizard']) ? $_SESSION['customer_wizard'] : null; session_unset(); if ($_customer_wizard) { $_SESSION['customer_wizard'] = $_customer_wizard; } if ($_pda) { $_SESSION['pda'] = $_pda; } if ($_ref_uri) { $_SESSION['ref_uri'] = $_ref_uri; } //Воссанавливаем значение хешей ссылок if ($_ga_stat_url_hash) { $_SESSION['ga_stat_url_hash'] = $_ga_stat_url_hash; } //Востанавливаем значение 2хэпапной авторизации после очистки сессии if ($_2fa_provider !== null) { $_SESSION['2fa_provider'] = $_2fa_provider; } if ($_2fa_redirect !== null) { $_SESSION['2fa_redirect'] = $_2fa_redirect; } //Выключаем проверку 2ого этапа авторизации //если это вход из куки или еще откуда (но неявно от пользователя) //где мы уже уверены что 2этапа пройдены ранее юзером $is_2fa_off = $annoy_check === false; //Авторизация $id = $user->Auth($login, $pwd, $_SESSION, $is_2fa_off); //Считаем и блокируем по количеству неудачных авторизаций if (!$id && $_uid > 0) { $annoy->wrongRepeatPass($_uid); } //Успешная авторизация if ($id > 0) { $annoy->clearRepeatPass($id); require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/payed.php"; $pro_last = payed::ProLast($_SESSION['login']); //Покупал ли пользователь ПРО 1 мес и более или тестовый if (!is_emp()) { $_SESSION['is_was_pro'] = $pro_last ? true : payed::isWasPro($_SESSION['uid']); } $_SESSION['pro_last'] = $pro_last['is_freezed'] ? false : $pro_last['cnt']; if ($_SESSION['pro_last'] && $_SESSION['is_pro_new'] != 't') { payed::checkNewPro($id); } if ($pro_last['freeze_to']) { $_SESSION['freeze_from'] = $pro_last['freeze_from']; $_SESSION['freeze_to'] = $pro_last['freeze_to']; $_SESSION['is_freezed'] = $pro_last['is_freezed']; $_SESSION['payed_to'] = $pro_last['cnt']; } if ($_SESSION['anti_login']) { $pro_last = payed::ProLast($_SESSION['anti_login']); $_SESSION['anti_pro_last'] = $pro_last['freeze_to'] ? false : $pro_last['cnt']; } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/memBuff.php"; $memBuff = new memBuff(); $memBuff->delete("msgsCnt{$id}"); //Получение спецализаций фрилансера if (!is_emp()) { require_once ABS_PATH . "/classes/freelancer.php"; $specData = freelancer::getAllSpecAndGroup($id, is_pro()); $_SESSION['specs'] = $specData['specs']; //Список специализаций $_SESSION['groups'] = $specData['groups']; //Список групп //@todo: пока не используется //$_SESSION['specs_tree'] = $specData['specs_tree']; //Ввиде древа группа > специализации } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/drafts.php"; $iDraftsCount = drafts::getCount($id); $_SESSION['drafts_count'] = $iDraftsCount; if ($autologin == 1) { setcookie('id', $id, time() + 60 * 60 * 24 * 30, '/', $GLOBALS['domain4cookie'], COOKIE_SECURE, true); setcookie('name', $login, time() + 60 * 60 * 24 * 30, '/', $GLOBALS['domain4cookie'], COOKIE_SECURE); setcookie('pwd', users::cookieHashPasswd($id), time() + 60 * 60 * 24 * 30, '/', $GLOBALS['domain4cookie'], COOKIE_SECURE, true); } $_SESSION['f_project_filter'] = $t_filter_prj; $_SESSION['f_freelancers_filter'] = $t_filter_frl; $_SESSION['ref_uri2'] = $t_ref_uri2; $_SESSION['toppayed_catalog'] = $adCatalog; $_SESSION['toppayed_main'] = $adMain; $_SESSION['toppayed_head'] = $adHead; $_SESSION['toppayed_text'] = $adText; if ($masssending) { $_SESSION['masssending'] = $masssending; } $_SESSION['new_project_name'] = $newPrjName; $_SESSION['new_project_cost'] = $newPrjCost; if ($t_filter_prj) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/projects_filter.php"; $prj_filter = new projects_filters(); $prj_filter->SaveFromAnon(); } if ($t_filter_frl) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/freelancers_filter.php"; $frl_filter = new freelancers_filters(); $frl_filter->SaveFromAnon(); } //var_dump($_SESSION['customer_wizard']); //var_dump($_SESSION['customer_wizard_filled']); //exit; //Если заказчик пытается опубликовать проект через мастер то публикуем после авторизации if (is_emp() && isset($_SESSION['customer_wizard']['filled'])) { require_once ABS_PATH . '/guest/models/GuestActivationModel.php'; $_SESSION['ref_uri'] = GuestActivationModel::model()->published($id, $_SESSION['email']); } } // случайное число, используемое в get/post запросах для защиты. if (!$_SESSION['rand']) { $_SESSION['rand'] = csrf_token(); } return $id; }
<?php ini_set('display_errors', 1); error_reporting(E_ALL ^ E_NOTICE); ini_set('max_execution_time', 0); ini_set('memory_limit', '512M'); if (!isset($_SERVER['DOCUMENT_ROOT']) || !strlen($_SERVER['DOCUMENT_ROOT'])) { $_SERVER['DOCUMENT_ROOT'] = rtrim(realpath(pathinfo(__FILE__, PATHINFO_DIRNAME) . '/../../'), '/'); } require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/stdf.php'; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/payed.php'; /* $data = payed::ProLast('freelancer78744'); print_r($data); */ $uid = 78744; var_dump(payed::isWasPro($uid)); exit;