Как получить текущий URL в PHP?
Сформировать текущий адрес страницы можно с помощью элементов массива $_SERVER. Рассмотрим на примере URL:
Полный URL
$url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; echo $url;
Результат:
https://example.com/category/page?sort=asc
URL без GET-параметров
$url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $url = explode('?', $url); $url = $url[0]; echo $url;
Результат:
https://example.com/category/page
Основной путь и GET-параметры
$url = $_SERVER['REQUEST_URI']; echo $url;
Результат:
/category/page?sort=asc
Только основной путь
$url = $_SERVER['REQUEST_URI']; $url = explode('?', $url); $url = $url[0]; echo $url;
Результат:
/category/page
Только GET-параметры
echo $_SERVER['QUERY_STRING'];
Результат:
sort=asc
Для преобразования строки с GET-параметрами в ассоциативный массив можно применить функцию parse_str() .
parse_str('sort=asc&page=2&brand=rich', $get); print_r($get);
Результат:
Array ( [sort] => asc [page] => 2 [brand] => rich )
30.10.2019, обновлено 17.01.2021
Предыдущая запись Ссылки на e-mail
Следующая запись Счетчик просмотров страниц с графиком
Комментарии 2
17 марта 2020 в 11:38
Спасибо большое!
- Скопировать ссылку
- Пожаловаться
22 июля 2021 в 14:08
Как всегда. все просто и понятно))) Благодарю) Обожаю ваш сайт и манеру изложения информации)
Авторизуйтесь, чтобы добавить комментарий.
Другие публикации

Как получить данные из Google spreadsheets в виде массива PHP? Очень просто, Google docs позволяет экспортировать лист в формате CSV, главное чтобы файл был в общем доступе.

В продолжении темы работы с массивами поговорим о типичной задаче – их сортировке. Для ее выполнения в PHP существует множество функций, их подробное описание можно посмотреть на php.net, рассмотрим.
Как в PHP получить URL? Получение текущей ссылки в PHP. Переменная $_SERVER
В этой статье будет рассказано о том, как в языке программирования PHP получить адрес текущей страницы. Также вы узнаете о работе переменной $_SERVER.
Первое, о чём следует сказать, — зачем вообще получать ссылки (urls) в PHP? На практике варианты могут различаться. Представьте, что у нас для разных разделов применяется один и тот же шаблон. И возникает потребность в том, чтобы вывести (либо не вывести — зависит от ситуации) какой-нибудь специальный блок, причём в других разделах вывод этого блока не нужен.
В большинстве случаев мы пожелаем выполнить поставленную задачу по условию. То есть сделаем условие, в котором будем выполнять проверку того либо иного раздела. Можно сказать, что с точки зрения архитектуры данное решение не является оптимальным. Но на практике нам нередко достаются уже реализованные проекты, с которыми необходимо что-то решать с учётом уже имеющейся архитектуры.
Но давайте не будем много говорить, а лучше приступим к решению поставленной задачи — получению ссылки в PHP.
Получение ссылки текущей страницы в PHP
Для получения данных нужно обратиться к глобальной переменной в PHP, которая называется $_SERVER. Переменная $_SERVER представляет собой массив, содержащий много полезной информации. На практике $_SERVER может получать любые данные о текущем URL: — доменное имя; — название скрипта; — параметры URL.
По сути, в глобальном массиве $_SERVER хранятся и заголовки, и пути, и местоположения скриптов. Если вас интересует сразу вся информация, хранимая в массиве $_SERVER, воспользуйтесь следующим кодом на PHP. Он выведет всё, что хранится, сделав это в читабельном виде:
'; var_dump($_SERVER); echo ''; ?>
Идём дальше. Представьте, что у вас есть web-страница, имеющая следующий вид: http://localhost/php-lessons/url/?name=anna&city=Valencia. Тестирование в данном примере осуществляется на локальном сервере. Если надо тестировать код на реальном веб-сайте, доступном в интернете, достаточно вместо localhost прописать имя сайта (домен) — тот же otus.ru.
Что же мы увидим в подопытном url? Нас могут интересовать следующие данные: — адрес веб-страницы без GET-параметров; — URL с GET-параметрами; — непосредственно GET-параметры без текущей ссылки (адреса веб-страницы).
Лучше всего разобраться с каждым из случаев по отдельности — так будет гораздо понятнее.
Получение полного URL в PHP
Для получения полного URL вместе с имеющимися GET-параметрами, пригодится следующий код:
$url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; echo $url;Что здесь что? В первую очередь, осуществляется проверка, какой именно протокол передачи данных задействуется: https или http. В случае, если значение $_SERVER[‘HTTPS’] не является пустым, речь идёт о протоколе https, в обратном случае — http.
На втором этапе выполняется присоединение двоеточия и двух слэшев, имени домена и остальной части URL.
Итог выполнения кода будет следующим:
Если протокол получать не требуется, код на PHP можно немного сократить:
Смотрим на результат и видим, что протокол отсутствует:
Получение URL в PHP без GET-параметров
Иногда эти параметры, передаваемые в качестве части ссылки, нас не интересуют, то есть требуется получить адрес без них. Мы говорим о следующих параметрах: name=anna&city=Valencia.
В действительности их можно отсечь, используя функцию explode в PHP, разбивающую строку по разделителю. Не стоит объяснять, что ссылка представляет собой строку, а параметры GET начинают прописываться после «?». В результате вопросительный знак и станет разделителем, а функция explode сделает из строки массив с 2-мя элементами. Первый элемент станет содержать искомую ссылку без GET-параметров, так как эти самые параметры останутся во втором элементе.
Код на PHP с использованием переменной $_SERVER будет выглядеть так:
Получение только параметров GET
Эта операция тем более не вызывает сложностей. В данном случае код с использованием переменной $_SERVER будет выглядеть следующим образом:
С помощью этого кода получим:
Это всё. Надеемся, что теперь вы знаете, как происходит получение PHP ссылки и как работает глобальная переменная $_SERVER. Если же интересуют более продвинутые знания, записывайтесь на курсы OTUS!
PHP - получить url страницы
На странице выполняется php скрипт.
Адрес страницы типа: site.com/razdel/index.html
Скрипт лежит в корне, в отдельной папке.
Советы вроде $_SERVER['REQUEST_URI'] ведут к файлу скрипта
"/sendmail/sendmail.php"
Как в php получить адрес html страницы? Любые манипуляции с файлами, их расположением и структурой отвергаются.Отслеживать
задан 15 авг 2017 в 13:55
Данила Никонец Данила Никонец
338 1 1 золотой знак 3 3 серебряных знака 13 13 бронзовых знаков
А зачем у вас скрипт подменяет содержимое $_SERVER['REQUEST_URI'] ?
15 авг 2017 в 14:01
@Visman Может потому что скрипт находится в отдельной папке?
15 авг 2017 в 14:10Да просто интересно, зачем скрипту менять содержимое этой переменной. Обычно на ее основе делается роутинг и соответственно в ней можно увидеть какая страница сайта открыта. А $_SERVER['HTTP_REFERER'] это предыдущая страница 🙂 Та с которой текущая открывалась.
15 авг 2017 в 14:12
@Visman во как. Да, тогда не совсем то, что нужно. Насчет подмены ничего сказать не могу, скрипт взял с прошлого проекта, которым другой программист занимался.
15 авг 2017 в 14:16
Из названия sendmail.php я предположу, что это отправка письма.Отправка письма видимо у вас возможна с любой страницы сайта. Возможно даже там pop-up выскакивает с формой письма и потом идет отправка через ajax на сервер. В таком случае с поведением на сервере все верно. В $_SERVER['HTTP_REFERER'] отображается та страница с которой была отправлена форма на $_SERVER['REQUEST_URI'] = /sendmail/sendmail.php . Но лучше было бы в форме отправки добавить невидимое поле содержащее адрес страницы отправки, так как не всегда браузер пользователя отправляет на сервер $_SERVER['HTTP_REFERER'] .
Как в php получить текущий URL?
Сегодня поговорим о том, как получить адрес страницы в php.
Зачем это может быть нужно?
Сценарии могут быть разными. Например, у нас используется один и тот же шаблон для разных разделов. Но в одном из разделов нам необходимо вывести (или не вывести) какой-то специфичный блок, которого в других разделах быть не должно.
Вероятно мы захотим сделать это по условию. И именно в условии мы и будем проверять тот ли это раздел.
Возможно с архитектурной точки зрения – это не самое лучшее решение. Однако, очень часто нам достаются уже готовые проекты, с которыми нужно что-то делать.
Получаем URL текущей страницы
Чтобы получить необходимую информацию, мы будем обращаться к такой глобальной переменной в php, как $_SERVER.
Переменная $_SERVER – это массив, который хранит в себе много полезной информации: заголовки, пути, местоположения скриптов.
Если вы хотите посмотреть всё, что хранит этот массив, то можете воспользоваться следующим кодом, который в читабельном виде выведет все значения:
'; var_dump($_SERVER); echo ''; ?>
Итак, давайте представим, что у нас есть веб страница следующего вида: http://localhost/php-lessons/url/?name=anna&city=Valencia.
Я тестирую на локальном сервере. Когда вы будете работать с реальным сайтом, который лежит в сети, то вместо localhost у вас будет имя вашего сайта (например exmple.ru).
Что мы видим в нашем подопытном url?
- Нас может интересовать адрес страницы без GET-параметров;
- адрес страницы с GET-параметрами;
- или просто сами GET-параметры без адреса страницы.
Давайте разберемся с каждой ситуацией.
Получаем полный URL страницы в php
Чтобы получить полный URL страницы вместе с GET-параметрами, воспользуемся следующим кодом:
$url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; echo $url;
Сначала мы проверяем, какой протокол используется: https или http.
Если значение $_SERVER[‘HTTPS’] не пусто, значит это https, иначе http.
Далее мы присоединяем двоеточие и 2 слэша, имя домена (хоста) и остальную часть нашего URL.
Результат будет вот таким:
http://localhost/php-lessons/url/?name=anna&city=Valencia
Если протокол нам получать не нужно, то можно сократить код до такого:
Результат тогда будет следующим:
localhost/php-lessons/url/?name=anna&city=Valencia
Получаем URL страницы без GET-параметров в php
Иногда нас не интересуют GET-параметры, которые передаются как часть URL, и нам нужно получить адрес без них.
GET-параметры в нашем случает – это name=anna&city=Valencia
Чтобы отсечь их мы можем использовать php-функцию explode, которая разбивает строку по разделителю.
Наш URL – это ни что иное, как строка. GET-параметры всегда начинают передаваться после знака “?”. Следовательно разделителем будет вопросительный знак.
Функция explode превратит строку в массив с двумя элементами. В первом будет содержаться наш искомый url без GET-параметров, а во втором останутся GET-параметры.
Результат будет таким: http://localhost/php-lessons/url/
Получаем GET-параметры из URL
Здесь совсем все просто. Чтобы получить только GET-параметры будем использовать следующий код:
name=anna&city=Valencia
Дальше мы можете разобрать это строку, например, с помощью функции explode или сделать с ними что-либо еще (в зависимости от стоящей перед вами задачи).
А у меня на сегодня всё!
Ставьте лайки, оставляйте комментарии, подписывайтесь на обновления!
Здесь только полезные вещи






