2011-11-04 109 views
1

我想获取当前网页的网址。这里是代码:PHP当前网址问题

$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; 

它工作正常。但是我处理问题:

<a title="LT" href="<?php echo $url; ?>?lang=lt">LT</a> 

当我按下“LT”链接再次,它给我的结果是:

http://127.0.0.1/index.php?lang=lt?lang=lt 

如何避免这种情况?

+0

你知道你已经传递了变量$ _Server ['SERVER_NAME'] – NoPHPknowldege

回答

4

$_SERVER['REQUEST_URI']包括查询字符串域后返回的一切(嗯......不是万能的,因为它不能返回碎片...)如果你想使用$_SERVER['REQUEST_URI'],那么你可能会爆炸它像这样

$uri = explode('?', $_SERVER['REQUEST_URI']); 
$uri = $uri[0]; 

然后使用$uri变量代替$_SERVER['REQUEST_URI']这样的:

$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$uri : "http://".$_SERVER['SERVER_NAME'].$uri; 
0

我发现这段代码非常有帮助

$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') === 
FALSE ? 'http' : 'https';   // Get protocol HTTP/HTTPS 
$host  = $_SERVER['HTTP_HOST']; // Get www.domain.com 
$script = $_SERVER['SCRIPT_NAME']; // Get folder/file.php 
$params = $_SERVER['QUERY_STRING'];// Get Parameters occupation=odesk&name=ashik 

$currentUrl = $protocol . '://' . $host . $script . '?' . $params; // Adding all 

echo $currentUrl;