Валидация почты на сайте
- Подробности
- Категория: PHP
- Просмотров: 113
Много людей может регистрироваться на сайте ежедневно и не вся почта валидна, соответственно нужно ее провалидировать.
Валидация электронной почты на сайте на PHP.
1 способ: проверяем валидность e-mail с помощью функции FILTER_VALIDATE_EMAIL. Она вернет True, если адрес нормальный
$email = "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo("$email is a valid email address");
} else {
echo("$email is not a valid email address");
}
2 способ: с помощью регулярного выражения:
$email = "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра."; $pattern = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/";
if (preg_match($pattern, $email)) {
echo("$email is a valid email address");
} else {
echo("$email is not a valid email address");
}
В данном случае [имя пользователя может содержать буквы, цифры и определенные специальные символы], [доменное имя может содержать буквы и цифры], а также знаки дефиса и точки - взял в скобки квадратные, чтобы можно было понять как расположены они в коде
---
Отдельные случаи:
а) PHPMailer сам фильтрует при помощи встроенных функций:
use PHPMailer\PHPMailer\PHPMailer;
$email = "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра.";
$mail = new PHPMailer;
if ($mail->validateAddress($email)) {
echo("$email is a valid email address");
} else {
echo("$email is not a valid email address");
}
б) Пример проверки email, отправленной через форму на сайте:
$errors = '';
if ($_POST['email'] != "") { // проверяем не пусто ли поле
$email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); //
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors .= "$email НЕ ВАЛИДНА."; }
} else {
$errors .= 'Пожалуйста введите e-mail.';
}
, где:
- FILTER_SANITIZE_EMAIL - очищает поле от доп символов, которые случайно могли попасть.
в) Проверка имени домена - это часто и нужно и что написано перед собачкой
function validateEmail($email)
{
$isEmailValid = FALSE;
if (! empty($email)) {
$domain = ltrim(stristr($email, '@'), '@') . '.';
$user = stristr($email, '@', TRUE);
// валидация домена email, используя DNS
if (! empty($user) && ! empty($domain) && checkdnsrr($domain)) {
$isEmailValid = TRUE;
}
}
return $isEmailValid;
}
а тут еще более интересная проверка - функция checkdnsrr