Задать вопрос
ИП Коняхин
Компания
  • О компании
  • Лицензии
Блог
Услуги
  • Разрабатываем
    • Корпоративные сайты
    • Интернет-магазины
    • Landing page (лендинги)
  • Техническая поддержка
    • Тариф Умеренный
    • Тариф Классика
    • Тариф Максимальный
Прайс
Продукты
  • Модули 1C-Bitrix
Контакты
Ещё
    ИП Коняхин
    Компания
    • О компании
    • Лицензии
    Блог
    Услуги
    • Разрабатываем
      • Корпоративные сайты
      • Интернет-магазины
      • Landing page (лендинги)
    • Техническая поддержка
      • Тариф Умеренный
      • Тариф Классика
      • Тариф Максимальный
    Прайс
    Продукты
    • Модули 1C-Bitrix
    Контакты
    Ещё
      ИП Коняхин
      • Компания
        • Назад
        • Компания
        • О компании
        • Лицензии
      • Блог
      • Услуги
        • Назад
        • Услуги
        • Разрабатываем
          • Назад
          • Разрабатываем
          • Корпоративные сайты
          • Интернет-магазины
          • Landing page (лендинги)
        • Техническая поддержка
          • Назад
          • Техническая поддержка
          • Тариф Умеренный
          • Тариф Классика
          • Тариф Максимальный
      • Прайс
      • Продукты
        • Назад
        • Продукты
        • Модули 1C-Bitrix
      • Контакты
      Будьте на связи
      contact@konyweb.ru
      • Вконтакте

      Авторизация в битрикс по номеру телефона и кодом по смс

      • Главная
      • Блог

      Покажу на примере стандартного компонента system.auth.authorize как реализовать авторизацию по номеру телефона


      Сразу скажу, что для отправки смс подтверждения с кодом понадобится какой либо платный сервис. В этом примере использую sms.ru. Может подойти любой дрогой, поддерживаемый штатно Битриксом

      Общие настройки в Bitrix и подключение шлюза sms

      1. Первым делом Вам необходимо подключить в Битрикс сервис смс оповещений. Сделать это можно на странице настроек модуля "Служба сообщений". В нашем случае мы настраиваем sms.ru

      После всех настроек проведите тестирование и убедитесь, что смс приходит. В личном кабинете самого сервиса не забудьте пополнить баланс и провести все настройки

      2. В настройках авторизации главного модуля поставить галочки "Регистрировать пользователей по номеру телефона:" и "Номер телефона является обязательным:"

      Доработки шаблона компонента авторизации system.auth.authorize

      1. В файле result_modifier.php пишем код:

      
      if(!empty($phoneNumber) || !empty($signedData))
      {
      	// только указываешь свой шаблон (создаешь сначала в админке)
      	$smsTemplate = 'SMS_USER_CONFIRM_NUMBER';
      	
      	$result = \CUser::SendPhoneCode($phoneNumber, $smsTemplate, SITE_ID);
      	
      	if($result->isSuccess()) {
      		$arResult['SIGNED_DATA'] = \Bitrix\Main\Controller\PhoneAuth::signData([
      			'phoneNumber' => $phoneNumber,
      			'smsTemplate' => $smsTemplate
      		]);
      		
      		$arResult["SHOW_SMS_FIELD"] = true;
      	}
      	else {
      		$arResult['ERROR_MESSAGE'] = $result->getErrorMessages();
      	}
      	
      	
      	if(!empty($signedData)) {
      		$arResult["SIGNED_DATA"] = $signedData;
      		$arResult["SHOW_SMS_FIELD"] = true;
      	}
      	
      	// verify phone code
      	$isNeedVerifySmsCode = $_SERVER["REQUEST_METHOD"] == "POST" && $_REQUEST["code_submit_button"] <> '' && !$USER->IsAuthorized() && !empty($signedData);
      	
      	if($isNeedVerifySmsCode)
      	{
      		$smsCode = $_REQUEST['SMS_CODE'];
      		
      		if(($params = \Bitrix\Main\Controller\PhoneAuth::extractData($signedData)) !== false)
      		{
      			if(($userId = CUser::VerifyPhoneCode($params['phoneNumber'], $smsCode)))
      			{
      				$USER->Authorize($userId);
      				LocalRedirect('/personal/');
      			}
      			else
      			{
      				$arResult['ERROR_MESSAGE'] = 'Неверный код из смс. Попробуйте еще'; // здесь сам ошибку придумай
      				$arResult["SHOW_SMS_FIELD"] = true;
      				$arResult["SMS_CODE"] = $smsCode;
      				$arResult["SIGNED_DATA"] = $signedData;
      			}
      		}
      	}
      }
      
      

      Шаблон , который указывается в переменной $smsTemplate создается в Bitrix (Почтовые и СМС события -> Шаблоны СМС)

      2. Код в template.php

      В самом начале подключаем библиотеку CJSCore::Init('phone_auth');

      Далее код самой формы

      
      <?if(!isset($arResult["SHOW_SMS_FIELD"]) || $arResult["SHOW_SMS_FIELD"] !== true):?>
      	<form action="" method="post">
      		<div class="form__labelt">Мы вышлем вам одноразовый код для входа в смс</div>
      		<div class="form__input">
      			<div class="form__labela">Телефон:</div>
      			<input type="tel" name="PHONE_NUMBER" class="input js-phone-mask" placeholder="+7(999)999-99-99">
      		</div>
      		<div class="form__submit">
      			<button class="btn btn--normal btn--wall">Войти</button>
      		</div>
      	</form>
      <?endif;?>
      
      

      Проверяем наличие ошибок и выводим их

      
      <?if(is_array($arResult["ERROR_MESSAGE"]) && count($arResult["ERROR_MESSAGE"]) > 0):?>
      	<div>
      		<?foreach($arResult["ERROR_MESSAGE"] as $error):?>
      			<div><?=$error?></div>
      		<?endforeach?>
      	</div>
      <?elseif($arResult["ERROR_MESSAGE"] != ''):?>
      	<div><?=$arResult["ERROR_MESSAGE"]?></div>
      <?endif?>
      
      

      Поле для ввода кода из смс

      
      <if($arResult["SHOW_SMS_FIELD"] == true):?>					
        <form method="post" action="<=$arResult["AUTH_URL"]?>" name="regform">
      	  <input type="hidden" name="SIGNED_DATA" value="<=htmlspecialcharsbx($arResult["SIGNED_DATA"])?>" />
      	  <div class="bx-authform-formgroup-container">
      		  <div class="bx-authform-label-container">*</span>Введите код из смс</div>
      		  <div class="form__input">
      			  <div class="form__labela">Код из смс:</div>
      			  <input class="input" type="text" name="SMS_CODE" maxlength="255" value="<=htmlspecialcharsbx($arResult["SMS_CODE"])?>" autocomplete="off" />
      		  </div>
      	  </div>
      	  <div class="bx-authform-formgroup-container">
      		  <input type="submit" class="btn btn-primary" name="code_submit_button" value="Отправить код" />
      	  </div>
        </form>
        <div id="bx_auth_error" style="display:none" class="alert alert-danger"></div>
        <div id="bx_auth_resend"></div>
        <script>
        new BX.PhoneAuth({
          containerId: 'bx_auth_resend',
          errorContainerId: 'bx_auth_error',
          interval: <=$arResult["PHONE_CODE_RESEND_INTERVAL"]?>,
          data:
            <=CUtil::PhpToJSObject([
               'signedData' => $arResult["SIGNED_DATA"],
            ])?>,
          onError:
            function(response)
            {
      	console.log(response);
      	var errorNode = BX('bx_auth_error');
      	errorNode.innerHTML = '';
      	for(var i = 0; i < response.errors.length; i++)
      	{
      	  errorNode.innerHTML = errorNode.innerHTML + BX.util.htmlspecialchars(response.errors[i].message) + '
      '; } errorNode.style.display = ''; } }); </script> <endif;?>

      За любой помощью в доработках по сайтам можете обращаться ко мне на почту - contact@konyweb.ru


      Назад к списку
      Это интересно
      • Новая вирусная уязвимость Модулей Esol
        Новая вирусная уязвимость Модулей Esol
      • Видео с Rutube и VK на сайт под управлением 1с-Битрикс
        Видео с Rutube и VK на сайт под управлением 1с-Битрикс
      • Новый вирус под уязвимости шаблона Аспро Битрикс
        Новый вирус под уязвимости шаблона Аспро Битрикс
      • Ошибка "Не заполнено обязательное поле Условие" в сео умного фильтра Аспро Битрикс
        Ошибка "Не заполнено обязательное поле Условие" в сео умного фильтра Аспро Битрикс
      • Создание штрих и QR кодов в Битрикс CMS
        Создание штрих и QR кодов в Битрикс CMS
      Компания
      О компании
      Лицензии
      Продукты
      Модули 1C-Bitrix
      Услуги
      Разрабатываем
      Техническая поддержка
      Наши контакты


      contact@konyweb.ru
      © 2026 Все права защищены.
      • Вконтакте