Получаем текущий url страницы
Возможности по получению адреса, на которой находится пользователь, можно назначить на серверную сторону, чтобы оптимизировать скорость загрузки у посетителей сайта.
Описание супермассива
В PHP информация, связанная с работой сервера, записывается в супермассив $_SERVER, поэтому обращаться к конкретному элементу в нём нужно через квадратные скобки и кавычки внутри них. Аналогичным образом ($_GET, $_POST и так далее) можно узнать значения определённых HTTP-заголовков и cookie, проверить их существование в целом и выполнять различные действия.
В состав массива входит масса индексов, рассмотренных на странице официальной документации языка. В получении адреса скрипта, который сейчас выполняется, понадобится использовать ‘PHP_SELF’, однако он не подойдёт в случае, если страница «склеивается» из нескольких частей – если нужно вывести адрес посещаемого клиентом документа, стоит использовать ‘REQUEST_URI’.
Некоторые входящие в массив индексы могут использоваться при разработке консольных приложений и при запуске PHP-скриптов в терминале (командной строке).
Примеры использования
Получение адреса скрипта
<? print($_SERVER[‘PHP_SELF’]);?>
Результат: вывод расположения скрипта без учёта папок по типу public_htmlи доменного имени ресурса.
Чтобы указать абсолютное местонахождение выполняемого кода (с учётом «технических» директорий) следует написать следующее:
<? print(__FILE__); ?>
Получение адреса страницы
Код имеет следующий вид:
<? print ($_SERVER[‘REQUEST_URI’]);?>
Как и в предыдущем случае, для вывода полного пути следует использовать константу __FILE__.
Вывод адреса без HTTP-параметров
<? print($_SERVER[‘REQUEST_SCHEME’].’://’.$_SERVER[‘HTTP_HOST’] .explode(‘?’, $_SERVER[‘REQUEST_URI’], 2)[0]);?>
За удаление GET-параметров отвечает участок кода с explode();. Если они нужны, следует воспользоваться этим методом:
<? print($_SERVER[‘REQUEST_SCHEME’].’://’.$_SERVER[‘HTTP_HOST’]);?>
Советуется устанавливать регулярные выражения для валидации GET-данных, особенно если они будут выводиться на стороне клиента. Иначе сайт может оказаться уязвимым для XSS-атак.
