$url=$_POST;
$ip = gethostbyname($url);
$long1 = ip2long($ip)

if ($long1 == -1 || $long1 == FALSE)
{ echo 'Invalid IP, please try again';
}
else {

print $url;
echo $ip ?>

bu this code i get ip address but i need the country name aslo with this ip address. is thers any function to get country?
thanks

Recommended Answers

All 11 Replies

Use <snipped>to get ip to country and other useful information.

Hi Aatya,

U can use the following function to get the country name from IP address.

function countryCityFromIP($ipAddr)
{
//function to find country and city from IP address
//Developed by Roshan Bhattarai [url]http://roshanbh.com.np[/url]

//verify the IP address for the
ip2long($ipAddr)== -1 || ip2long($ipAddr) === false ? trigger_error("Invalid IP", E_USER_ERROR) : "";
$ipDetail=array(); //initialize a blank array

//get the XML result from hostip.info
$xml = file_get_contents("http://api.hostip.info/?ip=".$ipAddr);

//get the city name inside the node <gml:name> and </gml:name>
preg_match("@<Hostip>(\s)*<gml:name>(.*?)</gml:name>@si",$xml,$match);

//assing the city name to the array
$ipDetail['city']=$match[2]; 

//get the country name inside the node <countryName> and </countryName>
preg_match("@<countryName>(.*?)</countryName>@si",$xml,$matches);

//assign the country name to the $ipDetail array
$ipDetail['country']=$matches[1];

//get the country name inside the node <countryName> and </countryName>
preg_match("@<countryAbbrev>(.*?)</countryAbbrev>@si",$xml,$cc_match);
$ipDetail['country_code']=$cc_match[1]; //assing the country code to array

//return the array containing city, country and country code
return $ipDetail;

}

plz try it let me know what's result?

Hi Aatya,

U can use the following function to get the country name from IP address.

~~~~~~

plz try it let me know what's result?

Hi kuldeep,

I used your script (with minor modifications - needed only to show the country) and it worked splendid.

thanks pal.

Thanks KULDEEP04 !

I've copied and paste your code, set the Google IP and sure enough while running it, I can display the answer:
City: Mountain View, CA Country UNITED STATES!

That's great, Im going to use your code and leave your reference (URL) in it.
My goal is to record myself from where and when the users hit my pages...

I have a problem..
Maybe you can help me:

To apply this code I must change my pages form ext: .HTML to .PHP:
DO YOU KNOW IF THAT WILL AFFECT the ranking of my pages on search engines?

Gravimotion

The file extension will not affect a new site, but it will affect an existing site that has already been indexed. The old page URLs in the search engines will generate 404 status codes (Page Not Found) unless you use a 301 redirect to redirect the old pages to the new pages.

If you leave the file names the same and only change the extensions, you should be able to add the following to the .htaccess file to take care of the redirection. This will only work on an Apache web server.

RewriteRule ^(.*)\.html$ /$1.php [R=301,L]

Test it with a few pages to make sure it is working correctly. If you enter an old URL with the .html extension, you should see it change to the new .php page in your browser's address window.

hi dear kuldeep04

i use your function.that was great but i change this function based on my need ihope this function can help php developers
function countryCityFromIP($ip){
    if(ip2long($ip)== -1 || ip2long($ip) === false){
        $stt = false ; 
    }else{

        $ipDetail=array(); 
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "http://api.hostip.info/get_json.php?ip=".$ip);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $dtl = json_decode(curl_exec($ch),true);
        curl_close($ch);
        $stt = array(
                        'IP'            =>  $dtl['ip'],
                        'COUNTRY-NAME'  =>  $dtl['country_name'],
                        'COUNTRY-CODE'  =>  $dtl['country_code'],
                        'CITY'          =>  $dtl['city']
                    );
    }

    return $stt;
}

echo var_dump( countryCityFromIP('4.2.2.4'));

----------------------------------------------------------------------------------------

and i get this result on local and hosting

array
'IP' => string '4.2.2.4' (length=7)
'COUNTRY-NAME' => string 'UNITED STATES' (length=13)
'COUNTRY-CODE' => string 'US' (length=2)
'CITY' => string 'Broomfield, CO' (length=14)

I get my IP address using $_SERVER['REMOTE_ADDR'];

but its show UNITED STATE Country. I live in India, So how can I get the Name India.

Its Show Wrong Country Name.

it gives me a fatal error
Fatal error: Call to undefined function curl_init() in...

hi dear kuldeep04
i use your function.that was great but i change this function based on my need ihope this function can help php developers

function countryCityFromIP($ip){
    if(ip2long($ip)== -1 || ip2long($ip) === false){
    $stt = false ;
    }else{
    $ipDetail=array();
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://api.hostip.info/get_json.php?ip=".$ip);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $dtl = json_decode(curl_exec($ch),true);
    curl_close($ch);
    $stt = array(
    'IP' => $dtl['ip'],
    'COUNTRY-NAME' => $dtl['country_name'],
    'COUNTRY-CODE' => $dtl['country_code'],
    'CITY' => $dtl['city']
    );
    }
    return $stt;
    }
    echo var_dump( countryCityFromIP('4.2.2.4'));

so what do i do here???

Hi,If you Have Ip address you can find the country,Location,State,Latitudeand Longitude details using the online site Ip-Details.Com

Hi

The following is very simple to find country from IP Address

$ip_address=$_SERVER[REMOTE_ADDR];
$country=geoip_country_name_by_name($ip_address);

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.