Последнее обновление:
Как передать параметры в URL при запросе на сервер в PHP
Казалось бы, нет ничего более простого. Например, у нас есть сайт под названием site.com
. На сайте в корневом каталоге есть РНР-скрипт prog.php
и мы хотим передать туда запрос, в нем указать параметры, скажем, такие: X
и Y
. Тогда наш GET-запрос на сервер может выглядеть примерно так (в виде строки URL):
http://site.com/prog.php?X&Y
Вроде, это типичный, практически всегда используемый способ. Кстати, можно задать для этих переменных какие-либо значения, тогда они тоже передадутся на сервер, например:
http://site.com/prog.php?X=2&Y=3
Однако, есть случаи, когда этот способ или неудобен, или не срабатывает по тем или иным причинам. Редко, но бывает.
Второй способ, уже подзабытый
Для этой цели можно использовать переменную окружения $_SERVER['PATH_INFO']
Она содержит любой предоставленный пользователем путь, содержащийся после имени скрипта, но до строки запроса, если она есть. Например, если текущий скрипт запрошен по URL http://www.site.com/prog.php/X/Y?foo=bar
, то переменная $_SERVER['PATH_INFO']
будет содержать /X/Y/
. Кроме того, в запросе также будет переменная foo, которая равна bar. Иными словами:
$_REQUEST['foo'] = bar
Иными словами, все, что идет после имени скрипта РНР (в данном случае, prog.php
) и до ПРАВОГО знака вопроса «?
», передается на сервер в переменную окружения $_SERVER['PATH_INFO']
.
Этот способ соответствует стандартам, т.е. задокументирован в соответствующих RFC. Однако, ныне он практически не используется, за исключением тех случаев, когда без него просто не обойтись. В частности, речь идет о ситуациях, когда ряд браузеров отправляют запрос самостоятельно, руководствуясь тегами, имеющимися на вебстранице. Напомним, что к подобным тегам относятся
a
(ссылка),link
(подключает ресурсы, например, файлы SCC),script
(скрипт на стороне клиента),img
(рисунок, изображение),video
(видео),- и т.д.
Так вот, с некоторыми тегами может не получиться широко известный способ, обсуждаемый первым (через $_REQUEST
).
Так что те, кто занимается разработкой сайтов, имейте в виду этот способ тоже.