Это стандартная практика, чтобы блокировать или разрешать адреса электронной почты с «+» в? - PullRequest
4 голосов
/ 02 января 2012

Я хочу, чтобы каждый пользователь зарегистрировался с уникальным адресом электронной почты. Однако некоторые адреса электронной почты, такие как GMail, позволяют добавлять суффикс +, который можно использовать для регистрации нескольких учетных записей на веб-сайте, но все это идет на один адрес электронной почты, например,

  • bob@gmail.com переходит на bob@gmail.com
  • bob+1@gmail.com переходит на bob@gmail.com
  • bob+2@gmail.com переходит на bob@gmail.com
  • bob+3@gmail.com переходит на bob@gmail.com
  • bob+4@gmail.com переходит на bob@gmail.com

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

Я думал о блокировке любых адресов электронной почты со знаком «+», но я не хочу блокировать любые действительные адреса электронной почты. Что такое стандартная практика?

Ответы [ 2 ]

4 голосов
/ 02 января 2012

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

Следует также отметить, чтоМногие другие провайдеры электронной почты также предоставляют субадресацию, но не с использованием знака плюс, а с дефисом (Yahoo, Runbox и т. д.), и попытка заблокировать это вызовет проблемы только у тех, у кого только адрес электронной почтыс дефисом в нем.Это война, которую вы уже проиграли.

Кроме того, если вы отфильтровываете знаки плюс, вы больше не соответствует стандарту RFC3696 :

Точное правило заключается в том, что любой символ ASCII, включая управляющие символы, может отображаться в кавычках или в строке в кавычках. [...]

Без кавычек локальные части могут состоять из любой комбинации буквенных символов, цифр или любых специальных символов

! # $ % & ' * + - / = ?  ^ _ ` . { | } ~

Но вы можете просто лишить плюса, если будете настаивать.

$emails = array('bob@gmail.com','bob+1@gmail.com','bob+hello@gmail.com');

foreach ($emails as &$email)
{
    list($identifier, $domain) = explode('@',$email);
    list($name) = explode('+',$identifier);
    $email = $name."@".$domain;
}

print_r($emails);

Вышесказанное даст вам

Array
(
    [0] => bob@gmail.com
    [1] => bob@gmail.com
    [2] => bob@gmail.com
)
0 голосов
/ 02 января 2012

Идентификаторы электронной почты могут содержать много символов, которые нам показались бы некорректными. Я нашел здесь хорошую ветку, которая может ответить на ваш запрос: Какие символы разрешены в адресе электронной почты?

чтобы найти уникальный идентификатор электронной почты, просто возьмите первую половину идентификатора электронной почты и удалите + и.символы, а затем проверить.

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