Предлагаю вашему вниманию серию примеров работы с формами html на php. Примеры рассчитаны на новичков в php, желающих научиться самостоятельно генерировать формы и обрабатывать введенные пользователем результаты.
Всё просто. Принятие решения, какую страницу выводить, отделяем от вывода формы и от обработки результата.
Глобальная переменная $_SERVER['REQUEST_METHOD'] содержит метод, который был использован для запроса страницы: 'GET' — при вводе адреса страницы в браузере, затем после отправки формы — 'POST'.
$_SERVER['SCRIPT_NAME'] — содержит путь к текущему исполняемому скрипту. Это позволяет не менять код программы при её переименовании.
Функция htmlentities преобразует все символы в html-сущности, как указано в описании. Это позволяет корректно выводить в браузере введенные пользователем знаки разметки html и защищает от межсайтовых сценарных атак. Помимо экранирования одиночных кавычек (параметр ENT_QUOTES), необходимо также проверять пользовательский ввод и на соответствие введенных символов кодировке. Однако с последним будем разбираться позднее.
Можно применить для вывода html-кода формат heredoc:
Мне кажется, что heredoc затрудняет чтение, однако, если вам проще такой код — используйте его.
Результат вывода формы будет примерно таким:
Далее разберемся как проверять пользовательский ввод.
При написании использовал книгу PHP. Рецепты программирования
Часть 2
Пример 1. Отображение формы и обработка полученных данных
<?php
//принятие решения
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
formShow();
} else {
formResult();
}
//вывод формы
function formShow() {
echo '<form action="'.htmlentities($_SERVER['SCRIPT_NAME']).'" method="post">'."\n";
echo 'Введите имя:<br>'."\n";
echo '<input type="text" name="name" /><br>'."\n";
echo '<input type="submit" value="Отправить" />'."\n";
echo '</form>'."\n";
}
//обработка ввода
function formResult() {
echo '<form action="'.htmlentities($_SERVER['SCRIPT_NAME']).'" method="get">'."\n";
echo 'Привет, '.htmlentities($_POST['name'], ENT_QUOTES).'!!!<br>'."\n";
echo '<input type="submit" value="Повторить" />'."\n";
echo '</form>'."\n";
}
Всё просто. Принятие решения, какую страницу выводить, отделяем от вывода формы и от обработки результата.
Глобальная переменная $_SERVER['REQUEST_METHOD'] содержит метод, который был использован для запроса страницы: 'GET' — при вводе адреса страницы в браузере, затем после отправки формы — 'POST'.
$_SERVER['SCRIPT_NAME'] — содержит путь к текущему исполняемому скрипту. Это позволяет не менять код программы при её переименовании.
Функция htmlentities преобразует все символы в html-сущности, как указано в описании. Это позволяет корректно выводить в браузере введенные пользователем знаки разметки html и защищает от межсайтовых сценарных атак. Помимо экранирования одиночных кавычек (параметр ENT_QUOTES), необходимо также проверять пользовательский ввод и на соответствие введенных символов кодировке. Однако с последним будем разбираться позднее.
Можно применить для вывода html-кода формат heredoc:
function formShow() {
$script = htmlentities($_SERVER['SCRIPT_NAME']);
echo <<< FORM
<form action="$script" method="post">
Введите имя:<br>
<input type="text" name="name" /><br>
<input type="submit" value="Отправить" />
</form>
FORM;
}
Мне кажется, что heredoc затрудняет чтение, однако, если вам проще такой код — используйте его.
Результат вывода формы будет примерно таким:
<form action="/form_1.php" method="post">
Введите имя:<br>
<input type="text" name="name" /><br>
<input type="submit" value="Отправить" />
</form>
Далее разберемся как проверять пользовательский ввод.
При написании использовал книгу PHP. Рецепты программирования
Часть 2