Как получить get параметр php
Перейти к содержимому

Как получить get параметр php

  • автор:

Отправка данных на сервер

Самым простым способом передачи данных на сервер приложению PHP извне представляет передача данных через строку запроса.

Строка запроса представляет набор параметров, которые помещаются в адресе после вопросительного знака. При этом каждый параметр определяет название и значение. Например, в адресе:

http://localhost/user.php?name=Tom&age=36

Часть ?name=Tom&age=36 представляет строку запроса, в которой есть два параметра name и age . Для каждого параметра определено имя и значение, которые отделяются знаком равно. Параметр name имеет значение «Tom», а параметр age — значение 36. Друг от друга параметры отделяются знаком амперсанда.

Например, определим следующий скрипт user.php со следующим содержимым:

 if(isset($_GET["age"])) < $age = $_GET["age"]; >echo "Имя: $name 
Возраст: $age"; ?>

Когда мы вводим в адресную строку браузера некий адрес и нажимаем на оправку, то серверу отправляется запрос типа GET . В PHP по умолчанию определен глобальный ассоциативный массив $_GET , который хранит все значения, передаваемые в запроса GET. Используя ключи передаваемых данных, мы можем из массива $_GET получить передаваемые значения.

При отправки строки запроса ключами в этом массиве будут названия параметров, а значениями — значения параметров.

Например, в строке запроса передается параметр name=Tom . Соответственно, чтобы получить значение параметра name из запроса, обращаемся по соответствующему ключу:

$name = $_GET["name"]; // Tom

Однако стоит учитывать, что в адресной строке необязательно будет использоваться строка запроса или конкретно данный параметр. Поэтому перед получением значения параметра сначала смотрим, а передан ли вообще такой параметр:

if(isset($_GET["name"]))

Теперь обратимся к этому скрипту, например, так http://localhost/user.php?name=Tom&age=36 :

Массив <img decoding=

GET в PHP и строка запроса" />GET в PHP и строка запроса" />

Если мы не передадим значения какого-либо параметра, то соответствующая переменная будет использовать значение по умолчанию:

$_GET

Ассоциативный массив переменных, переданных скрипту через параметры URL (известные также как строка запроса). Обратите внимание, что массив не только заполняется для GET-запросов, а скорее для всех запросов со строкой запроса.

Примеры

Пример #1 Пример использования $_GET

echo 'Привет, ' . htmlspecialchars ( $_GET [ "name" ]) . '!' ;
?>

Подразумевается, что пользователь ввёл в браузере адрес http://example.com/?name=Иван

Вывод приведённого примера будет похож на:

Привет, Иван!

Примечания

Замечание:

Это «суперглобальная» или автоматическая глобальная переменная. Это просто означает, что она доступна во всех контекстах скрипта. Нет необходимости выполнять global $variable; для доступа к ней внутри метода или функции.

Замечание:

Параметры GET обрабатываются urldecode() .

Смотрите также

  • Переменные извне PHP
  • Фильтрация данных

Получить все значения параметра GET-запроса

Язык php. Вызывается скрипт, которому передается следующая строка get-параметров: post=5&related=thread&related=forum&related=user . Как получать одиночные параметры из нее мне понятно ( $_GET['post'] ). А как получить из нее все значения параметра related , т.е. thread , forum и user ?

Отслеживать
задан 8 ноя 2015 в 19:24
Андрей Курулёв Андрей Курулёв
1,783 1 1 золотой знак 16 16 серебряных знаков 32 32 бронзовых знака

Проблема в том, что от меня не зависит, что придет на сервер. В качестве примера присылаемой строки мне дана post=5&related=thread&related=forum&related=user . И вот мне надо с ней как-то работать.

8 ноя 2015 в 19:40

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Получить ваши переменные как элементы массива можно вот так:

Отслеживать
ответ дан 8 ноя 2015 в 19:58
1,445 1 1 золотой знак 13 13 серебряных знаков 28 28 бронзовых знаков
Спасибо, практически так я это и реализовал.
8 ноя 2015 в 20:13

Если я не ошибаюсь, все что передается в запросе - это отдельные переменные, а не массив

Если хотите это как-то сгруппировать, то у вас должно быть что-то типа такого post=5&related=thread,forum,user .

А на сервере применить explode для отделения этих данных

В ином случае на стороне сервера, вы просто не сможете извлечь все данные из массива $_GET . Так как в него попадет только одно последнее значение related , в приведенном примере это будет user

Единственный способ достать на сервере эту строку будет использование массива $_SERVER , а конкретно $_SERVER['QUERY_STRING'] .

В таком случае надо будет написать свою функцию парсинга данной строки.

Получить GET-параметр из URL

Получить GET-параметр из URL

Иногда нужно быстро получить GET-параметр из строки с URL, в этом поможет PHP функция parse_url() .

$url = 'http://site.ru/path?email=mail@site.ru&name=site'; $parts = parse_url($url); parse_str($parts['query'], $query); // Все GET-параметры print_r($query); // Параметр «email» echo $query['email'];

Для частого использования лучше применять функцию:

function getUrlQuery($url, $key = null) < $parts = parse_url($url); if (!empty($parts['query'])) < parse_str($parts['query'], $query); if (is_null($key)) < return $query; >elseif (isset($query[$key])) < return $query[$key]; >> return false; > // Все GET-параметры $data = getUrlQuery('http://site.ru/path?email=mail@site.ru&name=site'); print_r($data); // Параметр «email» echo getUrlQuery('http://site.ru/path?email=mail@site.ru&name=site', 'email');
Результат:
Array( [email] => mail@site.ru [name] => site ) mail@site.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *