PHP当前url问题


PHP current url issue

我正在尝试获取当前页面url。下面是代码:

$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

如何避免这种情况?

$_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;

我发现这段代码很有帮助

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