#2 php GET-параметры: приветствие по имени, Пример обработки Get-параметров
Primary tabs
В уроке про страницу с датой скрипт сам решал, что вывести. Теперь передадим серверу данные прямо в адресе страницы: браузер как бы «задаёт вопрос», а скрипт отвечает с учётом запроса.
Немного теории
Вспомните, как PHP взаимодействует с сервером и клиентом: всё, что пришло в запросе, PHP ещё до запуска скрипта собирает в специальные массивы — параметры из адреса попадают в $_GET, а данные, отправленные формой, — в $_POST (с ним поработаем в уроках про формы).
Шаг 1. Добавляем параметр в адрес
Откройте страницу урока: http://localhost:19791/lessons/lesson02-get-name/ — скрипет поприветствует «незнакомца».
А теперь допишите в адрес после знака вопроса параметр: http://localhost:19791/lessons/lesson02-get-name/?name=Вася — страница ответит: «Привет, Вася!»
Часть адреса после ? называют строкой запроса: это пары вида имя=значение, разделённые знаком &. Устройство ссылок и URL мы подробно разбирали в уроке HTML&CSS-курса про ссылки.
Шаг 2. Читаем параметр в PHP
Вот весь код страницы (index.php):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Привет по имени</title>
</head>
<body>
<h1>Привет!</h1>
<?php
if (isset($_GET['name'])) {
$name = $_GET['name'];
echo '<p>Привет, ' . $name . '!</p>';
} else {
echo '<p>Привет, незнакомец!</p>';
}
?>
</body>
</html>
Разберём новые моменты:
$_GET— это ассоциативный массив: у каждого элемента есть строковый ключ. Ключ'name'совпадает с именем параметра в адресе — про массивы читайте в учебнике «Создание массивов»;- проверка
isset()убеждается, что параметр вообще передан: без неё обращение к отсутствующему элементу вызвало бы предупреждение (документация — php.net/manual/ru/function.isset.php); - точка «склеивает» строки — это строковые операторы из учебника;
- само ветвление — обычный оператор if с else.
Что произошло на самом деле
Когда вы открыли адрес с ?name=Вася, браузер отправил серверу GET-запрос; сервер передал строку запроса PHP; PHP разложил пары в массив $_GET — и только потом запустил наш код. Обновите страницу: приветствие не меняется, ведь параметры остались в адресе, а каждый запрос выполняет скрипт заново.
Попробуйте сами
- поприветствуйте кого-нибудь ещё:
?name=Аня; - передайте два параметра:
?name=Вася&city=Воронеж— второй будет доступен как$_GET['city']. Доработайте страницу так, чтобы она печатала и город.
Итоги
- данные можно передавать серверу прямо в адресе — после
?, парамиимя=значениечерез&; - PHP до старта скрипта собирает эти пары в массив
$_GET; - прежде чем читать элемент массива, стоит проверить его наличие через
isset().
В следующем уроке возьмём из адреса два числа и сравним их.
- Log in to post comments
- 13 reads