定制 pborisenko/spam-protection 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

pborisenko/spam-protection

最新稳定版本:0.2.3

Composer 安装命令:

composer require pborisenko/spam-protection

包简介

Tools pack from protect your web forms

README 文档

README

Свой опыт по защите веб-форм от спам атак оформляю в PHP-пакет для оперативного развёртывания решений на различных проектах и PHP фреймворках.

Установка пакета

composer require pborisenko/spam-protection

SmartCaptcha

Одним из самых простых и эффективных решений по защите веб-форм представлено технологией SmartCaptcha от Yandex. Данный пакет содержит простое решение для использования технологии в вашем проекте. Подробнее об использовании технологии в официальной документации Yandex SmartCaptcha.

Конфигурация

Bitrix Framework

Необходимо разместить в файле bitrix/.settings_extra.php следующую структуру.

'smart_captcha' => [
    'value' => [
        'sitekey' => '<ключ клиентской части>',
        'serverkey' => '<ключ серверной части>',
        'endpoint' => 'https://smartcaptcha.yandexcloud.net/validate',
        'scriptsource' => 'https://smartcaptcha.yandexcloud.net/captcha.js',
        'shieldposition' => 'bottom-right',
        'hideshield' => false,
        'debug' => false
    ],
    'readonly' => true,
]

Использование

Для начала необходимо подключить JS скрипт капчи на страницу. Используйте средства вашего фреймворка и метод пакета для получения URL адреса для загрузки JS скрипта.

Bitrix Framework

use Bitrix\Main\Page\Asset;
use Bitrix\Main\Config\Configuration;
use PBorisenko\SpamProtection\SmartCaptchaConfig;

$captchaConfig = SmartCaptchaConfig::apply(Configuration::getValue('smart_captcha'));
Asset::getInstance()->addJs($captchaConfig->getScriptSource());

Отредактируйте код веб-формы, добавив к ней вывод контейнера капчи.

use Bitrix\Main\Config\Configuration;
use PBorisenko\SpamProtection\SmartCaptcha;
use PBorisenko\SpamProtection\SmartCaptchaConfig;

SmartCaptcha::activate(
    '<идентификатор контейнера>',
    SmartCaptchaConfig::apply(Configuration::getValue('smart_captcha'))
);

Отредактируйте обработчик запроса, добавив проверку токена на валидность.

use Bitrix\Main\Config\Configuration;
use PBorisenko\SpamProtection\SmartCaptcha;
use PBorisenko\SpamProtection\SmartCaptchaConfig;

$isValidToken = SmartCaptcha::check(
    '<ваш токен>',
    SmartCaptchaConfig::apply(Configuration::getValue('smart_captcha'))
);

if ($isValidToken) {
    // код обработчика в случае валидного токена
} else {
    // код обработчика во всех остальных случаях
}

Использование невидимой капчи

При выводе контейнера в веб-форме необходимо явно указать модификатор режима INVISIBLE.

use Bitrix\Main\Config\Configuration;
use PBorisenko\SpamProtection\SmartCaptcha;
use PBorisenko\SpamProtection\SmartCaptchaConfig;

SmartCaptcha::activate(
    '<идентификатор контейнера>',
    SmartCaptchaConfig::apply(Configuration::getValue('smart_captcha')),
    SmartCaptcha::INVISIBLE
);

Обязательно измените ваш обработчик формы (событие submit), таким образом, чтобы перед отправкой запроса была выполнена проверка на наличие токена и запуск проверки пользователя, если токен отсутствует.

jQuery

const form //объект формы в DOM-дереве

$.ajax({
    type: "POST",
    url: '<адрес запроса>',
    data: '<тело запроса>',
    beforeSend: function (xhr, settings) {
        if (window.smartCaptcha && form.find('input[name="smart-token"]').val().length == 0) {
            window.smartCaptcha.execute(form.find('[data-wid]').attr('data-wid'));
            return false;
        }					
    },
    success: function (data) {/*обработчик ответа*/}
});

Поддержка jQuery плагина FancyBox

Если веб-форма открывается в всплывающем окне, используйте режимы FANCYBOX_VISIBLE или FANCYBOX_INVISIBLE для капчи с виджетом или невидимой капчи соответственно.

use PBorisenko\SpamProtection\SmartCaptcha;

SmartCaptcha::FACYBOX_VISIBLE;
SmartCaptcha::FANCYBOX_INVISIBLE;

统计信息

  • 总下载量: 2
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2025-03-04