Как остановить спам регистрацию?

Автор Aleksey19881988, 06 мая 2019, 12:41:31

« назад - далее »

Aleksey19881988

Как остановить спам регистрацию, уже где то 2-3 недели каждый день 15-20 регистраций в день, капча не помогает

zapalm

Уже вышли релизы для 1.6 и 1.7 с исправлением: https://github.com/PrestaShop/PrestaShop/issues/13524
Осталось просто обновить систему через стандартный модуль апгрейда.

Aleksey19881988

Цитата: zapalm от 06 мая 2019, 12:56:24
Уже вышли релизы для 1.6 и 1.7 с исправлением: https://github.com/PrestaShop/PrestaShop/issues/13524
Осталось просто обновить систему через стандартный модуль апгрейда.
А нельзя отдельно какие то файлы, если все обновлю слетит много чего

Aleksey19881988

в общем порылся по ссылке, нашел файлы validate.php и customer.php заменил регистрация вообще лягла

zapalm

#4
Вот все изменения релиза 1.6.1.24 по данной ошибке: https://github.com/PrestaShop/PrestaShop/commit/d2d1548c70c6a0bd18669b716ea14e27d52c2e0e
А релиза 1.7.5.2 по данной ошибке: https://github.com/PrestaShop/PrestaShop/pull/13599/files
Зелёные строки - добавленный код, красные строки - удалённый код. Названия измененных файлов - указаны. Комментарии копирайтов не нужно менять - они не влияют и не дают полезной информации. Файл tests/Unit/classes/ValidateCoreTest.php не нужен и его не будет у вас (не включают в сборку).
Перед проверкой нужно удалить кэш через "Инструменты -> Производительность" в админке, чтобы сбросить кэш Smarty и JavaScript и нажать клавишу F5 на странице регистрации, чтобы сбросить уже кэш браузера! И только затем проверять.
При изменении кода лучше всегда отключать кэширование и включать режим отладки!

Adik

Показ ошибок в prestashop включите. Может что-то не так изменили или знак какой-то поставить забыли.

Aleksey19881988


Aleksey19881988

Цитата: Adik от 06 мая 2019, 15:48:40
Показ ошибок в prestashop включите. Может что-то не так изменили или знак какой-то поставить забыли.
все так сделал вроде, просто скопировал

Aleksey19881988

Цитата: zapalm от 06 мая 2019, 15:48:36
Изменить нужно только метод isName в classes/Validate.php: https://github.com/PrestaShop/PrestaShop/pull/13567/files
заменил как здесь, снова ошибка

Mr.Sen

У вас prestashop 1.5?
Ссылки на prestashop 1.6-1.7

Aleksey19881988

#10
Цитата: Mr.Sen от 07 мая 2019, 11:41:17
У вас prestashop 1.5?
Ссылки на prestashop 1.6-1.7
у меня 1.6

Виталий

Создаете файлы:
/override/classes/Customer.php
<?php

class Customer extends CustomerCore
{

   public static
$definition = array(
       
'table' => 'customer',
       
'primary' => 'id_customer',
       
'fields' => array(
           
'secure_key' =>                array('type' => self::TYPE_STRING, 'validate' => 'isMd5', 'copy_post' => false),
           
'lastname' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isCustomerName', 'required' => true, 'size' => 32),
           
'firstname' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isCustomerName', 'required' => true, 'size' => 32),
           
'email' =>                        array('type' => self::TYPE_STRING, 'validate' => 'isEmail', 'required' => true, 'size' => 128),
           
'passwd' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isPasswd', 'required' => true, 'size' => 32),
           
'last_passwd_gen' =>            array('type' => self::TYPE_STRING, 'copy_post' => false),
           
'id_gender' =>                    array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
           
'birthday' =>                    array('type' => self::TYPE_DATE, 'validate' => 'isBirthDate'),
           
'newsletter' =>                array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
           
'newsletter_date_add' =>        array('type' => self::TYPE_DATE,'copy_post' => false),
           
'ip_registration_newsletter' =>    array('type' => self::TYPE_STRING, 'copy_post' => false),
           
'optin' =>                        array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
           
'website' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isUrl'),
           
'company' =>                    array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'),
           
'siret' =>                        array('type' => self::TYPE_STRING, 'validate' => 'isSiret'),
           
'ape' =>                        array('type' => self::TYPE_STRING, 'validate' => 'isApe'),
           
'outstanding_allow_amount' =>    array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat', 'copy_post' => false),
           
'show_public_prices' =>            array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false),
           
'id_risk' =>                    array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'copy_post' => false),
           
'max_payment_days' =>            array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'copy_post' => false),
           
'active' =>                    array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false),
           
'deleted' =>                    array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false),
           
'note' =>                        array('type' => self::TYPE_HTML, 'validate' => 'isCleanHtml', 'size' => 65000, 'copy_post' => false),
           
'is_guest' =>                    array('type' => self::TYPE_BOOL, 'validate' => 'isBool', 'copy_post' => false),
           
'id_shop' =>                    array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'copy_post' => false),
           
'id_shop_group' =>                array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'copy_post' => false),
           
'id_default_group' =>            array('type' => self::TYPE_INT, 'copy_post' => false),
           
'id_lang' =>                    array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'copy_post' => false),
           
'date_add' =>                    array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false),
           
'date_upd' =>                    array('type' => self::TYPE_DATE, 'validate' => 'isDate', 'copy_post' => false),
       ),
   );
}


/override/classes/Validate.php
<?php

class Validate extends ValidateCore
{
   public static function
isCustomerName($name)
   {
       if (
preg_match('/www|http/ui',$name)) {
           return
false;
       }

       
//return preg_match('/^[^0-9!\[\]<>,;?=+()@#"°{}_$%:\/\\\*\^]*$/u', $name);
       
return preg_match(Tools::cleanNonUnicodeSupport('/^[^0-9!<>,;?=+()@#"°{}_$%:¤|]*$/u'), stripslashes($name));
   }
}


Изменяете шаблон формы регистрации
/themes/тема/authentication.tpl
<div class="required form-group">
<label for="firstname">{l s='First name'} <sup>*</sup></label>
<input type="text" class="is_required validate form-control" data-validate="isCustomerName" id="firstname" name="firstname" value="{if isset($smarty.post.firstname)}{$smarty.post.firstname}{/if}" />
</div>
<div class="required form-group">
<label for="lastname">{l s='Last name'} <sup>*</sup></label>
<input type="text" class="is_required validate form-control" data-validate="isCustomerName" id="lastname" name="lastname" value="{if isset($smarty.post.lastname)}{$smarty.post.lastname}{/if}" />
</div>
....
<div class="required form-group">
<label for="customer_firstname">{l s='First name'} <sup>*</sup></label>
<input onkeyup="$('#firstname').val(this.value);" type="text" class="is_required validate form-control" data-validate="isCustomerName" id="customer_firstname" name="customer_firstname" value="{if isset($smarty.post.customer_firstname)}{$smarty.post.customer_firstname}{/if}" />
</div>
<div class="required form-group">
<label for="customer_lastname">{l s='Last name'} <sup>*</sup></label>
<input onkeyup="$('#lastname').val(this.value);" type="text" class="is_required validate form-control" data-validate="isCustomerName" id="customer_lastname" name="customer_lastname" value="{if isset($smarty.post.customer_lastname)}{$smarty.post.customer_lastname}{/if}" />
</div>


Если нужна проверка при заполнении, меняете метод isName на isCustomerName в javascript функции проверки полей формы регистрации.

Удаляете файл /cache/class_index.php
Очищаете кеш - https://prestashop-forum.ru/index.php/topic,1286.0.html
Cоздание интернет сайтов Webstudio UwK

Aleksey19881988

#12
Цитата: Виталий от 07 мая 2019, 13:09:04
Создаете файлы:

Не пойму только как эти фалы включаются в работу?
И самое интересное, это где заменять поля в файле    authentication.tpl  ?

Adik


-SiGi-

Цитата: Aleksey19881988 от 07 мая 2019, 14:35:27
Цитата: Виталий от 07 мая 2019, 13:09:04
Создаете файлы:
Не пойму только как эти фалы включаются в работу?
И самое интересное, это где заменять поля в файле    authentication.tpl  ?
Зачем понимать? Заменили как написано и все, главное что работает.