/** * Отправить повторно код для * подтверждения сохранения финансов * на текущий номер. * * @return \xajaxResponse */ function resendAcceptCode() { require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sms_gate_a1.php'; $objResponse = new xajaxResponse(); $uid = get_uid(false); if ($uid > 0 && isset($_SESSION['sms_accept_phone'])) { unset($_SESSION['sms_accept']); $sms_gate = new sms_gate_a1($_SESSION['sms_accept_phone']); if (!$sms_gate->isNextSend()) { $sms_gate->sendAuthCellCode(sms_gate::TYPE_ACTIVATE); $_SESSION['sms_accept_code'] = $sms_gate->getAuthCode(); unset($_SESSION['sms_accept_try']); if (SMS_GATE_DEBUG) { $objResponse->script("\$('sms_accept_code').set('value', '{$_SESSION['sms_accept_code']}')"); } $objResponse->alert('Код выслан повторно.'); } else { $timer = $sms_gate->next_time_send - time(); $objResponse->alert("\n Следующее сообщение можно будет послать через {$timer} " . ending($timer, 'секунду', 'секунды', 'секунд')); } $objResponse->script("\$('sms_accept_error').addClass('b-layout__txt_hide'); \$('sms_accept_code').getParent().removeClass('b-combo__input_error');"); } return $objResponse; }
function sendCode() { $objResponse = new xajaxResponse(); require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sms_gate_a1.php'; $uid = get_uid(false); if (!$uid) { return $objResponse; } $reqv = sbr_meta::getUserReqvs($uid); $ureqv = $reqv[$reqv['form_type']]; $sms_gate = new sms_gate_a1($ureqv['mob_phone']); $info = $sms_gate->getInfoSend(); if (!$sms_gate->isNextSend()) { $sms_gate->sendAuthCellCode(); $_SESSION['sms_auth_code_now'] = $sms_gate->getAuthCode(); if (SMS_GATE_DEBUG) { $code_debug = $sms_gate->getAuthCode(); } } else { $timer = $sms_gate->next_time_send - time(); if ($timer > 0) { $objResponse->alert("Следующее сообщение можно будет послать через {$timer} " . ending($timer, 'секунду', 'секунды', 'секунд')); } } if (SMS_GATE_DEBUG && !$code_debug) { $code_debug = $info['data']; } $callback_js = 'a_sms_disabled_safety'; $callback_resend = 'sendCode'; $sms_title = 'Подтверждение действий'; $sms_btn = 'Отправить'; ob_start(); include $_SERVER['DOCUMENT_ROOT'] . '/sbr/tpl.auth_sms_popup.php'; $out = ob_get_clean(); $objResponse->assign('auth_popup', 'innerHTML', $out); $objResponse->script("\$('auth_popup').show(); \$('auth_popup').removeClass('b-shadow_hide'); shadow_popup();"); return $objResponse; }
/** * Отправить пользователю код для подтверждения телефона */ public function actionSendSms($echo = true, $fields_are_set = false) { if ($_SESSION['send_sms_time'] > time()) { return; } require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/captcha.php"; session_start(); $this->setFieldInfo('captchanum', __paramInit('string', null, 'captchanum')); $num = __paramInit('string', null, 'rndnum'); $_SESSION['reg_captcha_num'] = $this->captchanum; $captcha = new captcha($this->captchanum); if (!$captcha->checkNumber($num)) { unset($_SESSION['reg_captcha_num']); unset($_SESSION["regform_captcha_entered"]); echo json_encode(array("err_msg" => iconv("WINDOWS-1251", "UTF-8//IGNORE", "Вы ввели неверный код."), "target" => "captchanum")); exit; } else { $_SESSION["regform_captcha_entered"] = true; } $code = rand(1000, 9999); require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/sms_gate_a1.php"; require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/sbr_meta.php"; $phone = $fields_are_set ? $this->phone : trim(__paramInit('string', null, 'phone')); $phone = $_SESSION["reg_phone"] = preg_replace("#[\\D]#", "", $phone); $sms = new sms_gate_a1($phone); $sRole = $fields_are_set ? $this->role == 2 ? 'emp' : 'frl' : __paramInit('string', null, 'role'); if ((is_release() || $phone != 71111112222) && sbr_meta::findSafetyPhone($phone, $sRole)) { if ($echo) { echo json_encode(array("err_msg" => iconv("WINDOWS-1251", "UTF-8//IGNORE", "Пользователь с таким номером уже зарегистрирован"))); exit; } else { $this->error['phone'] = 'Пользователь с таким номером уже зарегистрирован'; $this->errno['phone'] = 3; } } $msg = "Ваш код активации на free-lance.ru \n{$code}"; $count = "5"; if (is_release() || $phone != 71111112222) { $id = $sms->sendSMS($msg, "text", null, true); //$code = 7777; // !! $message = $sms->getLimitMessage($count); } else { $code = 7777; $id = 123; } if ((int) $id > 0) { $_SESSION['send_sms_time'] = strtotime('+1 min'); $_SESSION["reg_sms_isnn"] = $sms->getISNN(); $_SESSION["reg_sms_data"] = $msg; $_SESSION["reg_sms_date_send"] = date('Y-m-d H:i:s'); $_SESSION['smsIsRequested'] = 1; $_SESSION['smsCode'] = $code; if ($echo) { echo json_encode(array("mid" => $id, "count" => $count, "message" => iconv("WINDOWS-1251", "UTF-8//IGNORE", $message), "LIMIT" => sms_gate::SMS_ON_NUMBER_PER_24_HOURS)); exit; } } else { $error_text = "Не удалось отправить сообщение. Попробуйте через несколько минут."; $target = ""; if ($sms->limitIsExceed()) { $error_text = sms_gate::LIMIT_EXCEED_LINK_TEXT; $target = "limit_exceed"; } if ($echo) { echo json_encode(array("err_msg" => iconv("WINDOWS-1251", "UTF-8//IGNORE", $error_text), "target" => $target)); exit; } else { $this->error['actionSendSms'] = $error_text; } } return $id; }
$error_file['err_attach'] = $err; } elseif (!$filesExists) { $error_file['err_attach'] = "Необходимо загрузить скан одной или нескольких страниц паспорта."; } } $required_error = sbr_meta::checkRequired($form_type, $rez_type, $reqvs[$form_type], is_emp($u->role)); $start_errors = array_merge($required_error, $error_file, $other_error); if ($err = sbr_meta::setUserReqv($uid, $rez_type, $form_type, $reqvs[$form_type], $ft_disabled, $is_agree_view, $start_errors)) { if (isset($err['mob_phone'])) { $err['phone'] = $err['mob_phone']; } if (isset($err['phone']) && $err['phone'] === true) { if (count($err) == 1) { //отправляем смс require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sms_gate_a1.php'; $sms_gate = new sms_gate_a1($reqvs[$form_type]['phone']); if (!$sms_gate->isNextSend()) { $sms_gate->sendAuthCellCode(sms_gate::TYPE_ACTIVATE); $_SESSION['sms_accept_code'] = $sms_gate->getAuthCode(); $_SESSION['sms_accept_phone'] = $reqvs[$form_type]['phone']; if (SMS_GATE_DEBUG) { $code_debug = $sms_gate->getAuthCode(); } } } unset($err['phone']); } $error['sbr'] = $err; } elseif (!$is_adm) { //Если есть сделки то отправляем обновленные данные на проверку модератору в потоки user_content::sendToModeration($uid, user_content::MODER_SBR_REQV);
/** * напоминание пароля через телефон и логин. * * @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; }
var LIMIT_EXCEED_LINK_TEXT = '<?php echo sms_gate::LIMIT_EXCEED_LINK_TEXT; ?> '; var LIMIT_SMS_TO_NUMBER = '<?php echo sms_gate::SMS_ON_NUMBER_PER_24_HOURS; ?> '; <?php $linkText = $_SESSION['send_sms_time'] > time() && !$_SESSION["unbind_phone_action"] ? "Получить код повторно" : "Получить смс с кодом"; $smsLinkEnable = sms_gate_a1::$enable_link_css; $smsLinkDisable = sms_gate_a1::$disable_link_css; $smsLinkStyle = $_SESSION['send_sms_time'] > time() ? $smsLinkDisable : $smsLinkEnable; if (strlen($ureqv['mob_phone']) > 10) { $sms = new sms_gate_a1($ureqv['mob_phone']); $sms->limitSmsOnNumberIsExceed($ureqv['mob_phone'], $recordId, $count, $message); ?> var sms_message_link_end = '<?php echo $message; ?> '; <?php if ($count < sms_gate::SMS_ON_NUMBER_PER_24_HOURS) { $linkText .= " ({$message})"; } else { $linkText = $message; $smsLinkStyle = $smsLinkDisable; ?> var smslimit = true;<?php }
<?php require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sms_gate_a1.php'; if (isset($_GET['phone'])) { $phone = (int) $_GET['phone']; $sms_gate = new sms_gate_a1($phone); echo $sms_gate->sendSMS('Тестовое сообщение'); } else { echo 'Не указан номер телефона. GET-параметр phone'; }
/** * Забыли пароль. Телефон. * * @param array $aParams массив входящих данных * @return array $aResult ответ */ protected function x____users_forgot_phone($aParams = array()) { $this->_validDevice($aParams); $sLogin = __paramValue('string', $aParams['username'], null, true); if (!empty($sLogin)) { require_once ABS_PATH . '/classes/sms_gate_a1.php'; require_once ABS_PATH . '/classes/sbr_meta.php'; require_once ABS_PATH . '/classes/users.php'; // проверяем существует ли пользователь с таким логином $oUser = new users(); $oUser->GetUser($sLogin); if ($oUser->uid) { $safety = sbr_meta::findSafetyPhoneByLogin($sLogin); if ($safety) { $passwd = users::ResetPasswordSMS($safety['uid'], $safety['phone']); $sms_gate = new sms_gate_a1($safety['phone']); $sms_gate->sendSMS($sms_gate->getTextMessage(sms_gate::TYPE_PASS, $passwd)); if ($sms_gate->getHTTPCode() != 200) { $this->error(EXTERNAL_ERR_SEND_SMS); } } else { $this->error(EXTERNAL_ERR_PHONE_NOT_FOUND); } } else { $this->error(EXTERNAL_ERR_USER_NOTFOUND); } } else { $this->error(EXTERNAL_ERR_EMPTY_USERNAME); } return array(); }
function getsms($phone) { require_once $_SERVER['DOCUMENT_ROOT'] . "/classes/sms_gate_a1.php"; if ($_SESSION['send_sms_time'] > time()) { return; } $_SESSION['send_sms_time'] = strtotime("+" . sms_gate::TIMEOUT_SEND); // таймаут до следующей отсылки СМС if (!preg_match("/^\\+[0-9]{10,15}/mi", $phone)) { $sms = new sms_gate_a1($phone); $msg = $sms->getTextMessage(sms_gate::TYPE_ACTIVATE, $sms->generateCode()); $success = $sms->sendSMS($msg); if ($success) { $message = $sms->getLimitMessage($count); } else { $message = sms_gate::LIMIT_EXCEED_LINK_TEXT; $count = sms_gate::SMS_ON_NUMBER_PER_24_HOURS; } $_SESSION['send_sms_phone'] = $phone; $_SESSION['send_sms_code'] = $sms->getAuthCode(); $result = array('success' => true, 'message' => iconv("Windows-1251", "UTF-8//IGNORE", $message), 'count' => $count); if (SMS_GATE_DEBUG) { $result['c'] = $sms->getAuthCode(); } echo json_encode($result); return; } return; }