- PHP Формы — Проверка имени, E-mail и URL
- Проверка валидности имени на PHP
- Проверка правильности email на PHP
- Проверка URL-адреса в PHP
- Проверка имени, email и URL-адреса в PHP
- Пример
- Форма обратной связи на PHP с отправкой на e-mail
- Форма обратной связи на PHP
- Комментарии ( 9 ):
- Как создать онлайн тест на php
PHP Формы — Проверка имени, E-mail и URL
В данной статье, мы рассмотрим возможности PHP проверить, корректно ли в форме указан адрес электронной почты (email), имя пользователя и URL-адрес.
Проверка валидности имени на PHP
В приведенном ниже коде показан простой способ проверки валидности введённого пользователем имени. Согласно регулярке в поле name можно вводить только латинские буквы, дефисы, апострофы и пробелы. Если значение поля имени не соответствует шаблону, то в переменную $nameErr сохраним сообщение об ошибке:
Примечание: Функция preg_match() ищет в строке $name шаблон, возвращая true , если шаблон существует, и false , если данные в строке не соответсвуют шаблону.
Но что если нужно, чтобы имя было ТОЛЬКО на латинице или ТОЛЬКО на кирилице и ограничить длину до 30 символов? Например, для полных имён типа «Максим Максимов-Суханов» или «Maxim Maximov-Sukhanov», естественно только на одном из языков регулярное выражение примет следующий вид (бонусом можно писать украинские имена):
или более строгий вариант выражения без прочих символов и в котором первая буква строки должна быть в верхнем регистре, а все остальные в нижнем:
Примечание: Не забывайте про букву «Ё», которая не входит в диапазон «А-Я» и её нужно указывать отдельно!
Проверка правильности email на PHP
Как известно email состоит из двух основных частей — username@hostname. Локальная часть email-адреса — это то, что перед знаком «@»(ASCII-код 64), а часть после знака — это домен получателя. Локальная часть может иметь длину до 64 символов, а имя домена может содержать не более 253 символов.
Локальная часть может включать прописные и строчные латинские буквы (A – Z, a – z) (ASCII: 65–90, 97–122), цифры от 0 до 9 (ASCII: 48–57), специальные символы: # — _ ~! $ & ‘() * +,; =: и %20, точка(.), ASCII 46, при условии, что она не является первым или последним символом, а также при условии, что она не идет последовательно (например, Max..Fax@example.com не допускается).
Доменная часть email-адреса должна соответствовать строгим правилам — соответствовать требованиям к имени хоста, состоящему из букв, цифр, дефисов и точек. Кроме того, доменная часть может быть литералом IP-адреса, который заключается в квадратные скобки [] , но это редко встречается.
Реализуем проверку email разложив её на сосотавляющие, алгоритм которых следует предписаниям стандарта RFC 2822:
$email = test_input($_POST[«email»]);
$user = ‘[a-zA-Z0-9_\-\.\+\^!#\$%&*+\/\=\?`\|\~\’]+’; // локальная часть
$domain = ‘(?:(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.?)+’; // домен
$ipv4 = ‘4(\.2)’; // ip-адрес по протоколу ipv4
$ipv6 = ‘[0-9a-fA-F](\:[0-9a-fA-F])’; // ip-адрес по протоколу ipv6
?php
if (!preg_match(«/^$user@($domain|(\[($ipv4|$ipv6)\]))$/», $email) $emailErr = «Некорректно введён email»;
>
?>
Данная регулярка удобна тем, что шаблоны для разных частей формата email-адреса объявляются отдельно. Валидацию пройдут email не только с буквенными именами почтового домена, но и почтовым сервером, представленным в виде ip адреса.
Главный минус этой регулярного выражения в том, что его нужно постоянно корректировать в соответствие изменениям в названиях email-адресов. Например, домены с русскими именами в зоне «.рф» регулярка выше уже не пропустит.
Начиная с PHP 5.2, появилась возможность выполнить эту проверку встроенной функцией PHP filter_var() . Вот как это делается с её помощью:
$email = test_input($_POST[«email»]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) $emailErr = «Некорректно введён email»;
>
?>
?php
Рекомендуем использовать именно этот способ проверки email-адреса, так как сегодня и в будущем вы будете уверены, что она работает как нужно. Разработчики языка PHP сами внесут нужные корректировки в новых версиях.
Проверка URL-адреса в PHP
Используя код из приведенного ниже примера, мы можем проверить, содержит ли поле нашей формы действительный URL-адрес. Обратите внимание, что в URL-адресе в этом случае разрешены как слэши (/) , так и дефисы (-) . Если введенное значение не соответствует условиям, то пользователю будет отображено сообщение об ошибке:
Проверка имени, email и URL-адреса в PHP
Объединим все рассмотренные выше все проверки полей ввода в одной форме и напишем следующий код:
Пример
else < $name = test_input($_POST["name"]); // проверяем, содержит ли имя только буквы и пробелы if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) < $nameErr = "Имя должно содержать только буквы и пробелы"; >> if (empty($_POST["email"])) < $emailErr = "Введите Email"; >else < $email = test_input($_POST["email"]); // проверьте, правильно ли сформирован адрес электронной почты if (!filter_var($email, FILTER_VALIDATE_EMAIL)) < $emailErr = "Неверный формат электронной почты"; >> if (empty($_POST["website"])) < $website = ""; >else < $website = test_input($_POST["website"]); // проверьте, правильность синтаксиса URL-адреса if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|. ;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) < $websiteErr = "Некорректный URL"; >> if (empty($_POST["comment"])) < $comment = ""; >else < $comment = test_input($_POST["comment"]); >if (empty($_POST["education"])) < $educationErr = "Выберите образование"; >else < $education = test_input($_POST["education"]); >?>
Вы можете попытаться ввести корректные и некорректные данные в представленной выше форме и посмотреть работу, написанного в этом уроке, сценария PHP.
В следующем уроке мы выведем введенные пользователем данные на экран.
Форма обратной связи на PHP с отправкой на e-mail
На этом уроке мы познакомимся с функцией mail (), на примере создания формы обратной связи на PHP с последующей отправкой полученных данных на почту.
Для этого создадим два файла — forma.php и mail.php. В первом файлике будет находиться только форма с полями для ввода пользователем данных. Внутри тега form — кнопка «Отправить» и атрибут action, который ссылается на обработчик — mail.php, именно к нему обращаются данные из формы при нажатии кнопки «Отправить». В нашем примере данные формы отправляются на веб-страницу с названием «/mail.php». На этой странице прописан скрипт на PHP, который обрабатывает данные формы :
Данные формы отправляются методом POST (обрабатывается как $ _POST). $ _POST — это массив переменных, переданных текущему скрипту через метод POST.
Ниже вы видите содержимое файла forma.php, поля которой заполняет сам пользователь на каком-нибудь веб-сайте. Все поля для ввода данных обязательно должны иметь атрибут name, значения мы прописываем сами, исходя из логики.
Форма обратной связи на PHP
Так форма визуально выглядет в браузере.
Далее пишем код для файла mail.php. Придумываем сами имена для переменных. В PHP переменная начинается со знака $, а затем имя переменной. Текстовое значение переменной заключается в кавычки. С помощью переменных на емайл администратора передается содержимое формы, просто подставив в квадратные скобки имя элемента формы — значение name.
$to /cdn-cgi/l/email-protection» data-cfemail=»2950465c5b44484045694e44484045074a4644″>[email protected]»; // емайл получателя данных из формы
$tema = «Форма обратной связи на PHP»; // тема полученного емайла
$message = «Ваше имя: «.$_POST[‘name’].»
«;//присвоить переменной значение, полученное из формы name=name
$message .= «E-mail: «.$_POST[’email’].»
«; //полученное из формы name=email
$message .= «Номер телефона: «.$_POST[‘phone’].»
«; //полученное из формы name=phone
$message .= «Сообщение: «.$_POST[‘message’].»
«; //полученное из формы name=message
$headers = ‘MIME-Version: 1.0’ . «\r\n»; // заголовок соответствует формату плюс символ перевода строки
$headers .= ‘Content-type: text/html; charset=utf-8’ . «\r\n»; // указывает на тип посылаемого контента
mail($to, $tema, $message, $headers); //отправляет получателю на емайл значения переменных
?>
Таким образом данные из массива $_POST будут переданы соответствующим переменным и отправлены на почту при помощи функции mail. Давайте заполним нашу форму и нажмем кнопку отправить. Не забудьте указать ваш е-майл. Письмо пришло моментально.
Как видите создавать форму обратной связи на PHP с отправкой на e-mail не так и сложно. Хотите узнать как сохранить данные, полученные из формы в файл или в базу данных? Этому научит вас мой видеокурс «PHP и MySQL с Нуля до Гуру».
Создано 10.08.2017 11:52:15
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 9 ):
Я как-то давно посмотрел видео из курса от Михаила Русакова. Там была форма, которая регистрировала пользователей. С тех пор я сам дошел до представленной выше конструкции, хотя посмотрел совсем другой урок.)
так и должно быть при обучении, если встречаются: хороший учитель и усердный ученик.
Так точно! вот я например никогда не создавал интернет магазины, а сделал за неделю
Привет, в этой форме при нажатии кнопки «Отправить сообщение» будет перебрасывать на файл mail.php? А можно как-то сделать, чтобы он не открывался?
У меня тоже проблема, форма отправляется пустой как только на нее перейти. Как можно перейти на нее без преждевременной отправки формы?
Добрый день! По строке скрипта: $message = «Номер телефона: «.$_POST[‘phone’].»
«; выдаёт ошибку syntax error, unexpected ‘$message’ (T_VARIABLE) Помогите пож. не вижу что не так. Это вторая команда в скрипте $message, пробовал и $message ., как в примере, и $message2, всё равно выдаёт ошибку.
я честно не мучаюсь и использую сайт https://formfor.site, пока не жалуюсь. Сообщения уходят в telegram и почту.
smineral — обработка и интеграция без конструктора форм даже. чем этот сервис лучше например qform24.com ? где всё тоже самое только 1. бесплатно полностью. 2. есть конструктор форм и так же подключение обработчика к готовой форме 3. есть кабинет по работе с заявками внутри сервиса, а не только экспорт в мессенджеры и все остальные функции что там заявлены тоже есть.
Отличный мини проект формы) все что нужно есть. Только подскажите пожалуйста как сделать сообщение об успешном отправлении сообщения? а то кидает на файл mail.php, может даже просто в виде модального окна — но чтобы не кидало на файлик. отправка работает — письмо пришло молниеносно)
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.
Copyright © 2010-2023 Русаков Михаил Юрьевич. Все права защищены.
Как создать онлайн тест на php
Иногда людям не знающим программирования, нужно создать онлайн тест на php для своего сайта, на самом деле все очень просто, постараюсь наглядно объяснить.
Для решения данной задачи мы будем использовать простую HTML форму и POST запросы. И так приступим.
1. Нам потребуется создать файл php, в общем по сути не важно, если вы используете CMS, то пишете там, где можно вставить php код.
2. Создадим простую форму с полями «radio», то есть для выбора вариантов ответа и кнопкой для результатов.
3. Отлично мы создали форму. Теперь в неё нужно внести изменения, чтобы она работала.
method=»POST» — метод отправки php форм.
action=»result.php» — файл, в который будут отправляться результаты формы.
4. Присвоим уникальное имя вариантам ответов, чтобы объединить их между собой, для одного вопроса — name = «имя»:
5. А теперь пропишем имя ответов к каждому варианту, например ‘value = «a»‘
6. Создадим файл result.php в том же каталоге, в котором создадим скрипт теста на php для обработки и вывода результата правильных и не правильных ответов.
Правильных ответов:
Неправильных ответов:
7. Перед html кодом добавим скрипт php:
Описание: Здесь все довольно просто, мы создаем простое условие для каждого вопроса. Если в вопросе [q1] вариант «a», то прибавляем к переменной «$ot» + 1 ($ot — количество правильных ответов), если другой вариант то записываем в переменную $not «неправильных ответов» + 1.
8. Теперь выводим на страницу в html коде правильные и неправильные ответы:
Правильных ответов:
Неправильных ответов:
Заключение. Теперь у вас есть простой тест на php и html, теперь можно и запустить его для онлайн. Вы можете добавить сколько угодно вариантов ответов по аналогии. Добавить стилей и улучшить код. Можно было все сделать намного грамотней, но проще этого не придумаешь. Работа у теста такая: выбрали варианты, нажали на кнопку «результат», нас перекидывает на вторую страницу, где выводится подсчет правильных и неправильных ответов. Удачи!
С помощью POST-запроса можно реализовать обратную форму, о том, как это делается читайте в статье — Форма обратной связи php без спама.