В CMS 1с-Битрикс присутствует функционал капчи для защиты веб-форм от роботов, подключить его можно следующим образом (код работает из любого места с подключенным PROLOG (проверялось на Управление сайтом 20.0.1650. (версия модуля интернет-магазин 20.0.687))):
1) Добавляем код в шаблоне с формой.
<?php
include_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/captcha.php");
$cpt = new CCaptcha();
$captchaPass = COption::GetOptionString("main", "captcha_password", "");
if(strlen($captchaPass) <= 0) {
$captchaPass = randString(10);
COption::SetOptionString("main", "captcha_password", $captchaPass);
}
$cpt->SetCodeCrypt($captchaPass);
?>
<input name="captcha_code" value="<?=htmlspecialchars($cpt->GetCodeCrypt());?>" type="hidden">
<input id="captcha_word" name="captcha_word" type="text">
<img src="/bitrix/tools/captcha.php?captcha_code=<?=htmlspecialchars($cpt->GetCodeCrypt());?>">
Верхняя чать – PHP код подключения класса капчи и генерации ее значения.
Нижняя часть – html input, выводящий капчу и принимающий ввод ее значения от пользователя, добавляется непосредственно в веб-форму.
2) Добавляем код в обработчик формы, который будет проверять значение капчи.
<?php
if(!$APPLICATION->CaptchaCheckCode($_POST["captcha_word"], $_POST["captcha_code"])) {
// Неправильное значение
} else {
// Правильное значение
}