我正在尝试获取当前页面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;