Можно ли установить антиспам на форму заказа товара

Модуль 'Антиспам без CAPTCHA' для 1С:Битрикс

Можно ли установить антиспам на форму заказа товара

Unread postby Dimid » 14 Mar 2015, 08:53

Для заказа товара на сайте в корзине требуется регистрация.
По сути - это тоже форма регистрации.
В последнее время идут фейковые заказы, создаваемые роботом.
Можно ли использовать модуль в этом случае?
Dimid
 
Posts: 1
Joined: 14 Mar 2015, 08:52
Has thanked: 0 time
Been thanked: 0 time

Re: Можно ли установить антиспам на форму заказа товара

Unread postby znaeff » 14 Mar 2015, 15:49

К сожалению, форму заказов наш модуль из коробки не защищает.

Но вы можете использовать API модуля для защиты:
1. Создайте функцию, аналогичную
CleantalkAntispam::OnBeforePrmediaCommentAddHandler()
2. Добавьте её в /bitrix/php_interface/init.php
3. Там же ставьте обработку события обработки результата вашёй формы.

Должно выглядеть примерно так, конечно, с вашими именами полей, модуля и событий:

в /bitrix/php_interface/init.php
Code: Select all
   AddEventHandler('form', 'onBeforeResultAdd', 'my_onBeforeResultAdd');
   CModule::IncludeModule("cleantalk.antispam");
   function my_onBeforeResultAdd($WEB_FORM_ID, $arFields, $arrVALUES)
   {
           $ct_status = COption::GetOptionString('cleantalk.antispam', 'status', '0');
     $ct_new_user = COption::GetOptionString('cleantalk.antispam', 'form_new_user', '0');
     if ($ct_status == 1 && $ct_new_user == 1) {
                   global $APPLICATION;
                   $arUser = array();
                   $arUser["type"] = "comment";
                   $arUser["sender_email"] = isset($arrVALUES['email']) ? $arrVALUES['email'] : '';
                   $arUser["sender_nickname"] = isset($arrVALUES['name']) ? $arrVALUES['name'] : '';
                   $arUser["sender_ip"] = $_SERVER['REMOTE_ADDR'];
                   $arUser["message_title"] = "";
                   $arUser["message_body"] = isset($arrVALUES['help']) ? $arrVALUES['help'] : '';
                   $arUser["example_title"] = "";
                   $arUser["example_body"] = "";
                   $arUser["example_comments"] = "";
                   $aResult =  CleantalkAntispam::CheckAllBefore($arUser,FALSE);
                   if(isset($aResult) && is_array($aResult)){
               if($aResult['errno'] == 0){
                 if($aResult['allow'] == 1){
                    //Not spammer - just return;
                   return;
                 }else{
                         $APPLICATION->ThrowException($err_str);
                   return false;
                 }
               }
             }
           }
   }
Alex Znaev,
http://cleantalk.org
server and client applications development
User avatar
znaeff
 
Posts: 314
Joined: 06 Jul 2012, 04:24
Has thanked: 1 time
Been thanked: 19 times


Return to 1С:Битрикс

Who is online

Users browsing this forum: No registered users and 1 guest