Как проверить поле email при заполнении формы

air1on

Новичок
Вот еще посоветовали сделать так
PHP:
function valid_email ($mail) {
  if (preg_match('/^(.+@)(.+\..+)$/i', $mail, $match))
    return checkdnsrr ($match[2]);
  return false;
}

if(isset($_POST['submit']))
    {
    $value['name']=(isset($_POST['name'])) ? trim_name($_POST['name']) : '';
    $value['mail']=(isset($_POST['mail'])) ? trim_sm_text($_POST['mail']) : '';
    $value['text']=(isset($_POST['text'])) ? trim_text($_POST['text']) : '';
    if($value['name']!='' && valid_email($value['mail']) && $value['text']!='')
- тогда форма не отправляется - если email заполнен некорректно - это очень хорошая новость для меня))) , но есть и плохая - она ни как не предупреждает об этом пользователя(
 

vasinsky

Новичок
)) 2 страницы - обсуждения алгоритмов проверки мыла на валидность.
я же показал - как проверить и как сказать - что мыло не корректное.
 

air1on

Новичок
ок! Спасибо Вам за терпение)) буду пробовать и пробовать пока не получится
 

admir

Новичок
filter_var() - та что проверяет емайл
если ты запустишь эту строку - и проверишь её с валидным и не валидным емайл - ты увидишь, что она вернёт разный результат.

в любом случае ответом функции будет булевый тип - ложь или истина - true или false
Э не путай)
Будем точными - Возвращает отфильтрованные данные или FALSE, если фильтрация завершилась неудачей.
То есть либо строчку либо Булев НОЛЬ

Поэтому

PHP:
if(isset($_POST['submit']))
{$value['name']=(isset($_POST['name'])) ? trim_name($_POST['name']) : '';
$value['mail']=(isset($_POST['mail'])) ? trim_sm_text($_POST['mail']) : '';
$value['text']=(isset($_POST['text'])) ? trim_text($_POST['text']) : '';
if(!filter_var($value['mail'], FILTER_VALIDATE_EMAIL)){
    echo 'Введён не валидный email!';
    return false;
}
else{//всё нормально - продолжаем работать}
 
Последнее редактирование модератором:

antson

Новичок
Партнер клуба
air1on,
на сайт приходят спам письма так как не реализована проверка email при заполнении формы
то, что ты научишься(научился) проверять e-mail - это хорошо.
Но поверь мне сие никак не связано с проблемой спама. :(
с ним борются другими методами.
 

logoff

Новичок
ну вот здесь preg_match() - проверка строки по паттерну
if (!preg_match("/^[-0-9a-z_\.]+@[-0-9a-z^\.]+\.[a-z]{2,4}$/i",$email))
Ответьте пожалуйста что в строке означает {2,4}$ разница лишь в том что без этого можно написать цифру в домене! Но что {2,4} означает я не понимаю.
 
Сверху