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();
/** * напоминание пароля через телефон и логин. * * @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; }
<?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">
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'); }