Проверка почты с помощью PHP filter_var () или с помощью регулярного выражения - PullRequest
1 голос
/ 30 октября 2010

Сегодня я узнал, что проверить электронную почту можно двумя способами. Один способ - с помощью регулярного выражения, а другой - с помощью функции filter_var().

Если бы кто-нибудь мог сказать мне, насколько сильна проверка с filter_var, и если есть какие-либо рекомендации или предложения по поводу перехода от регулярного выражения к нему, то это было бы просто замечательно.

Ответы [ 2 ]

2 голосов
/ 30 октября 2010

Если вы используете filter_var, он будет проверять такие вещи, как a@b-.c, что, строго говоря, действительно, но вы, возможно, не захотите разрешать такой адрес в своем приложении.

Если вы используете регулярное выражение, у вас больше контроля над тем, что разрешать и запрещать.

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

1 голос
/ 30 октября 2010

Как сказал Марк Байерс, filter_var действительно проверяет все, что строго, допустимо, и я считаю это хорошей вещью. Например, с Gmail:
Ваш адрес электронной почты - что-то@gmail.com. Вы хотите зарегистрироваться на сайте x.com. Вы не полностью доверяете веб-сайту, и вы регистрируетесь по электронной почте на адрес что-то + x@gmail.com. Gmail автоматически перенаправляет его на ваш почтовый ящик. Поэтому, если этот ненадежный веб-сайт продает кому-либо адрес вашей электронной почты и вы получаете электронное письмо, адресованное по адресу что-то+x@gmail.com, вы знаете, кто передал ваш адрес электронной почты!

Вы можете не думать о таких вещах, когда пишете свое регулярное выражение, и это может стать очень раздражающим для людей (таких как я!), Которые используют этот синтаксис. Я всегда использую filter_validate (). Таким образом, я знаю, что действительный адрес электронной почты всегда будет подтвержден.

В любом случае, давайте будем честными: используете ли вы собственный regexp или filter_validate, я все равно могу написать поддельный адрес электронной почты, который будет проверен. Вы также можете принять что угодно и отправить электронное письмо «Активировать свою учетную запись», чтобы пользователь мог получать и читать электронные письма с вашего веб-сайта.

...