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