PHP : Как получить текущий URL страницы?
Часто требуется узнать URL страницы. Иными словами, необходимо сформировать адрес, который посетитель видит в адресной строке своего браузера, для каких-то последующих манипуляций с ним.
Часто требуется узнать URL страницы. Иными словами, необходимо сформировать адрес, который посетитель видит в адресной строке своего браузера, для каких-то последующих манипуляций с ним.
Глобальный массив - $_SERVER
Начнем с того, что этот самый URL страницы раскидан по частям внутри $_SERVER, и надо его, в буквальном смысле, собирать заново. Далее, новичок, по неопытности, может упустить пару важных моментов:
- протокол соединения: он может быть «https://» &mdash для защищенного соединения;
- порт: он может отличатся от принятого по-умолчанию значения «80» («443» &mdash для защищенного соединения).
Стоит упомянуть о локальных якорях &mdash ссылках вида http://w1c.ru/blog/hello/#comment_form, которые работают исключительно для браузера и не передаются на сервер, поэтому, к сожалению, их мы учесть не сможем.
PHP-функция получения текущего URL страницы
function request_url() { $result = ''; // Пока результат пуст $default_port = 80; // Порт по-умолчанию // А не в защищенном-ли мы соединении? if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']=='on')) { // В защищенном! Добавим протокол... $result .= 'https://'; // ...и переназначим значение порта по-умолчанию $default_port = 443; } else { // Обычное соединение, обычный протокол $result .= 'http://'; } // Имя сервера, напр. site.com или www.site.com $result .= $_SERVER['SERVER_NAME']; // А порт у нас по-умолчанию? if ($_SERVER['SERVER_PORT'] != $default_port) { // Если нет, то добавим порт в URL $result .= ':'.$_SERVER['SERVER_PORT']; } // Последняя часть запроса (путь и GET-параметры). $result .= $_SERVER['REQUEST_URI']; // Уфф, вроде получилось! return $result; }