<?php
/**
* Original code from svn://hostip.info/hostip/api/trunk. Optimized & enhanced by Quang Pham @ Saoma, 06.01.07.
*/
function isPrivateIP
($ip) {
list($a,
$b,
$c,
$d) =
sscanf($ip,
"%d.%d.%d.%d");
return $a ===
null ||
$b ===
null ||
$c ===
null ||
$d ===
null ||
$a ==
10 ||
$a ==
239 ||
$a ==
0 ||
$a ==
127 ||
($a ==
172 &&
$b >=
16 &&
$b <=
31) ||
($a ==
192 &&
$b ==
168);
}
function getIP
() {
$default =
false;
if (isset($_SERVER)) {
$default_ip =
$_SERVER["REMOTE_ADDR"];
$xforwarded_ip =
$_SERVER["HTTP_X_FORWARDED_FOR"];
$client_ip =
$_SERVER["HTTP_CLIENT_IP"];
} else {
$default_ip =
getenv('REMOTE_ADDR');
$xforwarded_ip =
getenv('HTTP_X_FORWARDED_FOR');
$client_ip =
getenv('HTTP_CLIENT_IP');
}
if ($xforwarded_ip !=
"") {
$result =
$xforwarded_ip;
} else if ($client_ip !=
"") {
$result =
$client_ip;
} else {
$default =
true;
}
if (!
$default) { // additional check for private ip numbers
$default = isPrivateIP
($result);
}
if ($default) {
$result =
$default_ip;
}
return $result;
}
function showUSContent
() {
// show US content here, for ex. Yahoo! ads
}
function showInternationalContent
() {
// show international content here, for ex. Google ads
}
function showGeoTargetContent
() {
// make a valid request to the hostip.info API
$url =
"http://api.hostip.info/country.php?ip=".getIP
();
// fetch with curl
$ch = curl_init
();
curl_setopt
($ch, CURLOPT_URL,
$url);
curl_setopt
($ch, CURLOPT_HEADER,
0);
curl_setopt
($ch, CURLOPT_RETURNTRANSFER,
1);
$country = curl_exec
($ch);
curl_close
($ch);
// display according geotarget
if ($country ==
"US") {
showUSContent
();
} else {
showInternationalContent
();
}
}
showGeoTargetContent
();
?>