полный адрес страницы php

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 или сделать с ними что-либо еще (в зависимости от стоящей перед вами задачи).

А у меня на сегодня всё!

Ставьте лайки, оставляйте комментарии, подписывайтесь на обновления!

Источник

Как безопасно получить полный URL родительского каталога текущей страницы PHP

но это, конечно, дает полный URL. Вместо Этого Я!—9—>нужен полный URL минус текущий файл и один каталог и минус косая черта.

поэтому независимо от того, какой домен URL браузера, например, localhost, https://, http:// и т. д., Полный реальный (в обход любого мод перезаписывает) URL-путь родительского каталога задается без конечной косой черты.

как это сделать? Безопасно так нет XSS, как я думаю (от чтение) использование чего-либо, кроме «SCRIPT_NAME», имеет такой риск.. не уверен, хотя ОФК.. просто читал тонну, пытаясь понять это.

Читайте также:  больницы в чите адреса

без закрывающего слеша.

а также должен работать, скажем:

что я и пытаюсь сделать.

Edit: Вот рабочее решение я использовал:

он отлично работает.

7 ответов

Также обратите внимание на комментарий @Sid. Когда вам нужен полный URI для текущего скрипта, с протоколом и сервером использовать что-то вроде этого:

у меня более простой синтаксис для получения родительских адресов с портом и url давайте попробуем мой код

С помощью этого кода Вы можете получить прямой родитель adres если вы хотите 2x откатить каталог, вы можете зацикливаться

этот пример работает с портами

я не предлагаю использовать dirname() как для каталогов, а не для URIs. Примеры:

Я с hek2mgl. Однако, если скрипт не всегда находится в 2 каталогах ниже вашей цели, вы можете использовать explode:

$_SERVER [‘REQUEST_URI’] опустит имя домена. Ссыль постить @hek2mgl, вы можете echo dirname(dirname(htmlspecialchars($url)));

вот полезные команды, чтобы получить нужный путь:

( например, вы выполняете в http:// yoursite.com/folder1/folder2/file.php)

примеры:

* домашний url ( yoursite.com )

*базовый url файла ( yoursite.com/anyfolder/myfile.php )

* полный текущий url ( yoursite.com/anyfolder/myfile.php?action=blabla )

*URL текущей папки ( yoursite.com/anyfolder/ )

*чтобы получить RealPath к файлу (даже если он включен) (измените /var / public_html на нужный корень)

Источник

Получить полный 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:

Источник

В этой статье будет рассказано о том, как в языке программирования 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

С помощью этого кода получим:

Источник

Получение полного URL-адреса в PHP

Я использую этот код для получения полного URL:

Мне нужно узнать его таким же, как он отображается на панели навигации в веб-браузере, а не реальный путь к файлу на сервере.

Ответ 1

Если же вы хотите поддерживать как HTTP, так и HTTPS, вы можете использовать:

Ответ 2

Краткая версия для вывода ссылки на веб-страницу:

Полная версия:

Структура URL:

схема: // имя пользователя: пароль @ домен: порт / путь? query_string # fragment_id

Части, выделенные жирным шрифтом, не будут включены в функцию.

Заметки:

Эта функция не включает username:password полный URL или фрагмент (хэш).

Она не будет показывать порт 80 по умолчанию для HTTP и порт 443 для HTTPS.

Проверено только со схемами http и https.

#fragment_id н е отправляется на сервер клиента (браузера) и не будут добавлены к полному URL.

Удалите HTTP_X_FORWARDED_HOST, если не планируете использовать прокси или балансировщики.

В спецификации сказано, что Host заголовок должен содержать номер порта, если он не является портом по умолчанию.

Переменные, контролируемые клиентом (браузером):

Переменные, контролируемые сервером:

Ответ 3

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Образовательный портал