I am trying to build a language switch for a site of mine, but, as the hosting MUST BE a Windows IIS with PHP, I am not able to get the full URL of the page viewed by the visitor.
Say I am on domain.com/page.php?id=23, what I get using the old fashioned
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
is an empty string.
So I have tried a solution found here on stackoverflow to get the full 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;
}
but still nothing. I get something like: domain.com/page.php? in some cases and doman.com/? in others.
Is there a definitive way to get the full url in that scenario?
Thank you very much.
EDIT
It seems that the thing cannot be done on that server. I solved using a client side work around written in js+jQuery (I used purl plugin)....horrible :) Here it is:
    $('.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;
        });     
    });
It seems to work, even if I don't get why if "lang" is already in the query string, the script doesn't recognize it and continues adding &lang every time I click on the links. Sure, it works anyway, but it is horrible to watch a URL like &lang=en&lang=fr&lang=pl&lang=de