You can get the domain name of server country,state and region of the server by following code
this function accept the ip address which you can get from the $_SERVER variable of php
Folowing function return an array with geoip-infodata
<?php function geoCheckIP($ip)
{
//check, if the provided ip is valid
if(!filter_var($ip, FILTER_VALIDATE_IP))
{
throw new InvalidArgumentException("IP is not valid");
}
//contact ip-server
$response=@file_get_contents('http://www.netip.de/search?query='.$ip);
if (empty($response))
{
throw new InvalidArgumentException("Error contacting Geo-IP-Server");
}
//Array containing all regex-patterns necessary to extract ip-geoinfo from page
$patterns=array();
$patterns["domain"] = '#Domain: (.*?) #i';
$patterns["country"] = '#Country: (.*?) #i';
$patterns["state"] = '#State/Region: (.*?)<br#i';
$patterns["town"] = '#City: (.*?)<br#i';
//Array where results will be stored
$ipInfo=array();
//check response from ipserver for above patterns
foreach ($patterns as $key => $pattern)
{
//store the result in array
$ipInfo[$key] = preg_match($pattern,$response,$value)
&& !empty($value[1]) ? $value[1] : 'not found';
}
return $ipInfo;
}?>
Call the above function
<?php $ip=$_SERVER['REMOTE_ADDR'];
print_r(geoCheckIP($ip)); ?>
Example:
this function accept the ip address which you can get from the $_SERVER variable of php
Folowing function return an array with geoip-infodata
<?php function geoCheckIP($ip)
{
//check, if the provided ip is valid
if(!filter_var($ip, FILTER_VALIDATE_IP))
{
throw new InvalidArgumentException("IP is not valid");
}
//contact ip-server
$response=@file_get_contents('http://www.netip.de/search?query='.$ip);
if (empty($response))
{
throw new InvalidArgumentException("Error contacting Geo-IP-Server");
}
//Array containing all regex-patterns necessary to extract ip-geoinfo from page
$patterns=array();
$patterns["domain"] = '#Domain: (.*?) #i';
$patterns["country"] = '#Country: (.*?) #i';
$patterns["state"] = '#State/Region: (.*?)<br#i';
$patterns["town"] = '#City: (.*?)<br#i';
//Array where results will be stored
$ipInfo=array();
//check response from ipserver for above patterns
foreach ($patterns as $key => $pattern)
{
//store the result in array
$ipInfo[$key] = preg_match($pattern,$response,$value)
&& !empty($value[1]) ? $value[1] : 'not found';
}
return $ipInfo;
}?>
Call the above function
<?php $ip=$_SERVER['REMOTE_ADDR'];
print_r(geoCheckIP($ip)); ?>
Example:
Array
(
[domain] => 106.215.57.31
[country] => IN - India
[state] => bla bla
[town] =>bla bla
)
No comments:
Post a Comment