Корректность ввода е-мейла

474
.
Добавлено: 25.10.2017 / 10:46
В общем нужно чтобы вводить можно было буквы @ и точку, если можно как-то сделать чтобы обязательно была собачка @
// Проверка mail
if (empty($reg_mail))
$error = $error . 'Не введён E-mail!';
elseif (mb_strlen($reg_mail) < 3 || mb_strlen($reg_mail) > 30)
$error = $error . 'Недопустимая длина E-mail';
if (preg_match("/[^a-z\._-]+@[a-z\._-]+\.[a-z]\$/", $reg_mail))
$error = $error . 'Некорректный формат e-mail адреса!';


Добавлено: 25.10.2017 / 11:13
Я извиняюсь, дайте такой код с вводом цыфр, букв @ и точку, и обязательно чтоб была введена @
.

Iron_Man, зачем? Достаточно проверять на наличие собаки @. А остальное всё - это уже проблемы отправителя.

.
Koenig
(\/)____o_O____(\/)

Через фильтр можно мыло прогнать
http://php.net/manual/ru/filte ... e.php

.

Koenig, где-то попадалась мне статья о не корректном фильтровании с помощью этой ф-ции.

.
ДоХтор

Iron_Man, потестируй этот пример, вроде бы всё учтено:

code (+/-)
// Массив с ошибками
$errors = [];

// Проверка mail
if (empty($reg_mail)) {
    $errors[] = 'Не введён E-mail!';
} elseif (mb_strlen($reg_mail) < 3 || mb_strlen($reg_mail) > 30) {
    $errors[] = 'Недопустимая длина E-mail';
}

// Email соответствует, если:
$patt = '~^
    [a-z]         # начинается с одной из букв латинского алфавита ,
    [a-z\d]*      # за которой идёт НЕ обязательная последовательность из букв или чисел ,
    ([._-])?      # за которой идёт НЕ обязательный символ . или _ или - ,
    (?(1)[a-z\d]+ # если найдена . или _ или -, то за ними обязательна буква или цифра ,
    |             # иначе (если НЕ найдена . или _ или -) ,
    [a-z\d]+)@    # за которой идёт обязательная последовательность из букв и чисел, и @ ,
    [a-z]+        # за которой идёт обязательная последовательность из 1-ой и более букв ,
    \.            # за которыми идёт символ . ,
    [a-z]{2,4}$   # за которой идут от 2-х до 4-х букв, и конец строки
~x';

if (!preg_match($patt, $reg_mail)) {
    $errors[] = 'Некорректный формат e-mail адреса!';
}

if ($errors) {
    die('Ошибка!<br />'. join('<br />', $errors));
}
.
JohnCMS

Iron_Man, http://johncms.com/forum/index ... 02486 там есть проверка валидности емайла

.
# Jesk (28.10.2017 / 13:55)
Iron_Man, http://johncms.com/forum/index ... 19252 там есть проверка валидности емайла
Там кривая проверка валидности:
'/[0-9a-z_\-]+@[0-9a-z_\-^\.]+\.[a-z]{2,6}/i'
Она будет пропускать не корректные майлы вида: asdasd@-asd.ru
.
__________________________________________________

Вон что откопал
----------------

function isMail($email)
{
    return preg_match('#^([a-z0-9_\-\.])+\@([a-z0-9_\-\.])+(\.([a-z0-9])+)+$#', $email);
}
.
# Andrei4ik93 (06.11.2017 / 14:38)
Вон что откопал
----------------



function isMail($email)
{
return preg_match('#^([a-z0-9_\-\.])+\@([a-z0-9_\-\.])+(\.([a-z0-9])+)+$#', $email);
}
Ну дык эта регулярка тоже не катит : -ertertert@ert.ert

Я же выше написал более менее корректное решение.
.
Hey guys! Finally I'm gonna change status!?
# ДоХтор (06.11.2017 / 14:42)
-ertertert@ert.ert
Это кстати корректное мыло
По rfc стандарту в локальной части адреса, какого только барахла не может быть(по моему все символы) Мэйлерам правда не понравится. FILTER_VALIDATE_EMAIL работает как раз по стандарту
Всего: 11