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

Список преимуществ 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-данных.