CascadiaPHP 2024

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

Список преимуществ PHP дополняет способ обработки HTML-форм. Основа заключается в том, что PHP-скрипт автоматически получает доступ к каждому элементу формы. Подробнее о работе с формами в PHP рассказывает раздел « Переменные из внешних источников». Вот пример HTML-формы:

Пример #1 Простейшая HTML-форма

<form action="action.php" method="post">
    <label for="name">Имя:</label>
    <input name="name" id="name" type="text">

    <label for="age">Возраст:</label>
    <input name="age" id="age" type="number">

    <button type="submit">Отправить</button>
</form>

В этой форме нет ничего особенного. Это обычная HTML-форма без каких-либо специальных тегов. Когда пользователь заполнит форму и нажмёт кнопку отправки, PHP вызовет страницу action.php. В файле пишут что-то вроде этого:

Пример #2 Выводим данные формы

Привет, <?php echo htmlspecialchars($_POST['name']); ?>.
Тебе <?php echo (int)$_POST['age']; ?> лет.

Пример вывода программы:

Привет, Сергей. Тебе 30 лет.

Кроме частей, в которых вызывается функция htmlspecialchars() и приводится тип (int), понятно, что делает код. Функция htmlspecialchars() гарантирует, что специальные HTML-символы правильно закодировались, поэтому люди не смогут внедрить HTML-теги или Javascript-код на страницу. Поскольку известно, что поле age — число, можно просто преобразовать значение в целое число (int), что автоматически избавит нас от случайных символов. PHP также может сделать это автоматически через модуль filter. PHP автоматически устанавливает переменные в элементах $_POST['name'] и $_POST['age']. Раньше мы использовали суперглобальную переменную $_SERVER, а здесь мы точно так же используем суперглобальную переменную $_POST, которая содержит POST-данные. Обратите внимание, что для атрибута method в форме установили значение POST. Если бы указали метод GET, информацию формы содержала бы суперглобальная переменная $_GET. В коде также обращаются к суперглобальной переменной $_REQUEST, если источник данных запроса не имеет значения. Эта переменная содержит объединенную информацию о GET-, POST- и COOKIE-данных.

PHP также умеет работать с входными данными XForms-форм, хотя вы найдёте работу с обычными HTML-формами комфортной уже через некоторое время. Хотя работа с формами, которые составили по технологии XForms, — не для новичков, они могут вас заинтересовать. Раздел о возможностях языка PHP также содержит короткое введение в обработку данных форм XForms.

add a note

User Contributed Notes 2 notes

up
108
sethg at ropine dot com
20 years ago
According to the HTTP specification, you should use the POST method when you're using the form to change the state of something on the server end. For example, if a page has a form to allow users to add their own comments, like this page here, the form should use POST. If you click "Reload" or "Refresh" on a page that you reached through a POST, it's almost always an error -- you shouldn't be posting the same comment twice -- which is why these pages aren't bookmarked or cached.

You should use the GET method when your form is, well, getting something off the server and not actually changing anything. For example, the form for a search engine should use GET, since searching a Web site should not be changing anything that the client might care about, and bookmarking or caching the results of a search-engine query is just as useful as bookmarking or caching a static HTML page.
up
-6
Johann Gomes (johanngomes at gmail dot com)
13 years ago
Also, don't ever use GET method in a form that capture passwords and other things that are meant to be hidden.
To Top