Автор Тема: Как остановить спам регистрацию?  (Прочитано 1685 раз)

06 Май 2019, 12:41:31
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
Как остановить спам регистрацию, уже где то 2-3 недели каждый день 15-20 регистраций в день, капча не помогает
06 Май 2019, 12:56:24
Ответ #1
  • Новичок
  • *
  • Сообщений: 30
  • Репутация: +3/-0
  • Программист для PrestaShop
    • Просмотр профиля
    • Мои модули для PrestaShop
Уже вышли релизы для 1.6 и 1.7 с исправлением: https://github.com/PrestaShop/PrestaShop/issues/13524
Осталось просто обновить систему через стандартный модуль апгрейда.
06 Май 2019, 13:32:47
Ответ #2
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
Уже вышли релизы для 1.6 и 1.7 с исправлением: https://github.com/PrestaShop/PrestaShop/issues/13524
Осталось просто обновить систему через стандартный модуль апгрейда.
А нельзя отдельно какие то файлы, если все обновлю слетит много чего
06 Май 2019, 14:41:00
Ответ #3
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
в общем порылся по ссылке, нашел файлы validate.php и customer.php заменил регистрация вообще лягла
06 Май 2019, 15:48:36
Ответ #4
  • Новичок
  • *
  • Сообщений: 30
  • Репутация: +3/-0
  • Программист для PrestaShop
    • Просмотр профиля
    • Мои модули для PrestaShop
Вот все изменения релиза 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 на странице регистрации, чтобы сбросить уже кэш браузера! И только затем проверять.
При изменении кода лучше всегда отключать кэширование и включать режим отладки!
06 Май 2019, 15:48:40
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Показ ошибок в prestashop включите. Может что-то не так изменили или знак какой-то поставить забыли.
06 Май 2019, 16:08:07
Ответ #6
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
07 Май 2019, 10:44:32
Ответ #7
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
Показ ошибок в prestashop включите. Может что-то не так изменили или знак какой-то поставить забыли.
все так сделал вроде, просто скопировал
07 Май 2019, 10:53:12
Ответ #8
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
Изменить нужно только метод isName в classes/Validate.php: https://github.com/PrestaShop/PrestaShop/pull/13567/files
заменил как здесь, снова ошибка
07 Май 2019, 11:41:17
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
У вас prestashop 1.5?
Ссылки на prestashop 1.6-1.7
07 Май 2019, 11:51:16
Ответ #10
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
У вас prestashop 1.5?
Ссылки на prestashop 1.6-1.7
у меня 1.6
07 Май 2019, 13:09:04
Ответ #11
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 105673
  • Репутация: +39553/-0
    • Просмотр профиля
    • Webstudio UwK
Создаете файлы:
/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
07 Май 2019, 14:35:27
Ответ #12
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
Создаете файлы:

Не пойму только как эти фалы включаются в работу?
И самое интересное, это где заменять поля в файле    authentication.tpl  ?
07 Май 2019, 14:43:50
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
07 Май 2019, 14:45:45
Ответ #14
  • Старожил
  • ****
  • Сообщений: 274
  • Репутация: +3/-0
    • Просмотр профиля
Создаете файлы:
Не пойму только как эти фалы включаются в работу?
И самое интересное, это где заменять поля в файле    authentication.tpl  ?
Зачем понимать? Заменили как написано и все, главное что работает.