2013-09-24 4 views
0

Я создаю приложение, которое позволяет регистрироваться в информационном бюллетене, а затем управлять им. Существует обычная проверка, если поле пусто, если это тип электронной почты, уникальный ecc .. Но как я могу проверить, действительно ли письмо действительно существует? Если кто-то вводит фальшивую почту, эта почта вводится в базу данных, и это может испортить базу данных. И есть другие досады. Можно ли проверить, действительно ли почта существует?Как бороться с несуществующими письмами

В противном случае вы можете автоматически удалить незарегистрированного пользователя через 10 дней?

+0

В дополнение к ответам, вы также можете проверить мою работу на том же самом. Я не беспокоюсь о несуществующих электронных письмах, но большинство других проверок есть.Я также отслеживаю и храню IP-адреса/браузер/платформу и т. Д.: Https://github.com/kJamesy/Laravel4-Newsletter-Application – kJamesy

+0

Спасибо! Я не понимаю, что это значит: Скопируйте файл composer.json с шага 3 и перезапишите это в шаге 1 с ним. – johnnyfittizio

ответ

2

Вы можете создать правило, чтобы проверить, если формат электронной почты является действительным:

$validator = Validator::make(
    Input::all(), 
    array('email' => 'required|email') 
); 

if ($validator->fails()) 
{ 
    return "This is not a valid e-mail"; 
} 

Но это будет проверять только для формата ([email protected]), потому что нет никакого способа узнать, если действительно существует адрес электронной почты.

Ну ... это не совсем так, есть способ: отправить электронное письмо на этот адрес, и если вы не получите сообщение об ошибке, адрес существует, вероятно.

Лучший способ сделать то, что вам нужно, когда пользователь создает учетную запись в вашей системе, отправить ему электронное письмо с подтверждением, на которое он/она должен щелкнуть, чтобы подтвердить этот адрес. Если учетная запись не подтверждена за x дней, вы ее удалите. Это вопрос, который может вам помочь в этом: Laravel 4: how to make confirmation email?.

О вашем последнем вопросе: создайте Artisan Command, который проверяет наличие неутвержденных счетов и удаляет их. Взгляните на документы, это легко, Laravel делает почти всю работу за вас. И вы можете запустить эту команду один раз в день, используя хрон или менеджер задач:

php /var/www/your-site-dir/artisan check:accounts 

EDIT:

Этот вопрос покажет вам, как создать команду: Creating and using Laravel 4 commands

И в методе fire() вы должны сделать что-то вроде:

public function fire() 
{ 
    $dt = Carbon\Carbon::now(); 

    User::where('activated', false) 
      ->where('created_at', '<', $dt->subDays(10)) 
      ->delete(); 
} 
+0

Спасибо за ответ! Я выполнил уже письмо с подтверждением. Дело в том, что если кто-то войдет в 2000 поддельных электронных писем, это испортит мою базу данных. Но ничего не помешать этому заранее, не так ли? Меня интересует второй ответ. В основном я должен удалить всех пользователей из базы данных с подтвержденным набором в значение false. Я ищу учебник, предлагаете ли вы некоторые ресурсы? В качестве альтернативы, я могу также сделать функцию, которая проверяет дату регистрации, а если старше, то 10 дней удаляют пользователя, нет? – johnnyfittizio

+0

Только что отредактирован, чтобы добавить немного света к делу. –

1

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

Заканчивать http://verify-email.org/register/levels.html

Если вы обеспокоены огромного количества писем вводимой, вы, вероятно, может войти $_SERVER['REMOTE_ADDR'], который будет IP-адрес клиента в БД на электронную почту и проверить, чтобы убедиться, что является уникальным а также перед сохранением дополнительных записей в таблице.

Что касается фактического подтверждения существования и действительности введенного письма, я считаю, что вам нужно будет использовать fsockopen и выдавать команды smtp на серверы. Я нашел этот класс php, который пытается делать то, что мы говорим о http://www.webdigi.co.uk/blog/wp-content/uploads/2009/01/smtpvalidateclassphp.txt

Сомневаюсь, что это работает, но должно стать хорошей отправной точкой.

+0

Интересный вопрос о сохранении IP-адреса – johnnyfittizio

Смежные вопросы