cfinput не принимает доменные имена .education
Впервые в моем приложении зашли два пользователя с доменом верхнего уровня.education. Их адрес электронной почты выглядел так: user@domain.education. Я использую атрибут cfinput validate в форме, которую они заполняют, следующим образом:
<cfinput type="text" name="email" required="yes" message="Please enter a valid email address." validate="email">
Когда пользователи отправляют форму, они получают мое сообщение об ошибке. Форма успешно работает в течение многих лет для всех остальных введенных адресов электронной почты. Есть ли какие-нибудь уловки, чтобы заставить его занять этот домен верхнего уровня? TIA
2 ответа
Избегайте использования всех тегов пользовательского интерфейса ColdFusion. Они причинят только боль.
Каждая версия ColdFusion обновляет встроенную проверку электронной почты для обработки новых доменов верхнего уровня (TLD) того времени. На данный момент существует около 1600 активных TLD.
- Проверка Javascript никуда не денется.
- Регулярные выражения тоже не будут.
- Вам нужно будет выполнить проверку на сервере, если вы еще этого не сделали.
Лучше сначала удалить это правило проверки и отправить электронное письмо, чтобы убедиться, что учетная запись электронной почты существует, прежде чем активировать пользователя в своем приложении.
Я согласен с другими ответами об ограничении использования cfinput, но в качестве быстрого исправления вы сможете использовать атрибут cfinput PATTERN (https://helpx.adobe.com/coldfusion/cfml-reference/coldfusion-tags/tags-i/cfinput.html):
<cfinput type="text" name="email" required="yes" message="Please enter a valid email address." validate="regex" pattern="(?:[a-z0-9!##$%&'+/=?^_
{|}~-]+(?:\.[a-z0-9!##$%&'*+/=?^_
{|}~ -] +)| "(?: [\ x01- \ x08 \ x0b \ x0c \ x0e- \ x1f \ x21 \ x23- \ x5b \ x5d- \ x7f]| \ [\ x01- \ x09 \ x0b \ x0c \ x0e- \ x7f]) ")@(?:(?:a-z0-9?.)+a-z0-9?|[(?:(?:25[0-5]|2[0-4] [0-9] |[01]? [0-9] [0-9]?).){3}(?:25[0-5]|2[0-4] [0 -9] |[01]? [0-9] [0-9]? | [A-z0-9-][a-z0-9]:(?: [\ X01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])+)])">
Атрибут PATTERN можно изменить на любое регулярное выражение. Предоставляемый соответствует RFC 5322.
EDIT: изменен шаблон на RegEx на основе Java и экранирован #