Работа с query string

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

Тренажер PHP

В этом модуле мы разберем работу с Query String (строкой запроса) в PHP. Вы узнаете, как получать данные из URL с помощью суперглобального массива $_GET, как правильно формировать ссылки с параметрами, используя http_build_query, и как безопасно обрабатывать входящие данные. Мы также рассмотрим разницу между urlencode и rawurlencode, и научимся работать с сырой строкой запроса через $_SERVER['QUERY_STRING']. Эти навыки необходимы для создания динамических веб-страниц, фильтров каталогов и передачи данных между страницами методом GET.

Список тем

1. Чтение параметров из URL

id: 39038_task1

Представьте, что скрипт запущен по адресу script.php?category=books&sort=price. Что выведет данный код?

Выберите правильный вариант ответа
if (isset($_GET['category'])) {
    echo $_GET['category'];
} else {
    echo 'all';
}
Сообщения
Проверить
Показать подсказку

2. Получение ID из запроса

id: 39038_task2

Допишите код так, чтобы получить значение параметра id из URL и привести его к целому числу. Например, для ?id=42.

Заполните пропуски
$id = (int) input1S['input2S'];
echo "Товар №" . $id;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Кодирование и декодирование URL

id: 39038_task3

Распределите функции PHP по их назначению: те, что создают/кодируют параметры для URL, и те, что разбирают/декодируют их.

Перетяните элементы в соответствующие блоки
Создание строки (Encode/Build)
Разбор строки (Decode/Parse)
urlencode()
urldecode()
http_build_query()
parse_str()
rawurlencode()
Сообщения
Проверить
Показать подсказку

4. Результат кодирования пробелов

id: 39038_task4

Стандартная функция urlencode заменяет пробелы на плюсы. Что выведет следующий код? Введите точный результат.

Что должно получиться?
$search = "hello world";
echo "q=" . urlencode($search);
Сообщения
Проверить
Показать подсказку

5. Ошибка в имени суперглобальной переменной

id: 39038_task5

Разработчик хотел получить "сырую" строку запроса (всё, что после знака вопроса), но допустил опечатку в обращении к $_SERVER. Найдите и исправьте ошибку.

Найдите ошибку и исправьте
<?php
// URL: index.php?a=1&b=2
$queryString = $_SERVER['QUERY_PARAMS'];
echo $queryString;
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

6. Генерация ссылки с параметрами

id: 39038_task6

Используйте функцию http_build_query для создания корректной строки параметров из массива. Это самый надежный способ формирования ссылок.

Нужно правильно расставить в пропуски предложенные варианты
$data = [
    'city' => 'Moscow',
    'tag'  => 'new year'
];
$query = input1S(input2S);
echo '<a href="/search.php?' . $query . '">Search</a>';
http_build_query
$data
urlencode
implode
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

7. Безопасная проверка и чтение параметра

id: 39038_task7

Восстановите логический порядок проверки существования GET-параметра. Сначала мы должны проверить наличие ключа, затем присвоить его, или присвоить значение по умолчанию.

Расставьте строки в правильном порядке
echo "Текущая страница: " . $page;
$page = $_GET['page'];
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
<?php
Сообщения
Проверить
Показать подсказку

8. Разбор строки запроса в массив

id: 39038_task8

Соберите код, который берет строку "a=1&b=2", разбирает её с помощью parse_str и сохраняет результат в массив $output. Обратите внимание: parse_str принимает второй аргумент для сохранения результата.

Перетяните в правильном порядке строки из одного блока в другой
$qs = "module=news&id=10";
parse_str($qs, $output);
print_r($output);
parse_str($qs);
$output = parse_str($qs);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

9. Особенности кодирования символов

id: 39038_task9

Сопоставьте исходный символ или задачу с результатом работы функций urlencode и rawurlencode. (RFC 3986 vs x-www-form-urlencoded).

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
Пробел в urlencode
Пробел в rawurlencode
Тильда (~) в rawurlencode
%20
~ (не кодируется)
+
Сообщения
Проверить
Показать подсказку

PHP: запуск кода в браузере

id: 39038_compiler
🐘
Запустить тренажёр (PHP)
НайтиКурс.Ру