Встроенный в Опенкрат валидатор e-mail на основе регулярного выражения !preg_match('/^[^\@]+@.*.[a-z]{2,15}$/i' весьма убогий и не пропускает большое кол-во адресов: - содержащих 2 и более точки в имени пользователя типа ivanov.ivan.1975@yandex.ru - принадлежащие новым доменным зонам, таким как .zone, .market, .moscow и т.п Реально работающее регулярное выражение выглядит так: Код: /^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\.\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\.\x21\x23-\x27x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-+[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-+[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/iD Источник: http://pastebin.com/AsuRG46e Не мешало бы в модуле настройки магазина наряду с ключом шифрования сделать возможность указания собственного регулярного выражения.
Выглядит круто )) Если что, пользуйтесь тегами code я думаю просто в модификтор добавить. Но ведь менять везде придется, и в настройках, и в регистрации и еще где нибудь.
Да, в Опенкарте собственная функция validate в куче модулей. Надо их всех оптом одним модификатором по regex найти и заменить.
надо даниелю написать, чтобы выделил в отдельную библиотеку, тогда проще будет. Заменил в одном файле и все.
мы люди русские и живем по правилу: на бога надейся, а сам не плошай нужно сделать модификатор который по regex найдет в коде все валидаторы и откорректирует их и раз уж на то пошло, то родной валидатор (('/^[^\@]+@.*.[a-z]{2,15}$/i') напрочь отсекает все кириллические домены, на что Даниэлю скорее всего плевать с высоты какой нибудь башни в Нью-Йорке, или где он там обитает
ему не на все плевать и не всегда. На данный момент данной задачей озабочен, и ищет варианты решения. Ваша регулярка это не универсальное решение, а лишь уточнение стандартов по валидации емайл. Емайлы национальных доменов регулярное выражение выше не поддерживает. В общем ищем решения...
Я столкнулся с похожей проблемой в OC2.3 Создаю пользователя в админке, а email не проходит валидацию. Причём у мыла домен gmail.com, если меняю gmail.ru - то всё нормально. Заглянул в контроллер - а там нет регулярного выражения для проверки, а просто вставлена на функция FILTER_VALIDATE_EMAIL. Скорее всего и в пользовательской части такая-же ситуация Как тут быть, ума не приложу
А куда его писать-то? Если в старой версии OC валидация была очевидно и можно было поправить файл в системах, то сейчас мне получается по всему опенкарту отлавливать эту функцию, выкидывать её, и вставлять свою валидацию? Сильно хлопотно и можно пропустить что нибудь.