Довольно часто вам придется узнавать URL текущей страницы в своем PHP приложении. Например, если вам нужно сделать какое-то конкретное действие в зависимости от фактического URL адреса.
В языке программирования PHP есть некоторые встроенные глобальные переменные, которые делают процесс получения текущего URL-адреса довольно простым. Вы можете получить любую информацию о текущем URL с помощью суперглобального массива $_SERVER
.
С помощью этого массива вы можете получить название доменного имени, название скрипта, параметры URL или их варианты.
Теперь давайте посмотрим, как это работает. Для примера давайте возьмем следующую сложную структуру URL адреса:
http://www.sebweo.com/test/some-script.php?city=Kyiv&start=482
Давайте разберем этот URL на составные части:
http
– это протоколsebweo.com
– это имя хоста (доменное имя).test
– это каталог, в котором размещен PHP скриптsome-script.php
– это фактическое имя PHP скриптаcity=Kyiv
– это первый параметр URL (город) и его значение (Kyiv)start=482
– это второй параметр URL (start) и его значение (482)
А теперь давайте попробуем создать тот же URL с помощью PHP.
Протокол URL ссылки может быть получен из переменной $_SERVER['SERVER_PROTOCOL']
.
<?php echo $_SERVER['SERVER_PROTOCOL']; ?>
Однако, если вы запустите этот код, вы получите значение не просто http или https, а такую строку: HTTP/1.1
Чтобы получить чистую строку протокола, нам нужно провести определенные манипуляции с этим значением:
<?php $protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']), 'https') === FALSE ? 'http' : 'https'; echo $protocol; ?>
На следующем шаге мы выясним имя хоста. Для этого используется значение массива $_SERVER['HTTP_HOST']
. Вы можете использовать это так:
<?php $hostame = $_SERVER['HTTP_HOST']; echo $hostame; ?>
Значение $_SERVER['SCRIPT_NAME']
содержит полный путь с именем фактического PHP сценария. Вы можете это использовать так:
<?php $script = $_SERVER['SCRIPT_NAME']; echo $script; ?>
Последняя часть текущего URL-адреса содержится в значении $_SERVER['QUERY_STRING']
и вы можете его использовать так:
<?php $params = $_SERVER['QUERY_STRING']; echo $params; ?>
/test/some-script.php?city=Kyiv&start=482
)Если для вас не важны протокол и имя хоста (домен), а только путь, имя скрипта и параметры URL, вы можете просто использовать конструкцию $_SERVER['REQUEST_URI']
следующим образом:
<?php $uri = $_SERVER['REQUEST_URI']; echo $uri; ?>
Таким образом, чтобы получить полный URL текущей страницы с помощью PHP, это можно сделать так:
<?php $protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']), 'https') === FALSE ? 'http' : 'https'; $hostame = $_SERVER['HTTP_HOST']; $script = $_SERVER['SCRIPT_NAME']; $params = $_SERVER['QUERY_STRING']; $currentUrl = $protocol . '://' . $hostame . $script . '?' . $params; echo $currentUrl; ?>
ВАЖНО. Записи в суперглобальном массиве $_SERVER
создаются веб-сервером. Нет гарантии, что все веб-серверы предоставят любую из этих записей; сервер может опустить некоторые из них или предоставить другие, не указанные здесь. Однако, многие из этих переменных присутствуют в спецификации CGI/1.1, поэтому вы можете ожидать их поддержку сервером.
Грехи других судить вы так усердно рветесь, начните со своих и до чужих не доберетесь… Read More
Люди, между которыми есть любовь и взаимопонимание, скрепляют отношения и зарождают новый союз, а дату… Read More
Для качественного SEO (поисковой оптимизации, раскрутки сайта) одним из важных показателей является Авторитет домена (Domain… Read More
Выяснение того, как вывести свои деньги с PayPal, является одним из первых вопросов, которыми озадачивается… Read More
Юбка – мощный элемент женского гардероба, благодаря которому любой наряд будет выглядеть потрясающе стильно и… Read More
Поисковые системы (например, Google) проверяют технические характеристики вашего сайта, такие как скорость загрузки, удобство навигации,… Read More