За последние 24 часа нас посетили 20075 программистов и 1002 робота. Сейчас ищут 326 программистов ...

Проверка корректности e-mail

Тема в разделе "PHP для новичков", создана пользователем alexander4321, 28 сен 2012.

  1. alexander4321

    alexander4321 Активный пользователь

    С нами с:
    28 фев 2011
    Сообщения:
    6
    Симпатии:
    0
    Добрый день! Пытаюсь создать веб страницу для проверки правильности введенного e-mail. Попробовал использовать <input type=email>. Сделал все в одном файле. Вот код между тегами body
    <input type="email" name="email" method="post">
    <input type="button" value="Проверить">
    <?php
    function is_email($email) {
    if (! preg_match( '/^[A-Za-z0-9!#$%&\'*+-/=?^_`{|}~]+@[A-Za-z0-9-]+(\.[A-Za-z0-9-]+)+[A-Za-z]$/', $email)) {
    return false;
    } else {
    return true;}
    }
    if (is_email($email)) echo "E-mail правильный";
    else echo "Введите правильный e-mail";
    ?>
    Понимаю, что что-то не так делаю, но не могу понять что именно. Где связь между введенным email и переменной $email? Как то же в эту переменную должен записываться введенный email?
     
  2. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    /^[-0-9a-z_\.]+@[-0-9a-z^\.]+\.[a-z]{2,4}$/i
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    нельзя так. есть русско-язычные адреса уже давно. просыпайтесь давайте.
     
  4. alexander4321

    alexander4321 Активный пользователь

    С нами с:
    28 фев 2011
    Сообщения:
    6
    Симпатии:
    0
    Спасибо всем за помощь! Про русскоязычные адреса потом подумаю. Проблему решил с помощью filter_var. Вот, что получилось:
    1)HTML файл (email.html)
    <body>
    <form method='POST'>
    <input type="email" name="email" method="post">
    <input type="submit" value="Проверить">
    </form>
    </body>

    2) PHP файл
    <body>
    <?php
    filter_var(, FILTER_VALIDATE_EMAIL)){
    echo "всё круто!";
    }
    else{
    echo "Всё печально";
    }
    }
    ?>
    </body>
    Не думаю, что будет большая проблема включения раскладки для русскоязычных адресов. Мне было непонятно, как написать сам код. Еще раз спасибо!
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    зачем вобще проверять email?
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    До сих пор ни разу не встречал на практике :)

    Добавлено спустя 55 секунд:
    Даже работав с огромными базами е-мейлов, всё равно не видел ни разу адресов использующих кириллицу
     
  7. Gold Dragon

    Gold Dragon Активный пользователь

    С нами с:
    30 сен 2012
    Сообщения:
    306
    Симпатии:
    2
    Адрес:
    Тамбов
    вариант хороший, но есть одно НО(!) Я бы у себя на сайте не стал использовать этот фильтр, т.к. он хоть и проверяет полностью допустимость всех символов, но вот с точки зрения "человечности" не совсем иногда эстетично. Например, в имени допускается использовать всё что угодно, в том числе и "собаку" (кроме разделителя)
     
  8. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Если на то пошло, то хер с этой проверкой пусть сами думают, что пишут.
    Если e-mail не существует и на него не удалось отправить сообщение, то ставим в поле email => null.

    Все null пишем в лог и посылаем на 3 буквы.

    И срать на проверку.

    igordata, перешел =)
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    чтобы слать что-то на имеил, надо бы получить согласие. т.е. послать туда письмо и получить подтверждение. Вот и проверка.
     
  10. Gold Dragon

    Gold Dragon Активный пользователь

    С нами с:
    30 сен 2012
    Сообщения:
    306
    Симпатии:
    2
    Адрес:
    Тамбов
    а чтобы послать и не тратить ресурсы нужно хоть чуть-чуть да проверить валидность мыла :)
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    какие ресурсы? о_О вы рассылаете миллиарды сообщений? кто-то рассылает миллиарды сообщений?

    тема экономии ресурсов компьютеров должна быть оставлена в прошлом, ибо компьютеры призваны экономить главный ресурс - человеческое время. в том числе время разработки. =)
     
  12. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    В том то вся и суть убей сервер регулярками.
    А мы лучше почту пошлем =)))))
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    на стороне юзера надо проверять, чтобы при вводе имейла сразу подсветить, если есть косяк.
    в HTML5 Вроде как есть поле для ввода мыла. так что задача тривиальна.
     
  14. Gold Dragon

    Gold Dragon Активный пользователь

    С нами с:
    30 сен 2012
    Сообщения:
    306
    Симпатии:
    2
    Адрес:
    Тамбов
    привычка осталась :) Хотя с другой стороны согласен.. тратиться куча времени чтобы организовать проверку валидности мыла, а потом куча напоминалок пользователю что не так ввёл, что вообще не ввёл и т.п.
    Неожиданно для себя и сейчас поменял отношение к этому, igordata, и соглашусь с тобой... Да пофик какой адрес пользователь ввёл, ушло на него подтверждение, не пришло обратно, ну значит не судьба. Куда проще
     
  15. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Код (PHP):
    1. if(!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(email1)) 
    Вот такую шляпу сделать на js.
    И просто будет зависон когда сделать так

    h;'kj;lsdjkjfd;khj;fdkhgfdhgsdgh

    Тупо зависнет браузер =), проверено.
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768