Как разрешить больше символов при проверке поля электронной почты? - PullRequest
0 голосов
/ 05 апреля 2019

У меня проблема с проверкой длины электронного письма в Laravel 5.4.В процессе миграции я создал поле электронной почты по умолчанию, и это было правильно сделано в БД как varchar (191) utf8mb4_unicode_ci.В веб-интерфейсе нет проблем с проверкой, но в бэкэнде он допускает только до 73 символов.

В Controller для методов сохранения и обновления я попытался:

$this->validate($request, [
    // ...
    'email' => 'nullable|email',
    // ....
]);
$this->validate($request, [
    // ...
    'email' => 'nullable|email|max:191',
    // ....
]);

Просмотр формы ввода:

{!! Form::label('email', 'Email:') !!}
{!! Form::email('email', null, ['class' => 'form-control' . ($errors->has('email') ? ' is-invalid' : ''), 'maxlength' => 191]) !!}

@if ($errors->has('email'))
    <span class="invalid-feedback">{{ $errors->first('email') }}</span>
@endif

Это проходит проверку (73 символа):
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatestне пройти проверку (74 символа):
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@test.com*1018)))))))* enter image description here

Что я делаю не так?

1 Ответ

0 голосов
/ 05 апреля 2019

RFC спецификации для электронной почты и то, что технически действует в течение одного.

  1. Адрес электронной почты состоит из локальной части и домена, разделенных знаком @ (RFC 2822 3.4.1).
  2. Локальная часть может состоять из буквенных и цифровых символов и следующих символов:!, #, $,%, &, ', *, +, -, /, =,?, ^, _, `, { , |,} и ~, возможно, с разделителями точек (.), внутри, но не в начале, в конце или рядом с другим разделителем точек (RFC2822 3.2.4).
  3. Локальная часть может состоять из строки в кавычках, то есть в кавычках ("), включая пробелы (RFC 2822 3.2.5).
  4. Пары в кавычках (например, @) являются допустимыми компонентами локальной части, хотя устарела форма из RFC 822 (RFC 2822 4.4).
  5. Максимальная длина локальной части составляет 64 символа (RFC 2821 4.5.3.1).
  6. Домен состоит из меток, разделенных точечными разделителями (RFC1035 2.3.1).
  7. Метки домена начинаются с буквенного символа, за которым следуют ноль или более буквенных символов, числовых символов или дефиса (-), заканчивая буквенным или цифровым символом (RFC 1035 2.3.1).
  8. Максимальная длина метки составляет 63 символа (RFC 1035 2.3.1).
  9. Максимальная длина домена составляет 255 символов (RFC 2821 4.5.3.1).
  10. Домен должен быть полностью определен и разрешен для записи адреса DNS типа A или MX (RFC 2821 3.6).

Итак, в заключение, если вы хотите использовать более длинное, вы должны добавить свое собственное правило электронной почты, которое позволит избежать некоторых из этих проверок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...