CAPTCHA с возможностью обновления без перезагрузки страницы в 1C-Битрикс

Просмотров: 2853

Задача: Так как стандартная капча в 1С-Битрикс, может отобразиться не удачно (символы уходят за грань капчи или не удачно накладываются друг на друга), нужно дать пользователю возможность обновить ее, без перезагрузки страницы.

Обновляемая CAPTHCA в 1C-Битрикс

Обновление CAPTHCA с помощью js

Для реализации данной функциональности необходимо модифицировать код компонента, использующего CAPTCHA, следующим образом:

/* CAPTHCA */
if ($arResult["CAPTCHA_CODE"] <> ''):
    ?>
   <input 
        type="hidden" 
        name="captcha_code" 
        value="<?= $arResult["CAPTCHA_CODE"] ?>⁠"/>⁠
    <img 
        id="captcha_image" 
        src="/bitrix/tools/captcha.php?captcha_sid=<?= $arResult["CAPTCHA_CODE"] ?>⁠">⁠
    <small>⁠Нажмите на картинку, что бы обновить</small>⁠
    <input 
        type="text" 
        size="30" 
        name="captcha_word" 
        tabindex="<?= $tabIndex++; ?>⁠"
        placeholder="Символы с картинки" 
        autocomplete="off"/>⁠
    <script>⁠
        document.addEventListener('DOMContentLoaded', function () {
            var captchaImage = document.getElementById('captcha_image');
            if (captchaImage) {
                captchaImage.addEventListener('click', function () {
                    // Генерация случайного числа, чтобы избежать кеширования изображения
                    var randomNum = Math.random();
                    var newSrc = '/bitrix/tools/captcha.php?captcha_sid=<?= $arResult["CAPTCHA_CODE"] ?>⁠&' + randomNum;
                    captchaImage.src = newSrc;
                });
            }
        });
    </script>
<?
endif;
/* end CAPTHCA */

Этот код добавляет JavaScript, который регистрирует событие "click" на изображении CAPTCHA. В случае клика, генерируется случайное число (randomNum) для избежания кеширования изображения. Затем формируется новый URL с уникальным идентификатором CAPTCHA (newSrc). Новый URL присваивается свойству src изображения, что приводит к его обновлению.

Стоимость разработки на 1С-Битрикс:

Индивидуальная разработка магазина

от 500 000 руб. от 6-ти недель

Разработка магазина на 1С-Битрикс с нуля. Дизайн, сборка и оптимизация производительности под конкретный проект и требования. Реализация любого функционала без ограничений готовых решений.

Запуск сайта на готовом решении

от 150 000 руб. от 7-ми дней

Вариант для тех, кто не хочет тратить много средств на индивидуальный проект, и не имеет серьезных требований к сайту. Магазин, быстро запускается на базе одного из 200-та готовых решений.

Мобильное приложение

от 500 000 руб. от 1-го месяца

Разработка кроссплатформенного мобильного приложения, которое не уступает нативным решениям как в производительности, так и пользовательском опыте. Публикуется в AppStore, GooglePlay и RuStore

Сайт компании

от 350 000 руб. от 1-го месяца

Корпоративный сайт с информационными разделами, каталогом товаров или услуг. Включает формы обратной связи карточек каталога, любое количество статичных и динамичных разделов.

Инфресурс

от 400 000 руб. от 5-ти недель

Информационный ресурс любой сложности. Сайт для СМИ, городской портал или многопользовательская доска объявлений. Внутренние форумы, блоги- по необходимости.

Лечение сайтов от вирусов

от 40 000 руб. от 2-х дней

Выполню полную проверку сайта и окружения. В случае обнаружения вирусов проведу полный комплекс лечения проекта и закрытия лазеек.