ein service is ganz gut, zwei sind besser, aber bei 3 aufrufen sollte irgendwas größeres schief gegangen sein ![]()
bei lokaler entwicklung failen die ersten beiden, aber der dritte service holt definitiv die externe ip-adresse.
sollten alle drei failen gibt es nen fallback der zu definieren ist.
ist auch nur eine funktion, statt eines ganzen scriptes, aber ich hoffe einfach mal, dass andere dann nicht nen halben tag mit der suche nach geoip-services verbringen müssen, die nicht alle outdated sind oder gar auf dieselben sources zurückgreifen ![]()
PHP
		
					
				function getCountry(){
    $intIp = $_SERVER['REMOTE_ADDR'];
    $strFallBack = 'DE';
    $webSrv1 = 'http://geoip.wtanaka.com/cc/';
    $webSrv2 = 'http://freegeoip.net/xml/';
    $webSrv3 = 'http://ip2country.sourceforge.net/ip2c.php?format=XML';
    // webservice 1 probieren $webSrv1
    $strCountryIso = file_get_contents($webSrv1.$intIp);
    if(strtoupper($strCountryIso) == 'ZZ'){
        // webservice 2 probieren $webSrv2
        $objCountryIsoXml = simplexml_load_file($webSrv2.$intIp);
        if($objCountryIsoXml->CountryCode == 'RD'){
            // webservice 3 probieren $webSrv3
            $objCountryIsoXml = simplexml_load_file($webSrv3);
            if($objCountryIsoXml->country_code != 'RD'){
                return strtoupper($objCountryIsoXml->country_code);
            }else{
                //hier angekommen failen alle 3 services
                return $strFallBack;
            }
        }else{
            return strtoupper($objCountryIsoXml->CountryCode);
        }
    }else{
        return strtoupper($strCountryIso);
    }
}
$strIsoCountry = $getCountry();
	
			Alles anzeigen