コード例 #1
0
ファイル: account.server.php プロジェクト: kapai69/fl-ru-damp
/**
 * Отправить повторно код для 
 * подтверждения сохранения финансов
 * на текущий номер.
 * 
 * @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;
}
コード例 #2
0
ファイル: sbr.server.php プロジェクト: kapai69/fl-ru-damp
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;
}
コード例 #3
0
ファイル: registration.php プロジェクト: Nikitian/fl-ru-damp
 /**
  * Отправить пользователю код для подтверждения телефона
  */
 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;
 }
コード例 #4
0
         $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);
コード例 #5
0
ファイル: remind.server.php プロジェクト: kapai69/fl-ru-damp
/**
 * напоминание пароля через телефон и логин.
 *
 * @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;
}
コード例 #6
0
ファイル: popup.php プロジェクト: Nikitian/fl-ru-damp
	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 
    }
コード例 #7
0
ファイル: 0029061.php プロジェクト: kapai69/fl-ru-damp
<?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';
}
コード例 #8
0
ファイル: mobile.php プロジェクト: Nikitian/fl-ru-damp
 /**
  * Забыли пароль. Телефон.
  * 
  * @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();
 }
コード例 #9
0
ファイル: users.server.php プロジェクト: Nikitian/fl-ru-damp
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;
}