2015-06-11 2 views
0

Сценария я хотел бы принимать только уникальный адрес электронной почты с персом игнорируя GMAIL псевдонимов (и если какие-либо другие услуги, сделать что-то подобное)Пользователей уникальной электронной пренебрегая Gmail или другие услуги псевдонимов

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

Из моего понимания:

  • Если gmail.com или googlemail.com затем удалите + и что-нибудь после того, как это псевдоним.
  • Если это gmail, тогда удалите все точки из username, поскольку они игнорируются. [email protected] - это то же самое, что и [email protected]
  • Не просто аннулируйте символ +, поскольку он действителен для адресов электронной почты.

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

Обновление У меня есть база данных для хранения материалов с адресами электронной почты и заявленными кодами.

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

Cheers.

+0

Вы должны продолжать обновлять свою БД для этого. Существует большое количество сервисов, плюс есть весь адрес электронной почты для доменов, который может получить любое количество адресов электронной почты для одной учетной записи! –

+0

Ну, всегда есть один или другой способ обмануть! Но вам нужно иметь базу данных известных возможностей и часто ее обновлять. –

ответ

2

Написание кода для игнорирования нескольких известных форматов псевдонимов в одной службе (например, Gmail) не имеет большого значения. Однако попытка предотвратить отказ одного человека от нескольких скидок, основанных только на адресе электронной почты, является невыполнимой задачей.

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

Для того, чтобы никто не решил потребовать кучу ваших скидок, потребовалось бы слишком много ресурсов. Не без других методов идентификации, кроме адреса электронной почты.

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

+0

Понял. Я действительно только после добавления дорожных блоков, чтобы сделать это больше усилий, чтобы претендовать на мультипликаторы. Я знаю, что трудно остановиться прямо. Facebook auth может быть подходящим дополнительным вариантом, который я могу предложить, информация о кредитной карте, вероятно, слишком велика для этого сценария. Приветствия. –

0

В этом случае вы можете использовать Regex.с помощью этого кода вы можете преобразовать массив электронной почты в массив псевдонимов (вы можете настроить шаблон символов для каждого почтового сервиса):

Код:

$mails = ['[email protected]', '[email protected]', '[email protected]']; 
$valid_mails = []; 
$pattern = "/^(?P<name>[A-Za-z0-9._+\-\']+)@(?P<mail>[A-Za-z0-9.\-]+)\.[A-Za-z]{2,}$/"; 
$symbol_pattern = ['gmail'=>'/(\.|\+|-)/','yahoo'=>'/(\.)/']; 
foreach ($mails as $key=>$mail) { 
    $valid_mails[$key] = preg_replace_callback($pattern, function($match){ 
     global $symbol_pattern; 
     return preg_replace($symbol_pattern[$match['mail']], '', $match['name']); 
    }, $mail); 
} 
var_dump($valid_mails); 

Выход:

array(3) { [0]=> string(9) "johnsmith" [1]=> string(9) "johnsmith" [2]=> string(9) "johnsmith" } 
+0

На самом деле это не псевдонимы - gmail просто игнорирует точки. Более значимыми являются расширения адресов (обычно с использованием '+'), которые поддерживаются большинством сервисов, поэтому «johnsmith + bar @ gmail.com» обеспечивает то же место, что и «johnsmith + foo @ gmail.com». Вы можете просто составить их, не предопределяя ничего. – Synchro