Обработка GET-запросов

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

Этот тренажер посвящен обработке данных, передаваемых через URL, с помощью GET-запросов в PHP. Вы научитесь считывать параметры из адресной строки, проверять их наличие и безопасно выводить на страницу. Задания построены от самых основ, вроде доступа к суперглобальному массиву $_GET, до более сложных тем, таких как обеспечение безопасности с помощью `htmlspecialchars` и использование оператора нулевого слияния для значений по умолчанию. Пройдя этот набор упражнений, вы сможете уверенно работать с формами и данными из URL в своих проектах.

Список тем

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

id: 39041_task_get_1

Представьте, что на ваш скрипт пришел запрос по URL `index.php?name=Alex`. Вам нужно получить значение параметра 'name'. Впишите в код правильное имя суперглобального массива, который используется для доступа к данным GET-запроса.

Заполните пропуски
<?php
// URL: index.php?name=Alex
$userName = input1S['name'];
echo "Привет, " . $userName;
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Исправьте ошибку доступа к ключу

id: 39041_task_get_2

В коде допущена распространенная ошибка при обращении к элементу ассоциативного массива. Найдите и исправьте ее. Скрипт должен вывести "Книга" на основе данных из URL.

Найдите ошибку и исправьте
<?php
// URL: store.php?product=Книга
echo $_GET[product];
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Что выведет код?

id: 39041_task_get_3

Проанализируйте URL, указанный в комментарии, и определите, какое значение будет выведено на экран в результате выполнения этого PHP-кода.

Выберите правильный вариант ответа
<?php
// URL: /search.php?region=EU&city=Paris
$location = $_GET['city'];
echo $location;
?>
Сообщения
Проверить
Показать подсказку

Соберите безопасную проверку параметра

id: 39041_task_get_4

Соберите PHP-скрипт, который проверяет, был ли передан параметр 'user' в GET-запросе. Если да, он выводит приветствие. Используйте только необходимые части и разместите их в правильном порядке.

Перетяните в правильном порядке строки из одного блока в другой
<?php
    echo "Привет, " . $_GET['user'];
}
if (isset($_GET['user'])) {
echo $_POST['user'];
if (empty($_GET['user'])) {
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Сопоставьте термины и их описания

id: 39041_task_get_5

Сопоставьте термины, связанные с GET-запросами, с их правильными определениями. Перетащите элементы из правого столбца так, чтобы они соответствовали терминам в левом.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
$_GET
Query String
htmlspecialchars()
URL Encoding
Часть URL, идущая после '?', содержит пары ключ=значение.
Суперглобальный массив PHP для доступа к параметрам из URL.
Процесс кодирования небезопасных символов (пробел, &, /) для передачи в URL.
Функция для преобразования спецсимволов HTML в их сущности, чтобы предотвратить XSS-атаки.
Сообщения
Проверить
Показать подсказку

Защитите вывод от XSS-атаки

id: 39041_task_get_6

Приведенный код уязвим для межсайтового скриптинга (XSS), так как он выводит данные от пользователя без обработки. Исправьте строку с `echo`, чтобы сделать вывод безопасным.

Найдите ошибку и исправьте
<?php
// URL: index.php?comment=<script>alert('XSS')</script>
if (isset($_GET['comment'])) {
    echo "Ваш комментарий: " . $_GET['comment'];
}
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Предскажите результат с оператором `??`

id: 39041_task_get_7

В коде используется оператор нулевого слияния (`??`) для установки значения по умолчанию. Определите, что выведет скрипт, если URL не содержит параметра 'user', и впишите результат в поле.

Что должно получиться?
<?php
// URL: /home.php
$username = $_GET['user'] ?? 'Guest';
echo $username;
?>
Сообщения
Проверить
Показать подсказку

Соберите обработчик пагинации из банка

id: 39041_task_get_8

Заполните пропуски в коде, чтобы создать корректный обработчик номера страницы. Скрипт должен брать номер страницы из GET-параметра 'page', приводить его к целому числу и устанавливать значение по умолчанию `1`, если параметр отсутствует. Перетащите токены из банка в нужные места.

Нужно правильно расставить в пропуски предложенные варианты
<?php
// URL: /products.php?page=3
$page = isset(input1S['page']) ? (int)input2S['page'] : 1;

echo "Вы на странице номер: " . input3S;
?>
$_GET
$page
$_GET
$_POST
'page'
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Восстановите порядок обработчика формы поиска

id: 39041_task_get_9

Расставьте строки кода в правильной последовательности. Скрипт должен принимать поисковый запрос (`query`) и категорию (`category`) из GET-параметров, устанавливать для категории значение по умолчанию 'all' и выводить безопасное сообщение о поиске.

Расставьте строки в правильном порядке
if (!empty($_GET['query'])) {
<?php
}
?>
    echo "Поиск '" . htmlspecialchars($_GET['query']) . "' в категории '" . $category . "'";
$category = $_GET['category'] ?? 'all';
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру