Вопрос приходят левые заказы - как можно из заблокировать?

lightman555

Гуру форума
Регистрация
7 Мар 2013
Сообщения
456
Реакции
73
Некое время назад стали периодически приходить левые заказы с несуществующими телефонными номерами и емайлом.
Вопрос что это такое и для чего?
И главный вопрос как можно их остановить?

Магазин на движке 1.6
Оформление идет через One Page Checkout PrestaShop v2.6.3

емайлы вот такие:
Покупатель: John . (johnsmith009@storebotmail.joonix.net)
Покупатель: John . (johnsmith006@storebotmail.joonix.net)
Покупатель: John . (johnsmith003@storebotmail.joonix.net)
 
то есть получается это глобально для любого поля ввода?
Не совсем. Это глобальная функция - её можно вызвать из любого места.

Да, она вызывается для проверки корректности ввода значения, которое хранит строку с адресом электронной почты.

а что происходит - когда вводится запретное значение - какое то сообщение выводится или просто недает нажать на кнопку отправить или оформить заказ?

Это уже зависит от логики работы шаблона - какие действия там предусмотрены на неправильно указанную почту, те и происходят.

Шаблону сообщается, что адрес электронной почты указан неправильно.

Вы можете увидеть то, что будет, если в поле для ввода электронной почты напишите произвольную строку.
 
Не совсем. Это глобальная функция - её можно вызвать из любого места.

Да, она вызывается для проверки корректности ввода значения, которое хранит строку с адресом электронной почты.



Это уже зависит от логики работы шаблона - какие действия там предусмотрены на неправильно указанную почту, те и происходят.

Шаблону сообщается, что адрес электронной почты указан неправильно.

Вы можете увидеть то, что будет, если в поле для ввода электронной почты напишите произвольную строку.
у меня стоит One Page Checkout PrestaShop v2.6.3
для оформления заказа
 
у меня стоит One Page Checkout PrestaShop v2.6.3
для оформления заказа

К сожалению, что будет дальше не могу сказать: у меня нет такого модуля и, скорее всего, у Вас есть какие-то индивидуальные настройки для всего сайта.

Самый простой способ узнать, что будет:
1. Сделать копию файла, в который будут вноситься изменения.
2. Внести изменения.
3. Попробовать сделать заказ с указанием запрещённого домена в поле для ввода электронной почты.
 
К сожалению, что будет дальше не могу сказать: у меня нет такого модуля и, скорее всего, у Вас есть какие-то индивидуальные настройки для всего сайта.

Самый простой способ узнать, что будет:
1. Сделать копию файла, в который будут вноситься изменения.
2. Внести изменения.
3. Попробовать сделать заказ с указанием запрещённого домена в поле для ввода электронной почты.
Да Вы правы - так и сделаю на днях и отпишусь.
Но в целом - Вы самое правильное решение предложили так как капчи и прочие проверки для клиентов устраивать - это отбить желание покупать - у нас же народ потыкается - что то не выходит и отваливается - максимально нужно все упрощать

модуль сам вот так выглядит - максимально упростил
2026-06-28_23-31-15.png
 
так и сделаю на днях и отпишусь

К сожалению, на официальном сайте (Для просмотра ссылки Войди или Зарегистрируйся) нет возможности загрузить версию 1.4

Но в папке classes должен быть файл Validate.php

Что нужно для 1.4?

Все очень похоже будет

Файл для изменения classes/Validate.php
Это глобальная проверка вводимых значений.

Была такая функция
PHP:
 	/**
	* Check for e-mail validity
	*
	* @param string $email e-mail address to validate
	* @return boolean Validity is ok or not
	*/
	public static function isEmail($email)
	{
		return !empty($email) && preg_match('/^[a-z\p{L}0-9!#$%&\'*+\/=?^`{}|~_-]+[.a-z\p{L}0-9!#$%&\'*+\/=?^`{}|~_-]*@[a-z\p{L}0-9]+[._a-z\p{L}0-9-]*\.[a-z0-9]+$/ui', $email);
	}

Нужно заменить на такую
PHP:
	public static function isEmail($email)
	{
        // Проверка на пустую строку
        if (empty($email)) {
            return false;
        }

        // На всякий случай обрежем пробелы
        // И сделаем все символы маленькими
        $email = trim(mb_strtolower($email));
            [$localPart, $domain] = explode('@', $email, 2);
        // Блокируем слова в доменных именах
        $blockedDomains = [
        // вариант для любых доменов в которых есть joonix
            'joonix',
        // вариант для любых доменов в которых есть badmail
            'badmail',
        ];
        foreach ($blockedDomains as $blockedDomain) {
            if (strpos($domain, $blockedDomain) !== false) {
                return false;
            }
        }

        // оставляем проверку, которая и была (она отличается от той, что для версии 1.6, но это не принципиально)
        return preg_match('/^[a-z\p{L}0-9!#$%&\'*+\/=?^`{}|~_-]+[.a-z\p{L}0-9!#$%&\'*+\/=?^`{}|~_-]*@[a-z\p{L}0-9]+[._a-z\p{L}0-9-]*\.[a-z0-9]+$/ui', $email);
	}

Проверьте, пожалуйста, и здесь все ли работает?
 
Последнее редактирование:
Назад
Сверху