コード例 #1
0
ファイル: index.php プロジェクト: kapai69/fl-ru-damp
     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')));
コード例 #2
0
ファイル: stdf.php プロジェクト: Nikitian/fl-ru-damp
/**
 * Залогинивает юзера. Возвращает 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;
}
コード例 #3
0
ファイル: test.php プロジェクト: kapai69/fl-ru-damp
<?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;