- •Интерактивное программирование
- •Разработка веб-приложений с использованием php и MySql
- •Тема 1. Архитектура веб-приложений
- •Установка веб-сервера
- •Подготовительный этап
- •Создание файловой структуры веб-сервера
- •Установка Apache 2.4
- •Настройка php 7
- •Установка и настройка MySql 5.7
- •Установка и настройка php 7
- •Установка и настройка phpMyAdmin
- •Использование сервера и резервное копирование данных
- •Дополнительная настройка php
- •Установка почтовой заглушки
- •Тема 2. Использование php в веб-разработке Как работает php
- •Основы php Первая страница
- •Синтаксис языка
- •Переменные в php
- •Область видимости переменных
- •Типы данных
- •Тип данных boolean
- •Типы данных integer и float
- •Тип данных string
- •Тип данных null
- •Тип данных resource
- •Тип данных array
- •Константы
- •Автоматическое преобразование типов
- •Приведение типов
- •Преобразование в булев тип
- •Операторы
- •Арифметические операторы
- •Оператор присваивания
- •Операторы сравнения
- •Операторы инкремента и декремента
- •Логические операторы
- •Строковые операторы
- •Операторы, работающие с массивами
- •Приоритет оператора
- •Управляющие конструкции
- •Условный оператор if
- •Функции
- •Функции для проверки на существование переменных
- •Для работы с массивами
- •Сортировка массивов
- •Математические функции
- •Функции обработки строк
- •Функции для работы с датой и временем
- •Функции, определяемые пользователем
- •Тема 3. Взаимодействие с html Подключение файлов
- •Обработка форм
- •Тема 4. Работа с MySql Что такое MySql? Принципы проектирования бд
- •Основы языка sql и работа в phpMyAdmin
- •Типы данных
- •Создание базы данных
- •Удаление базы данных
- •Создание таблиц
- •Ограничения внешнего ключа
- •Изменение столбцов в таблице
- •Удаление таблиц
- •Добавление записей в таблицы
- •Удаление записей из таблиц
- •Обновление содержимого некоторых полей в одной либо нескольких записях в таблицах бд
- •Поиск одной или нескольких записей, удовлетворяющих заданному условию
- •Взаимодействие php и MySql
- •Подключение к MySql
- •Получение данных из бд
- •Запись данных в бд
- •Теоретические вопросы
- •Задания.
Обработка форм
На нашем тестовом сайте есть страница «Отзывы». Создадим форму для отправки отзывов на сервер.
В файле response.php после вызова header.php разместим следующий код:
<main class="content">
<h1>Отзывы</h1>
<form action= "response.php" method= "POST">
<ul>
<li><label for="name">Имя: </label></li>
<li><input type= "text" name= "name" id="name"></li>
<li><label for="email">E-mail:</label></li>
<li><input type= "text" name= "email" id="email"></li>
<li><label for="head">Тема:</label></li>
<li><input type= "text" name= "head" id="head"></li>
<li><label for="message">Сообщение:</label></li>
<li><textarea rows= "10" cols= "45" name= "message" id="message"></textarea></li>
<li><input type= "submit" value= "Оставить отзыв" id="send"></li>
</ul>
</form>
</main>
В файле style.css допишем следующие стили:
.content form{
padding-left: 20px;
}
.content #send{
background: #FFB7B7;
color: #FFF9EE;
font-size: 20px;
padding:5px;
border:none;
box-shadow: 0 0 10px rgba(0,0,0,0.5);
}
.content form li{
list-style:none;
padding-top: 10px;
}
Результат представлен на рисунке 148:
Рисунок 148 – Форма для отправки отзывов
Форма для отправки данных готова, теперь эти данные следует принять и обработать. Остановимся подробнее на атрибутах тега <form>, записанного в виде:
<form action= "response.php" method= "POST">
Атрибут action содержит путь к файлу, в котором записан скрипт для обработки данных формы. В нашем случае это будет сам файл response.php. В атрибуте method указан способ отправки данных на сервер, а именно: метод POST.
Обратите внимание на то, что у каждого поля формы указан атрибут name. Это необходимо для того, чтобы обработчик мог извлечь полученные данные из полей формы.
В файле response.php перед вызовом footer.php напишем следующий код:
$name = htmlspecialchars($_POST["name"]);
$email = htmlspecialchars($_POST["email"]);
$head = htmlspecialchars($_POST["head"]);
$message = htmlspecialchars($_POST["message"]);
/* E-mail, на который отправится сообщение */
$admin_email = "test@test.ru";
/* Текст сообщения */
$email_text = "Новый отзыв:
Имя: $name
E-mail: $email
Сообщение: $message ";
/* Отправка сообщения*/
$from = "From: $name <$email> \r\n Reply-To: $email \r\n";
mail($admin_email, $head, $email_text , $from);
Здесь:
htmlspecialchars() – функция, которая преобразовывает специальные символы html в сущности для того, чтобы пользователи не могли отправить на сервер какой-либо вредоносный код.
$_POST – глобальная переменная, в которой хранятся данные, отправленные методом POST.
mail() – функция отправки e-mail сообщений. Принимает аргументы: адрес электронной почты, на который будет отправлено письмо, тема письма; текст письма, данные отправителя письма.
Отправить сообщение, как показано на рисунке 149.
Рисунок 149 – Отправка сообщения
После нажатия кнопки «Оставить отзыв» страница обновилась, а письмо отправилось по назначению. Ранее мы настраивали сервер таким образом, чтобы письма сохранялись в папке C:\Server\bin\Sendmail\emails. Проверим, появилось ли там письмо. На рисунке 150 показано содержимое папки C:\Server\bin\Sendmail\emails.
Рисунок 150 – Папка emails
Как видно, письмо успешно сохранено в папке:
Рисунок 151 – Скриншот полученного письма
Однако, при отправке сообщения, пользователь не получает никакой ответной реакции на свои действия. Страница просто перезагружается, и пользователь не понимает, прошла отправка нормально, или нет. Кроме того, если форма осталась незаполненной, письмо все равно отправляется, как это видно на рисунке 152:
Рисунок 152 – Результат отправки незаполненной формы
Давайте добавим сообщение для пользователя, а так же код проверки на заполненность полей формы:
if(isset($_POST["send"])){
$name = htmlspecialchars($_POST["name"]);
$email = htmlspecialchars($_POST["email"]);
$head = htmlspecialchars($_POST["head"]);
$message = htmlspecialchars($_POST["message"]);
if(empty($name)) {echo "<p>Заполните поле Имя</p>";}
elseif(!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) {echo "<p>Поле E-mail заполнено не корректно!</p>";}
elseif(empty($message)) {echo "<p>Заполните поле Сообщение<p>";}
else{
/* E-mail, на который отправится сообщение */
$admin_email = "test@test.ru";
/* Текст сообщения */
$email_text = "Новый отзыв:
Имя: $name
E-mail: $email
Сообщение: $message ";
/* Отправка сообщения*/
$from = "From: $name <$email> \r\n Reply-To: $email \r\n";
mail($admin_email, $head, $email_text , $from);
echo "<p>Ваш отзыв успешно отправлен!</p>";
}
}
Здесь мы добавили несколько проверок. Во-первых в самом начале стоит проверка на то, была ли форма отправлена. $_POST["send"] – в этой переменной храниться значение атрибута value нашей кнопки «Оставить отзыв». Функция isset() проверяет, была ли установлена эта переменная, что возможно только в том случае, если форма была отправлена
Затем, с помощью функции empty() происходит проверка, не являются ли переменные пустыми. Функция preg_match() сравнивает значение пеменной $email с регулярным выражением «/([\w\-]+\@[\w\-]+\.[\w\-]+)/» для того, чтобы проверить, присутствуют ли в адресе электронной почты обязательные символы «@» и «.»
Если все проверки выполняются успешно, сообщение отправляется на электронную почту, а пользователь видит сообщение об успешной отправке отзыва.
На рисунках 153-154 показаны результаты работы указанных в скрипте проверок.
Рисунок 153 – Реакция на попытку оставить пустой отзыв |
Рисунок154 – Реакция на успешную отправку отзыва |
