示例#1
0
require_once 'classes/functions.php';
require_once 'classes/class.browser.php';
require_once 'classes/class.thread.php';
require_once 'classes/class.operator.php';
require_once 'classes/class.visitor.php';
require_once 'classes/class.threadprocessor.php';
require_once 'classes/class.smartyclass.php';
require_once 'classes/class.visitsession.php';
define('AUTOBAN_PERIOD', 20 * 60);
// 20 minutes
require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/captcha.php';
$captcha = new captcha();
$theme = Browser::getCurrentTheme();
$thread = tryToGetExistingThread();
if (!isset($_REQUEST['captcha'])) {
    $captcha->setNumber();
}
$isBanned = MapperFactory::getMapper('Ban')->isBanned(Browser::GetExtAddr());
$shouldBeBanned = !$isBanned && empty($thread) && is_numeric(Settings::Get('max_sessions')) && Settings::Get('max_sessions') > 0 && MapperFactory::getMapper('Thread')->countOpenThreadsForIP(Browser::GetExtAddr()) + 1 > Settings::Get('max_sessions');
if ($shouldBeBanned) {
    $utime = getCurrentTime() + AUTOBAN_PERIOD;
    // BAN 24*60*60
    $hashTable = array('till' => date('Y-m-d H:i:s', $utime), 'address' => Browser::GetExtAddr(), 'comment' => Resources::Get('ban.autoban.message', Settings::Get('max_sessions')), 'created' => null);
    MapperFactory::getMapper('Ban')->save($hashTable);
    $isBanned = true;
}
$departmentkey = verify_param('departmentkey', "/^\\w+\$/");
$numberOfOnline = Operator::getInstance()->countOnlineOperators(null, $departmentkey, Resources::getCurrentLocale());
//TODO: write this form departments $departmentkey, Resources::getCurrentLocale());
if ($numberOfOnline == 0 && empty($thread)) {
    showLeaveMessagePage();
示例#2
0
/**
 * напоминание пароля через телефон и логин.
 *
 * @param $phone
 * @param $login
 * @param $rnd
 * @param $captchanum
 *
 * @return xajaxResponse
 */
function RemindByPhoneAndLogin($phone, $login, $rnd, $captchanum)
{
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sms_gate_a1.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sbr_meta.php';
    require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/users.php';
    session_start();
    $objResponse = new xajaxResponse();
    $phone = trim($phone);
    $login = trim($login);
    // проверка капчи
    $captcha = new captcha($captchanum);
    if (!$captcha->checkNumber(trim($rnd))) {
        $captcha->setNumber();
        $error = 'Вы ввели неверную комбинацию букв';
        sendPhoneRemindError($objResponse, $error, $captchanum, 'captcha');
        return $objResponse;
    }
    // проверка правильности введенного номера
    $i_phone = users::CheckSafetyPhone($phone);
    if ($phone && $i_phone['error_flag']) {
        $captcha->setNumber();
        $error = 'Вы ввели телефон в недопустимом формате';
        sendPhoneRemindError($objResponse, $error, $captchanum, 'phone');
        return $objResponse;
    }
    // проверка наличия номера в базе
    if ($phone) {
        $safetyPhones = sbr_meta::findSafetyPhones($phone);
        if (!count($safetyPhones)) {
            $error = 'Этот номер телефона не связан ни с одним аккаунтом. Попробуйте восстановить доступ через логин или email';
            $captcha->setNumber();
            sendPhoneRemindError($objResponse, $error, $captchanum, 'phone');
            return $objResponse;
        }
        foreach ($safetyPhones as $safetyPhone) {
            $checkUser = new users();
            $checkUser->GetUser($safetyPhone['login']);
            if ($checkUser->is_banned) {
                $error = 'Аккаунт с указанным номером телефона заблокирован или удален.\\nСожалеем, но восстановить пароль к нему в данный момент нельзя.';
                $captcha->setNumber();
                sendPhoneRemindError($objResponse, $error, $captchanum, 'login');
                return $objResponse;
            }
        }
        // если на один номер несколько аккаунтов и логин не указан
        if (count($safetyPhones) > 1 && !$login) {
            $captcha->setNumber();
            $error = 'Вы не указали логин. Поле обязательно для заполнения, т.к. номер телефона привязан к нескольким аккаунтам';
            sendPhoneRemindError($objResponse, $error, $captchanum, 'login');
            return $objResponse;
        }
        // если номер не уникальный и указан логин
        if (count($safetyPhones) > 1 || $login) {
            foreach ($safetyPhones as $value) {
                if ($value['login'] == $login) {
                    $safety = $value;
                    break;
                }
            }
            if (!$safety) {
                $error = 'Этот логин и номер телефона не связаны. Попробуйте восстановить доступ через логин или email';
                $captcha->setNumber();
                sendPhoneRemindError($objResponse, $error, $captchanum, 'phone login');
                return $objResponse;
            }
        }
        if (count($safetyPhones) === 1 && !$login) {
            $safety = $safetyPhones[0];
        }
    }
    // если указан логин и не указан номер
    if ($login && !$phone) {
        // проверяем существует ли пользователь с таким логином
        $user = new users();
        $user->GetUser($login);
        if (!$user->uid) {
            $error = 'Вы указали некорректный логин';
            $captcha->setNumber();
            sendPhoneRemindError($objResponse, $error, $captchanum, 'login');
            return $objResponse;
        }
        if ($user->is_banned) {
            $error = 'Аккаунт с указанным логином заблокирован или удален.\\nСожалеем, но восстановить пароль к нему в данный момент нельзя.';
            $captcha->setNumber();
            sendPhoneRemindError($objResponse, $error, $captchanum, 'login');
            return $objResponse;
        }
        $safety = sbr_meta::findSafetyPhoneByLogin($login);
        if (!$safety) {
            $error = 'Этот логин не связан ни с одним номером телефона. Попробуйте восстановить доступ через логин или email';
            $captcha->setNumber();
            sendPhoneRemindError($objResponse, $error, $captchanum, 'login');
            return $objResponse;
        }
        $phone = $safety['phone'];
    }
    $passwd = users::ResetPasswordSMS($safety['uid'], $phone);
    $sms_gate = new sms_gate_a1($phone);
    $sms_gate->sendSMS($sms_gate->getTextMessage(sms_gate::TYPE_PASS, $passwd));
    if ($sms_gate->getHTTPCode() != 200) {
        $error = 'Ошибка отправки СМС на указанный номер';
        $captcha->setNumber();
        sendPhoneRemindError($objResponse, $error, $captchanum);
        return $objResponse;
    }
    $html = '<span class="b-icon b-icon_sbr_gattent"></span>На указанный вами номер выслан новый пароль для входа в систему.';
    if (SMS_GATE_DEBUG) {
        $html .= ' <strong style="color:red">(DEBUG TEST: ' . $passwd . ')</strong>';
    }
    $objResponse->script("\n        \$('remind_button_phone').removeClass('b-button_rectangle_color_disable');\n        \$('remind_phone_msg').addClass('b-layout__txt_hide');\n        var e = new Element('div', {html: '{$html}', class: 'b-layout__txt b-layout__txt_padtop_15'});\n        \$('sms_remind').getElement('table').destroy();\n        \$('sms_remind').getElement('h3').grab(e, 'after');");
    return $objResponse;
}
示例#3
0
<?php

require_once $_SERVER['DOCUMENT_ROOT'] . "/xajax/remind.common.php";
$xajax->printJavascript('/xajax/');
$captchanum = uniqid('', true);
if ($_SESSION) {
    foreach ($_SESSION as $k => $v) {
        if (strpos("image_number", $k) === 0) {
            unset($_SESSION[$k]);
        }
    }
}
$captcha = new captcha($captchanum);
$captcha->setNumber();
$captcha2 = new captcha('2_' . $captchanum);
$captcha2->setNumber();
?>

<div class="b-layout b-layout_padtop_45">
    
    <div class="g-txt_center" id="email_remind">

        <h1 class="b-layout__title b-layout__title_lh_1 b-layout__title_fs24 b-layout__title_color_333 b-layout__title_padbot_25">
            Для восстановления доступа к аккаунту заполните форму ниже
        </h1>

        <div class="b-layout b-layout_inline-block b-layout_width_330 b-layout_width_full_iphone">
            <table class="b-layout__table b-layout__table_width_full">
                <tbody>
                    <tr class="b-layout__tr">
                        <td class="b-layout__td b-layout__td_padbot_30 b-layout__td_relative b-layout__td_width_full_ipad">
示例#4
-1
 public function qiwipurseAction()
 {
     front::og('tpl')->page = 'index';
     front::og('tpl')->script = '/scripts/bill2.js';
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/qiwipay.php';
     $qiwipay = new qiwipay($this->uid);
     require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/captcha.php';
     $captcha = new captcha();
     if ($_POST['action'] == 'create') {
         $error = $qiwipay->createBill($_POST);
         if (!$error) {
             $_SESSION['bill.GET']['success'] = $qiwipay->form['sum'];
             header("Location: /{$this->name_page}/qiwipurse/");
             exit;
         }
         $captcha->setNumber();
         front::og('tpl')->alert = $error;
         front::og('tpl')->comment = $qiwipay->form['comment'];
     } else {
         $captcha->setNumber();
     }
     front::og('tpl')->sum = $_POST['sum'];
     // $qiwipay->form['sum'];
     front::og('tpl')->phone = $qiwipay->form['phone'];
     if (isset($_SESSION['bill.GET']['success'])) {
         front::og('tpl')->success = $_SESSION['bill.GET']['success'];
         unset($_SESSION['bill.GET']['success']);
     }
     front::og('tpl')->display('bill/bill_qiwipurse.tpl');
 }