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

07 Май 2019, 15:14:16
Ответ #15
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
Создаете файлы:

Не пойму только как эти фалы включаются в работу?
И самое интересное, это где заменять поля в файле    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>
Явно нет потому что получилась фигня, а если это только кусок кода то в какие строчки его вставлять?
07 Май 2019, 15:37:21
Ответ #16
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
я так понимаю отличие только в этих строчках data-validate="isCustomerName", если да то я все сделал, результат такой же как и был, код прилагаю
07 Май 2019, 15:55:10
Ответ #17
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Удалите вообще код
data-validate="isCustomerName"в authentication.tpl.
Без него ошибки будет показывать?
08 Май 2019, 09:50:03
Ответ #18
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
Удалите вообще код
data-validate="isCustomerName"в authentication.tpl.
Без него ошибки будет показывать?
не знаю что то уже пробовать боюсь, регистрации так же продолжаются на стандартном коде без переделок
08 Май 2019, 12:33:46
Ответ #19
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
не знаю что то уже пробовать боюсь, регистрации так же продолжаются на стандартном коде без переделок
Написали же что делать.
1. Создаете файлы:
/override/classes/Customer.php
/override/classes/Validate.php
2. Изменяете шаблон формы регистрации
/themes/тема/authentication.tpl
3. Если нужна проверка при заполнении, меняете метод isName на isCustomerName в javascript функции проверки полей формы регистрации.
4. Удаляете файл /cache/class_index.php
Очищаете кеш - https://prestashop-forum.ru/index.php/topic,1286.0.html
метод проверенный, сам так не раз делал, спам регистрации отсекает на 100%
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
08 Май 2019, 12:39:06
Ответ #20
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
не знаю что то уже пробовать боюсь, регистрации так же продолжаются на стандартном коде без переделок
Написали же что делать.
1. Создаете файлы:
/override/classes/Customer.php
/override/classes/Validate.php
2. Изменяете шаблон формы регистрации
/themes/тема/authentication.tpl
3. Если нужна проверка при заполнении, меняете метод isName на isCustomerName в javascript функции проверки полей формы регистрации.
4. Удаляете файл /cache/class_index.php
Очищаете кеш - https://prestashop-forum.ru/index.php/topic,1286.0.html
метод проверенный, сам так не раз делал, спам регистрации отсекает на 100%
Может быть и так, но что то не так значит, можете подробнее разьяснить по поводу строчек в файле authentication, может у меня ошибка из-за капчи гугла?
09 Май 2019, 08:49:49
Ответ #21
  • Новичок
  • *
  • Сообщений: 30
  • Репутация: +3/-0
  • Программист для PrestaShop
    • Просмотр профиля
    • Мои модули для PrestaShop
Оказывается, что есть еще валидация на клиенте ;D Ваша каптча не причем! Эти сообщения - явно стандартная клиентская валидация.
Посмотрел еще раз исправления на GitHub. Оказывается, в итоге, ребятам пришлось немало исправить. Вот все изменения релиза 1.6.1.24 по данной ошибке: https://github.com/PrestaShop/PrestaShop/commit/d2d1548c70c6a0bd18669b716ea14e27d52c2e0e (зелёные строки - добавленный код; красные строки - удалённый код). Названия измененных файлов - указаны. Комментарии копирайтов не нужно менять - они не влияют и не дают полезной информации. Теперь должно быть понятно, что менять. Файл tests/Unit/classes/ValidateCoreTest.php не нужен и его не будет у вас (не включают в сборку).
Переопределять классы (размещать их в /override/classes) не нужно, как советовали, так как это не кастомизация, а исправление бага пуля в пулю с релизом. Поэтому, если делали, нужно удалить эти новые файлы и также удалить /cache/class_index.php.
Перед проверкой нужно удалить кэш через "Инструменты -> Производительность" в админке, чтобы наверняка сбросить кэш JavaScript (вообще, при проверках, нужно отключать кэширование) и нажать клавишу F5 на странице регистрации, чтобы сбросить уже кэш браузера! И только затем проверять.
Когда все сделаете, но при проверке клиентская валидация выдаст, что "имя не верно", то давайте ссылку на сайт.
Обновил свой ответ в начале топика, чтобы новым читателям не пришлось листать до конца.
И, совет на будущее: все изменения "под себя" должны делаться, используя систему переопределений и тогда будете обновлять престу сами нажимая лишь кнопки! ;) Что это и, как проверять работу программиста? - это тема отдельного топика.

09 Май 2019, 10:12:38
Ответ #22
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
Оказывается, ...... - это тема отдельного топика.
проделал указанное по ссылке, получил ошибку при  удалении спамерных учеток
09 Май 2019, 10:16:02
Ответ #23
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
При регистрации, песня таже
09 Май 2019, 10:22:21
Ответ #24
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
Я уже устал(( Кто готов сделать за оплату, вроде все расписано и просто но нифига не получается, на всякий случай мои файлы измененные
09 Май 2019, 10:23:56
Ответ #25
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
16 Май 2019, 09:41:52
Ответ #26
  • Пользователь
  • **
  • Сообщений: 94
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
    • Экспертпарфум
Пишу для тех кому это может пригодится, решение данной проблемы слишком простое, нужно добавить точку в файл 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);
    }
}