Замена стандартной капчи Битрикс на recaptcha (форма регистрации)

13.03.2019

Стандартная капча от Битрикса, не смогла защитить от массовой регистрации левых пользователей. Было решено заменить ее на recaptcha от Гугла.

В файлах формы для регистрации Юр и Физ лиц (bitrix/templates/.default/components/bitrix/main.register/template_reg_yur1/template.php и bitrix/templates/.default/components/bitrix/main.register/template_reg_fiz1/template.php)

Закомментировал:

 
/* CAPTCHA */
if ($arResult["USE_CAPTCHA"] == "Y")
{
	?>
		<tr>
			<td colspan="2"><b><?=GetMessage("REGISTER_CAPTCHA_TITLE")?></b></td>
		</tr>
		<tr>
			<td></td>
			<td>
				<input type="hidden" class="inner_sing_up_input input_style" name="captcha_sid" value="<?=$arResult["CAPTCHA_CODE"]?>" />
				<img src="/bitrix/tools/captcha.php?captcha_sid=<?=$arResult["CAPTCHA_CODE"]?>" width="180" height="40" alt="CAPTCHA" />
			</td>
		</tr>
		<tr>
			<td><?=GetMessage("REGISTER_CAPTCHA_PROMT")?>:<span class="starrequired">*</span></td>
			<td><input type="text" class="inner_sing_up_input input_style" name="captcha_word" maxlength="50" value="" /></td>
		</tr>
	<?
}
/* !CAPTCHA */

а вместо этого вставил:

 
		<tr>
			<td colspan="2"><b><?=GetMessage("REGISTER_CAPTCHA_TITLE")?></b></td>
		</tr>
		<tr>
			<td colspan="2">
				<script src="https://www.google.com/recaptcha/api.js" async defer></script>
                <div class="g-recaptcha" data-sitekey="PABLIC_KEY"></div>
			</td>
		</tr>

Также в компоненте проверки регистрации (/bitrix/components/bitrix/main.register/component.php) заменил код:

 
	// check captcha
	if ($arResult["USE_CAPTCHA"] == "Y")
	{
		if (!$APPLICATION->CaptchaCheckCode($_REQUEST["captcha_word"], $_REQUEST["captcha_sid"]))
			$arResult["ERRORS"][] = GetMessage("REGISTER_WRONG_CAPTCHA");
	}

на:

 
	// check captcha
	if ($arResult["USE_CAPTCHA"] == "Y")
	{
		if (!recaptchaCheck())
			$arResult["ERRORS"][] = 'Вы не прошли автоматическую защиту от спама';
	}

и в начало файла добавил функцию recaptchaCheck из статьи Добавляем recaptcha v2 на сайт, php

TODO: - переделать этот пункт, т.к. при обновлении CMS этот файл затрется.


Категории: Bitrix CMS
Пометки: капчи, капча, recaptcha
Яндекс.Метрика