PHP Определение текущего URL

Мне нужно изменить свою функцию, чтобы она также возвращала текущую папку, в которой я нахожусь. Вот моя текущая функция:

function getLinkFromHost($url){  
    $port = $_SERVER['REMOTE_PORT'];  
    $server = $_SERVER['HTTP_HOST'];  
    if($port == 443){  
        $type = "https";  
    } else {  
        $type = "http";  
    }  
    return $type . "://" . $server . "/" . $url;  
}

person somejkuser    schedule 08.12.2009    source источник
comment
Мне нужно, чтобы он включал папку, в которой я нахожусь.   -  person somejkuser    schedule 08.12.2009


Ответы (4)


Взгляните на $_SERVER['REQUEST_URI'] или $_SERVER['SCRIPT_NAME']

(Из записи вручную $_SERVER)

person Mark Biek    schedule 08.12.2009

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

function curPageURL() {
 $pageURL = 'http';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}

Я не могу взять кредит, он принадлежит:

http://www.webcheatsheet.com/PHP/get_current_page_url.php

person SamuelWarren    schedule 08.12.2009
comment
Это очень правильный способ сделать это. Непроверка протокола (HTTP против HTTPS), порта и имени сервера очень часто упускается из виду и может привести к проблемам позже (особенно в тестовых средах или, что еще хуже, «только в рабочей среде», если у вас включен SSL для некоторых его аспектов, но не в развитие). Этот подход является хорошей практикой, поскольку он применяется независимо от используемого языка. - person Iain Collins; 08.12.2009
comment
Хотя даже HTTPS и SERVER_PORT вам не помогут, если ваш SSL сделан балансировщиком нагрузки. В этом случае URL-адрес может выглядеть как https://site.com/, но HTTPS будет отключен, а SERVER_PORT может иметь значение 80 (или что-то другое). - person JW.; 20.02.2010

Вероятно, вы также хотите включить get vars в свой URL-адрес, поэтому вам следует добавить что-то в функцию highphilosopher...

$current_url = rtrim(curPageURL(), "/").(!empty($_GET)) ? "?".http_build_query($_GET) : "";

person Kirzilla    schedule 08.12.2009

Вот метод, который может помочь:

function current_url()
{
    $result = "http";

    if($_SERVER["HTTPS"] == "on") $result .= "s";

    $result .= "://".$_SERVER["SERVER_NAME"];

    if($_SERVER["SERVER_PORT"] != "80") $result .= ":".$_SERVER["SERVER_PORT"];

    $result .= $_SERVER["REQUEST_URI"];

    return $result;
}
person Emanuil Rusev    schedule 20.02.2010