Pull to refresh

Работа с формами HTML

Предлагаю вашему вниманию серию примеров работы с формами html на php. Примеры рассчитаны на новичков в php, желающих научиться самостоятельно генерировать формы и обрабатывать введенные пользователем результаты.

Пример 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
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.