Как мне создать веб-форму PHP, которая проверяет адрес электронной почты? - PullRequest
1 голос
/ 16 октября 2010

Я осматривался и не могу найти способ создать простую форму без кнопки отправки (только ввод), которая проверяет, является ли введенная информация действительно адресом электронной почты. Любая помощь будет оценена.

* Отказ от ответственности Я почти ничего не знаю о PHP. Я понимаю, что это очень легко, я просто не понимаю этого.

Ответы [ 3 ]

0 голосов
/ 16 октября 2010

Пояснение: форма не php, на самом деле это html, она может "перейти" в php файл.

Чтобы кнопка не была видна:

<input type="submit" style="visibility:hidden">

Чтобы проверить клиентскую часть электронной почты (без отправки - или на простом английском языке, перейдя на сервер и вернувшись):

Посмотрите его урок:

http://tutorialblog.org/client-side-form-validation-with-jquery/

Это ОЧЕНЬ легко!

Если вы действительно хотите пройти проверку на сервере, я бы посмотрел его урок:

http://www.w3schools.com/php/filter_validate_email.asp

Я также очень и очень прост, вам не нужно осваивать любой язык.

Удачи

0 голосов
/ 16 октября 2010

Несколько пунктов здесь:

1) Компонент имени пользователя в адресе электронной почты имеет набор «базовых» правил

Однако эти правила на самом деле довольно запутанные и сложные. Создать регулярное выражение, которое соответствует 100% допустимых строк и 0% недопустимых строк, практически невозможно.

2) RFC заявляет, что единственным сервером, который должен проверить часть имени пользователя в адресе электронной почты, является хост этого домена

То есть, в письме на joe@server.com должен быть только компонент " joe ", проверенный сервером, обрабатывающим электронную почту для " server.com ».

3) Даже адрес, который проходит любой тест регулярного выражения, который вы можете иметь, может быть не активен / действителен

Я мог бы сказать, что мой адрес электронной почты thisdoesnotexist12756@gmail.com, который, вероятно, является потенциально допустимым адресом, но это не означает, что он существует, активен или является моим.

http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx

Лучшим решением для обработки адресов электронной почты и проверки их действительности является выполнение чрезвычайно простой проверки с использованием регулярного выражения (такой простой, как проверка того, что адрес содержит хотя бы один символ "@", и при как минимум один символ «.» справа от самого правого «@»), а затем отправьте электронное письмо на этот адрес, содержащее ссылку, которая затем отправит обратно через другую форму (с использованием параметров $ _GET), чтобы сообщить, что сообщение было успешно получено по указанному адресу электронной почты.

Пример:

  1. Пользователь посещает вашу форму
  2. Пользователь вводит все свои данные
  3. (Необязательно) Ваша форма использует javascript для быстрой проверки адреса электронной почты, чтобы убедиться, что шаблон /.+\@.+..+/ присутствует.
  4. Пользователь отправляет форму
  5. Ваш обработчик PHP-формы («скрипт») затем перепроверяет содержимое формы, включая адрес электронной почты, где он использует preg_match() для проверки на наличие /.+\@.+..+/
  6. Ваш PHP-скрипт сохраняет содержимое формы в таблицу, но помечает эту таблицу как " pending "
  7. Затем ваш сценарий PHP генерирует сообщение электронной почты на указанный адрес, содержащее ссылку на сценарий PHP на вашем сайте (т. Е. http://www.server.com/validate.php?entry=1)), и просит пользователя щелкнуть его, чтобы подтвердить их отправку
  8. Сценарий в validate.php просматривает его параметр $_GET['entry'] и, если в таблице базы данных есть строка, соответствующая этому значению, он помечает ее как " valid «

Это, по общему признанию, очень длительный и запутанный процесс, который нужно пройти, но, если вы хотите быть на 100% уверены, что адрес электронной почты, который отправляет пользователь, по крайней мере, способен получать электронную почту во время отправка формы, это единственный способ сделать это.

Следует также отметить, что существует ряд служб, которые позволяют пользователям настраивать временные адреса электронной почты, плюс обычные адреса электронной почты ни в коем случае не являются постоянными, поэтому адрес, который был проверен сегодня, может не сделать этого завтра.

0 голосов
/ 16 октября 2010

HTML-формы допускают нажатие Enter по умолчанию для отправки формы, поэтому вам не нужно делать ничего лишнего.

Для проверки электронной почты используйте функцию filter_var с флагом FILTER_VALIDATE_EMAIL.

Пример

HTML-файл:

<form method="post" action="yourfile.php">
    <input type="text" name="email" />
</form>

PHP-файл:

<?php
$email = $_POST['email'];
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
    // Email is invalid, do something
}
else
{
   // Email is valid
}
?>

Примечание: не используйте регулярные выражения для анализа адресов электронной почты, по причинамв этом вопросе - Использование регулярного выражения для проверки адреса электронной почты

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...