reCaptcha в оформлении заказа
В последнее время участились случаи автоматического создания заказов в интернет-магазинах. Роботы научились заполнять форму реальными данными покупателей и менеджеры не могут обработать заказы.
Для защиты в cms Битрикс можно воспользоватся reCAPTCHA. Сначала нужно получить ключи на сайте https://www.google.com/recaptcha/admin
Далее перенесем компонент sale.order.ajax в свое пространство имен. В файл template.php шаблона прописать перед закрытием тега формыгде data-sitekey - "Ключ".
Примечание!!! class="g-rec aptcha" пишите слитно: class="g-recaptcha".
В component.php после строки if($_SERVER["REQUEST_METHOD"] == "POST" && ($arParams["DELIVERY_NO_SESSION"] == "N" || check_bitrix_sessid())) пропишемгде $secret - "Секретный ключ".
Для защиты в cms Битрикс можно воспользоватся reCAPTCHA. Сначала нужно получить ключи на сайте https://www.google.com/recaptcha/admin
Далее перенесем компонент sale.order.ajax в свое пространство имен. В файл template.php шаблона прописать перед закрытием тега формы
<?
$APPLICATION->AddHeadScript('https://www.google.com/recaptcha/api.js');?>
?>
Примечание!!! class="g-rec aptcha" пишите слитно: class="g-recaptcha".
В component.php после строки if($_SERVER["REQUEST_METHOD"] == "POST" && ($arParams["DELIVERY_NO_SESSION"] == "N" || check_bitrix_sessid())) пропишем
<?
$recaptcha=$_POST['g-recaptcha-response'];
if(!empty($recaptcha))
{
function getCurlData($url)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.16) Gecko/20110319 Firefox/3.6.16");
$curlData = curl_exec($curl);
curl_close($curl);
return $curlData;
}
$google_url="https://www.google.com/recaptcha/api/siteverify";
$secret='6LdHRwwTAAAAAF7ThUWbQLZjmKEPvxEAPmzWEV5L';
$ip=$_SERVER['REMOTE_ADDR'];
$url=$google_url."?secret=".$secret."&response=".$recaptcha."&remoteip=".$ip;
$res=getCurlData($url);
$res= json_decode($res, true);
//reCaptcha введена
if(!$res['success'])
{
$arResult["ERROR"][] = "Please re-enter your reCAPTCHA.";
}
}
else
{
$arResult["ERROR"][] = "Please re-enter your reCAPTCHA.";
}
?>
Комментарии (3)
Зачёт!
17 сентября, 2018 в 19:02Все решил проблему. сам косяк добавил не в том месте
20 июля, 2016 в 16:20Все так. только одно, но когда не проставил галочку в капче и нажал оформить заказ. выходит сообщение об ошибке, но пропадает сама капча.
20 июля, 2016 в 15:52