function sendFeedbackSMSCode() { $objResponse = new xajaxResponse(); $uid = get_uid(false); $reqv = sbr_meta::getUserReqvs($uid); $phone = $reqv[$reqv['form_type']]['mob_phone']; $code = rand(1000, 9999); $_SESSION['close_sbr_smscode'] = $code; require_once $_SERVER['DOCUMENT_ROOT'] . '/classes/sms_gate_a1.php'; $sms_gate = new sms_gate_a1($phone); $sms_gate->sendSMS($sms_gate->getTextMessage(sms_gate::TYPE_CLOSE_SBR, $code)); $objResponse->script("\$('sbr_sms_code').set('value', '');"); $objResponse->script("\$('sbr_sms_code').removeClass('b-input__text_error');"); $objResponse->script("\$('sbr_send_sms_link').addClass('b-layout_hide'); \$('sbr_send_sms_link_disabled').removeClass('b-layout_hide');"); $objResponse->script("setTimeout(function() { \$('sbr_send_sms_link').removeClass('b-layout_hide'); \$('sbr_send_sms_link_disabled').addClass('b-layout_hide'); }, 60000);"); 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; }
/** * напоминание пароля через телефон и логин. * * @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'] . '/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; }