我正在尝试为我的网站构建语言切换,但是,由于托管必须是带有PHP的Windows IIS,我无法获取访问者查看的页面的完整URL。
说我在domain.com/page.php?id=23,我使用老式的
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
是一个空字符串。
所以我尝试了在stackoverflow上找到的解决方案来获取完整的URL
function getFullUrl() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER['HTTP_X_REWRITE_URL'];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER['HTTP_X_REWRITE_URL'];//$_SERVER["REQUEST_URI"] blank
}
return $pageURL;
}
但仍然没有。我得到类似的东西:domain.com/page.php?在某些情况下和doman.com/?在其他人。
在这种情况下,是否有明确的方法来获取完整的网址?
非常感谢。
修改
似乎无法在该服务器上完成该操作。我解决了使用js + jQuery编写的客户端工作(我使用purl插件)....可怕:)这里是:
$('.lang').each(function(){
$(this).click(function(e){
e.preventDefault();
var lingua = $(this).find('a').data('lang');
var url = window.location.href;
var urlParts = purl(url);
if (url.indexOf("?") >= 0)
{
var queryString = urlParts.attr('query').split('&');
var langIndex = queryString.indexOf('lang');
if(langIndex > -1)
{
queryString.splice(langIndex,1);
var newUrl = urlParts.attr('protocol')+urlParts.attr('host')+urlParts.attr('path')
window.location = newUrl + '&lang='+lingua;
}
else window.location = url + '&lang='+lingua;
}
else
window.location = url + '?lang='+lingua;
});
});
它似乎有效,即使我不明白为什么如果" lang"已经在查询字符串中,脚本无法识别它,并且每次单击链接时都会继续添加&lang。当然,无论如何它都可以工作,但是观看像&lang=en&lang=fr&lang=pl&lang=de
答案 0 :(得分:0)
此行返回空
<Checkpax xmlns="http://xml.api.com/test">
<customerLevel>
<customerDetails>
<paxDetails>
<surname>MUKHERJEE</surname>
<type>A</type>
<gender>M</gender>
</paxDetails>
<otherPaxDetails>
<givenName>JOY</givenName>
<title>MR</title>
<age>11</age>
</otherPaxDetails>
<otherPaxDetails>
<title>MR</title>
</otherPaxDetails>
</customerDetails>
<staffDetails>
<staffInfo/>
<staffCategoryInfo>
<attributeDetails>
<attributeType>NA</attributeType>
</attributeDetails>
</staffCategoryInfo>
</staffDetails>
<productLevel>
<legLevel>
<LeglevelInfo/>
<legLevelIndicator>
<statusDetails>
<indicator>abc</indicator>
<action>1</action>
</statusDetails>
</legLevelIndicator>
</legLevel>
</productLevel>
<dummyRoottwo/>
<CustomerLevel>
<legLevel>
<legLevelIndicator>
<statusDetails>
<indicator>cde</indicator>
<action>1</action>
</statusDetails>
</legLevelIndicator>
</legLevel>
<dumTXFSep/>
<dummySegmentJan />
<dumTktFeb />
</CustomerLevel>
<dummyRootOne />
</customerLevel>
</Checkpax>
因为它应该是这样的:
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
您需要键的引号....请参阅手册中的here。