0Pricing
PHP Academy · Урок

Чтение данных формы через суперглобальные переменные

Получайте доступ к полям формы через массивы _GET и _POST

«Чтение данных формы через суперглобальные переменные» — бесплатный урок PHP Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.

Суперглобальные массивы PHP

Суперглобальные массивы — это встроенные массивы PHP, доступные во всех областях видимости; для доступа к ним в функциях не нужно использовать global.

Суперглобальные массивы, связанные с формами: $_GET, $_POST, $_FILES, $_REQUEST

Доступ к полям отправленной формы

Читайте значения полей формы POST, обращаясь к ключам массива и задавая значение по умолчанию:

<?php
// Safe access with null coalescing
$username = $_POST['username'] ?? '';
$email    = $_POST['email']    ?? '';
$age      = (int) ($_POST['age'] ?? 0);

var_dump($username, $email, $age);

Доступ к параметрам GET

Читайте параметры строки запроса адреса из данных GET:

<?php
// URL: /products.php?category=electronics&page=2&sort=price

$category = $_GET['category'] ?? 'all';
$page     = max(1, (int) ($_GET['page'] ?? 1));
$sort     = in_array($_GET['sort'] ?? '', ['price', 'name', 'date'])
            ? $_GET['sort']
            : 'name';

echo "Category: $category, Page: $page, Sort: $sort";

Обработка флажков

Непомеченные флажки не отправляются — всегда проверяйте их с помощью isset или ??:

<?php
// HTML: <input type="checkbox" name="newsletter">

$wantsNewsletter = isset($_POST['newsletter']);
// or:
$wantsNewsletter = ($_POST['newsletter'] ?? null) !== null;

echo $wantsNewsletter ? 'Subscribed' : 'Not subscribed';

Массивы для множественного выбора и флажков

Используйте атрибуты name в формате массива, чтобы собрать несколько значений:

<!-- HTML -->
<!-- <input type="checkbox" name="tags[]" value="php"> -->
<!-- <input type="checkbox" name="tags[]" value="mysql"> -->

<?php
$tags = $_POST['tags'] ?? [];

if (!is_array($tags)) $tags = [];

foreach ($tags as $tag) {
    echo htmlspecialchars($tag) . PHP_EOL;
}

Сведения о сервере

Серверные данные предоставляют сведения о сервере и окружении запроса:

<?php
echo $_SERVER['REQUEST_METHOD'];   // GET or POST
echo $_SERVER['REQUEST_URI'];       // /page.php?foo=bar
echo $_SERVER['HTTP_HOST'];         // example.com
echo $_SERVER['REMOTE_ADDR'];       // client IP
echo $_SERVER['HTTP_USER_AGENT'];   // browser string

filter_input()

filter_input() за один шаг считывает и очищает значения суперглобальных массивов:

<?php
// Retrieve and validate an integer from POST
$age = filter_input(INPUT_POST, 'age', FILTER_VALIDATE_INT);
if ($age === false) {
    echo 'Invalid age';
}

// Retrieve and sanitize a string from GET
$name = filter_input(INPUT_GET, 'name', FILTER_SANITIZE_SPECIAL_CHARS);
echo $name;

filter_var() для проверки

Проверяйте и очищайте значения, которые уже находятся в переменных:

<?php
$email = 'user@example.com';
$ip    = '192.168.1.1';
$url   = 'https://example.com';

var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));  // string
var_dump(filter_var($ip,    FILTER_VALIDATE_IP));     // string
var_dump(filter_var($url,   FILTER_VALIDATE_URL));    // string

Очистка и проверка

Два режима filter_var:

  • FILTER_VALIDATE_* — возвращает значение, если оно корректно, и false в противном случае
  • FILTER_SANITIZE_* — удаляет или кодирует опасные символы и возвращает очищенное значение

Обработка отправленных файлов

Массив отправленных файлов содержит метаданные загруженного файла — у каждого файла есть пять ключей:

<?php
if (isset($_FILES['avatar'])) {
    $file = $_FILES['avatar'];
    
    echo $file['name'];     // original filename: photo.jpg
    echo $file['type'];     // MIME type: image/jpeg
    echo $file['size'];     // bytes: 45231
    echo $file['tmp_name']; // temp path on server
    echo $file['error'];    // 0 = no error
}

Шаблон обработки всей формы

Удобный шаблон обработки отправки формы с проверкой данных:

<?php
$errors = [];
$name   = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = trim($_POST['name'] ?? '');
    if (empty($name)) {
        $errors[] = 'Name is required';
    }
    if (empty($errors)) {
        // process...
        header('Location: /thanks.php');
        exit;
    }
}

Быстрая проверка

Что отправляет PHP-сервер, если флажок не отмечен?

Повторение: суперглобальные массивы

Основные суперглобальные массивы для форм:

  • $_GET — параметры адреса
  • $_POST — тело запроса
  • $_FILES — сведения об отправленных файлах
  • $_SERVER — окружение сервера и запроса
  • Используйте ?? для безопасного доступа со значением по умолчанию
  • Используйте filter_input() для одновременного получения и проверки данных

Часто задаваемые вопросы

Урок «Чтение данных формы через суперглобальные переменные» бесплатный?

Да — полный текст урока «Чтение данных формы через суперглобальные переменные» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.

Чему я научусь в уроке «Чтение данных формы через суперглобальные переменные»?

Получайте доступ к полям формы через массивы _GET и _POST Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать PHP Academy?

Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Чтение данных формы через суперглобальные переменные»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке PHP Academy?

Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. GET и POST: когда использовать каждый метод
  2. Чтение данных формы через суперглобальные переменные
  3. Методы проверки входных данных
  4. Очистка пользовательского ввода
← Назад к PHP Academy