Website-create.ru
Сегодня поговорим о том, как получить адрес страницы в php.
Зачем это может быть нужно?
Сценарии могут быть разными. Например, у нас используется один и тот же шаблон для разных разделов. Но в одном из разделов нам необходимо вывести (или не вывести) какой-то специфичный блок, которого в других разделах быть не должно.
Вероятно мы захотим сделать это по условию. И именно в условии мы и будем проверять тот ли это раздел.
Возможно с архитектурной точки зрения — это не самое лучшее решение. Однако, очень часто нам достаются уже готовые проекты, с которыми нужно что-то делать.
Получаем URL текущей страницы
Если вы хотите посмотреть всё, что хранит этот массив, то можете воспользоваться следующим кодом, который в читабельном виде выведет все значения:
Итак, давайте представим, что у нас есть веб страница следующего вида: http://localhost/php-lessons/url/?name=anna&city=Valencia.
Я тестирую на локальном сервере. Когда вы будете работать с реальным сайтом, который лежит в сети, то вместо localhost у вас будет имя вашего сайта (например exmple.ru).
Что мы видим в нашем подопытном url?
Давайте разберемся с каждой ситуацией.
Получаем полный URL страницы в php
Чтобы получить полный URL страницы вместе с GET-параметрами, воспользуемся следующим кодом:
Сначала мы проверяем, какой протокол используется: https или http.
Далее мы присоединяем двоеточие и 2 слэша, имя домена (хоста) и остальную часть нашего URL.
Результат будет вот таким:
Если протокол нам получать не нужно, то можно сократить код до такого:
Результат тогда будет следующим:
Получаем 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-параметры будем использовать следующий код:
Дальше мы можете разобрать это строку, например, с помощью функции explode или сделать с ними что-либо еще (в зависимости от стоящей перед вами задачи).
А у меня на сегодня всё!
Ставьте лайки, оставляйте комментарии, подписывайтесь на обновления!
Как получить ссылку на текущую страницу при помощи JS и PHP
Привет, друзья. Сегодня поговорим о том, как в JS и PHP получить адрес текущей страницы. Дело в том, что разработчику часто нужно выполнить какой-то код, только на определенных страницах или в зависимости от каких-то GET параметров. Как раз в таких случаях удобно сохранить все данные из адресной строки в объект или строку, чтобы иметь возможность удобно манипулировать своим кодом/разметкой в зависимость от полученных параметров.
Обычно я сталкиваюсь с такими задачами:
Как получить ссылку на текущую страницу в Javascript
Для начала давайте разберемся как справиться с задачей при помощи js. В javascript есть объект Location, который позволяет получить текущий URL страницы. Доступ к нему я обычно произвожу через глобальный объект Window или Document. В итоге Window.location возвращает нам объект со свойствами, в которых и содержится интересующая нас информация. Например, самыми популярными для меня свойствами являются: href, hostname, pathname и search.
Для пример возьмем url:
window.location.href
Команда возвращает полный адрес страницы, то есть ссылку со всеми параметрами.
window.location.hostname
Команда возвращает домен текущей страницы.
window.location.pathname
Вернет путь до текущей страницы, исключая домен и параметры. То есть покажет категорию/рубрику/папку, в которой находится страница.
window.location.search
Возвращает GET-параметр начиная со знака «?», то есть позволяет получить любые параметры, которые вы передаёте вместе со ссылкой. В том числе и пресловутые UTM-метки.
Как видите, в js есть все, чтобы легко справиться с задачей получения ссылки на текущую страницу. Но это не все возможности, которые дает нам javascript. Также можно получить протокол, порт, домен с портом и хеш из адресной строки. Делается это при помощи следующих свойств: protocol, port, host и hash.
Как получить ссылку на текущую страницу в PHP
Как и в прошлый раз покажу на примере адреса:
В этой статье будет рассказано о том, как в языке программирования PHP получить адрес текущей страницы. Также вы узнаете о работе переменной $_SERVER.
Первое, о чём следует сказать, — зачем вообще получать ссылки (urls) в PHP? На практике варианты могут различаться. Представьте, что у нас для разных разделов применяется один и тот же шаблон. И возникает потребность в том, чтобы вывести (либо не вывести — зависит от ситуации) какой-нибудь специальный блок, причём в других разделах вывод этого блока не нужен.
В большинстве случаев мы пожелаем выполнить поставленную задачу по условию. То есть сделаем условие, в котором будем выполнять проверку того либо иного раздела. Можно сказать, что с точки зрения архитектуры данное решение не является оптимальным. Но на практике нам нередко достаются уже реализованные проекты, с которыми необходимо что-то решать с учётом уже имеющейся архитектуры.
Но давайте не будем много говорить, а лучше приступим к решению поставленной задачи — получению ссылки в PHP.
Получение ссылки текущей страницы в PHP
Идём дальше. Представьте, что у вас есть web-страница, имеющая следующий вид: http://localhost/php-lessons/url/?name=anna&city=Valencia. Тестирование в данном примере осуществляется на локальном сервере. Если надо тестировать код на реальном веб-сайте, доступном в интернете, достаточно вместо localhost прописать имя сайта (домен) — тот же otus.ru.
Что же мы увидим в подопытном url? Нас могут интересовать следующие данные: — адрес веб-страницы без GET-параметров; — URL с GET-параметрами; — непосредственно GET-параметры без текущей ссылки (адреса веб-страницы).
Лучше всего разобраться с каждым из случаев по отдельности — так будет гораздо понятнее.
Получение полного URL в PHP
Для получения полного URL вместе с имеющимися GET-параметрами, пригодится следующий код:
На втором этапе выполняется присоединение двоеточия и двух слэшев, имени домена и остальной части URL.
Итог выполнения кода будет следующим:
Если протокол получать не требуется, код на PHP можно немного сократить:
Смотрим на результат и видим, что протокол отсутствует:
Получение URL в PHP без GET-параметров
Иногда эти параметры, передаваемые в качестве части ссылки, нас не интересуют, то есть требуется получить адрес без них. Мы говорим о следующих параметрах: name=anna&city=Valencia.
В действительности их можно отсечь, используя функцию explode в PHP, разбивающую строку по разделителю. Не стоит объяснять, что ссылка представляет собой строку, а параметры GET начинают прописываться после «?». В результате вопросительный знак и станет разделителем, а функция explode сделает из строки массив с 2-мя элементами. Первый элемент станет содержать искомую ссылку без GET-параметров, так как эти самые параметры останутся во втором элементе.
Получение только параметров GET
С помощью этого кода получим:
Параметры сервера
Имя хоста, обычно совпадает с доменом.
Версия CGI на сервере.
Название и версия сервера.
Версия сервера и имя виртуального хоста, обычно пуста.
Имя и версия используемого HTTP протокола.
Значение из директивы конфигурационного файла Apache.
На хостингах указывают контактный e-mail.
Параметры соединения
Имя сервера, как правило, совпадает с доменом.
IP-адрес, с которого пользователь просматривает текущую страницу.
Удаленный хост, с которого пользователь просматривает текущую страницу.
Порт на удаленной машине, который используется для связи с веб-сервером.
Метод запроса к странице.
Время запроса к серверу в Unix timestamp.
Время запроса к серверу с точностью до микросекунд.
Пути на сервере
Директория корня сайта, в которой выполняется текущий скрипт.
Содержит путь, содержащийся после имени скрипта.
Например для адреса http://site.ru/index.php/123 значение будет следующим:
Исходное значение переменной PATH_INFO перед обработкой PHP.
Путь и имя выполняемого скрипта.
Абсолютный путь к исполняемому скрипту.
Метод HTTP аутентификации.
HTTPS
Значения в примерах приведены для адреса http://site.ru/index.php?page=1&sort=2
URI страницы с GET-параметрами, без домена.
Содержит URL страницы без GET-параметров и домена.
Заголовки браузера
Строка, обозначающая браузер и операционную систему, который открыл данную страницу.
Адрес страницы, с которой браузер пользователя перешёл на текущую страницу.
Содержимое заголовка Accept из текущего запроса.
HTTP заголовок переданный клиентом, говорящий о том какие алгоритмы сжатия он может понять.
Предпочтения клиента относительно кодировки.
Получить полный URL-адрес в PHP
Я использую этот код, чтобы получить полный URL:
Мне нужно получить URL-адрес, то, что написано в URL-адресе, не более и не что иное – полный URL-адрес.
Мне нужно узнать, как он отображается в панели навигации в веб-браузере, а не в реальном пути к файлу на сервере.
(Обратите внимание, что синтаксис с двойными кавычками является абсолютно правильным )
Если вы хотите поддерживать HTTP и HTTPS, вы можете использовать
Короткая версия для вывода ссылки на веб-странице
Ниже приведены дополнительные сведения о проблемах и крайних случаях формата //example.com/path/.
Полная версия
Структура URL:
Схема: // имя пользователя: пароль @domain: порт / путь? query_string # fragment_id
Части, выделенные жирным шрифтом, не будут включены функцией
Заметки:
Контролируемые клиентом (Browser) переменные:
Управляемые сервером переменные:
Связанный:
HTTP_HOST и SERVER_NAME
Требуется ли номер порта в HTTP-заголовке «Host»?
https://stackoverflow.com/a/28049503/175071
Примеры для: https://example.com/subFolder/yourfile.php?var=blabla#12345
типичные коды PHP:
Для WordPress
Мой любимый кросс-платформенный метод для поиска текущего URL-адреса:
Примечание. Я только что обновил код «Timo Huovinen», поэтому вы не получите доступ к URL-адресу. Этот URL-адрес является простым и удаляет такие вещи, как «? Hi = i & am = a & get».
будет отображаться как:
Если вы не используете Get’s для определения определенного контента, используйте его код! 🙂
Очистить код, работающий во всех веб-серверах (Apache, nginx, IIS, …):
Я использовал эту функцию для обработки URL-адреса:
Тот же метод, что и принятый ответ, но с поддержкой HTTPS и более читаемым:
Используйте этот однострочный интерфейс для поиска URL родительской папки (если у вас нет доступа к http_build_url (), который поставляется вместе с pecl_http):
Я сделал этот класс для обработки своих URI
‘; // Output extracted segments individually echo ‘Scheme: ‘._URI::Segment(‘SCHEME’).’
‘; echo ‘User: ‘._URI::Segment(‘USER’).’
‘; echo ‘Password: ‘._URI::Segment(‘PASSWD’).’
‘; echo ‘Host: ‘._URI::Segment(‘HOST’).’
‘; echo ‘Port: ‘._URI::Segment(‘PORT’).’
‘; echo ‘Path: ‘._URI::Segment(‘PATH’).’
‘; echo ‘Script: ‘._URI::Segment(‘SCRIPT’).’
‘; echo ‘Info: ‘._URI::Segment(‘INFO’).’
‘; // Compile extracted segments into a usable URL echo ‘
‘; echo ‘Full Compiled URI: ‘._URI::Compile().’
‘; echo ‘
‘; // Output precompiled common bases for a faster result and better performance echo ‘Host Base: ‘._URI::Base(‘Host’).’
‘; echo ‘Application Base: ‘._URI::Base(‘App’).’
‘; echo ‘Running Script: ‘._URI::Base(‘Script’).’
‘; echo ‘Current URI Base: ‘._URI::Base(‘Current’).’
‘; echo ‘Public Folder Base: ‘._URI::Base(‘Public’).’
‘; echo ‘Skin Folder Base: ‘._URI::Base(‘Skin’).’
‘; // Get all the precompiled bases in an associative array echo »; // Parse an example string and replace known keys with actual URI data. echo _URI::Parse(‘This is my current domain: %HostBase% And the current application is here: %AppBase% I load my skins form: %SkinBase% etc. ‘);
It still needs to be perfected but it’s a god solution for a centralized URI system 😀
This is quite easy to do with your Apache environment variables. This only works with Apache 2, which I assume you are using.
Simply use the following PHP code:
This is the solution for your problem:
I used this statement.
I hope this will help you.
$_SERVER is an array containing information such as headers, paths, and script locations. The entries in this array are created by the web server. There is no guarantee that every web server will provide any of these; servers may omit some, or provide others not listed here. That said, a large number of these variables are accounted for in the » CGI/1.1 specification, so you should be able to expect those.
You can use http_build_url with no arguments to get the full URL of the current page:
I have used the below code, and it is working fine for me, for both cases, HTTP and HTTPS.
You can make use of HTTP_ORIGIN as illustrated in the snippet below:










