2009-12-08 83 views
4

我需要修改我的功能也返回當前文件夾,我在這裏是我當前的功能: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; 
} 
+0

什麼是你的問題? – Ikke 2009-12-08 14:25:24

+0

我需要它來包含我所在的文件夾。 – jkushner 2009-12-08 14:26:31

回答

8

看看$_SERVER['REQUEST_URI']$_SERVER['SCRIPT_NAME']

(從$_SERVER手動輸入)

5

這裏有一個簡短的甜蜜功能,​​我一直在用它來做一段時間。

 
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

+1

這是非常正確的方法。沒有檢查協議(HTTP vs HTTPS),端口和服務器名稱經常被忽略,並且可能在以後導致問題(尤其是在測試環境中,或者更糟糕的情況是'僅在生產中',如果您爲某些方面啓用了SSL,而不是開發中)。無論使用何種語言,這種方法都是很好的做法。 – 2009-12-08 15:33:37

+0

雖然即使HTTPS和SERVER_PORT也不會幫助您,如果您的SSL由負載平衡器完成。在這種情況下,URL可能看起來像「https:// site.com /',但HTTPS將關閉,並且SERVER_PORT可能爲80(或其他)。 – 2010-02-20 03:18:48

1

..........

echo $_SERVER['PHP_SELF']; // return current file 

echo __FILE__; // return current file 

echo $_SERVER['SCRIPT_NAME']; // return current file 

echo dirname(__FILE__); // return current script's folder 

// etc 
1

也許你也想包括得到你的網址變量,所以你應該添加一些東西highphilosopher功能...

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

1

下面是可能幫助的方法:

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; 
}