Досить часто вам доведеться дізнаватися 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, тому ви можете очікувати на їх підтримку сервером.
Сьогоднішній огляд присвячений людям, для яких важливе питання конфіденційності в Інтернеті, та хто цінує свої…
Вперше про бренд Pro Plan почули у 1986 році, коли він став частиною американської компанії…
Страх покарання гірше самого покарання (Покарання — завжди щось конкретне, і воно все ж краще,…
Якщо ви плануєте розмістити веб-сайт в мережі Інтернет, дуже важливо знайти для нього швидкий і…
Навчання за кордоном вже давно асоціюється з якісною освітою, новими можливостями та безліччю перспектив. Але…
Вибір майстра для ремонту та перетяжки меблів – завдання, яке потребує вдумливого підходу. Адже від…