Валидация почты на сайте

Много людей может регистрироваться на сайте ежедневно и не вся почта валидна, соответственно нужно ее провалидировать.

 

Валидация электронной почты на сайте на 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

 

 

 

Добавить комментарий


Защитный код
Обновить

Вы здесь: Сайтостроение Создание сайта PHP Валидация почты на сайте