Skip to main content

PHP Function to return Country and City from an IP Address

 Here is a PHP function which can return the Geo location of the submitted IP address. The function uses a free IP Locator API provided by http://ipinfodb.com/

For using this service you have to register to this website and they will provide you with an API key, with which you can access this free webservice.

The function below will return the Country and City of the supplied IP Address.

More details after this code


///////////// Code Start ////////////////////


function countryCityFromIP_CURL($ipAddr){

$contents ="";
/**
* Initialize the cURL session
*/
$ch = curl_init();
    $ipDetail=array(); //initialize a blank array
/**
* Set the URL of the page or file to download.
*/

$api_key="YOUR API KEY";
$api_url= "http://api.ipinfodb.com/v2/ip_query.php?key=".$api_key."&ip=".$ipAddr."&timezone=false";


curl_setopt($ch, CURLOPT_URL, $api_url );
curl_setopt($ch,CURLOPT_TIMEOUT,20); 

/**
* Ask cURL to return the contents in a variable
* instead of simply echoing them to the browser.
*/
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
/**
* Execute the cURL session
*/
$contents = curl_exec ($ch);
/**
* Close cURL session
*/
curl_close ($ch);

$contents=trim($contents);

//echo( htmlentities($contents) );

//check whether it is a valid  XML response



if( stripos($contents,"CountryName") >0 && stripos($contents,"CountryCode") >0  ){


$xml_parser = xml_parser_create();
xml_parse_into_struct($xml_parser, $contents, $vals, $index);
xml_parser_free($xml_parser);

$params = array();
$level = array();
foreach ($vals as $xml_elem) {
  if ($xml_elem['type'] == 'open') {
    if (array_key_exists('attributes',$xml_elem)) {
      list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);
    } else {
      $level[$xml_elem['level']] = $xml_elem['tag'];
    }
  }
  if ($xml_elem['type'] == 'complete') {
    $start_level = 1;
    $php_stmt = '$params';
    while($start_level < $xml_elem['level']) {
      $php_stmt .= '[$level['.$start_level.']]';
      $start_level++;
    }
    $php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
    eval($php_stmt);
  }
}

                return  $params['RESPONSE'];
}else
        return NULL;

}


///////////// Code End ////////////////////


How to use this function?
The function returns the reslt from the Geo Locator API as Associative array and we need to parse it to get the required info.

///////////// Code Start ////////////////////



$IPDetails=countryCityFromIP_CURL( $IP_Addr);

        if( is_array($IPDetails) ){
        //country  and city of that IP address
        $userCountry=$IPDetails['COUNTRYNAME'];
        $countryCode=$IPDetails['COUNTRYCODE'];
        }


///////////// Code End ////////////////////

API provider Website : http://ipinfodb.com/
API Usage : http://ipinfodb.com/ip_location_api.php
Register for API Key : http://ipinfodb.com/register.php

Popular posts from this blog

Payback Points - How to redeem - How to merge multiple payback accounts - Block Payback card - Payback customer care

How to apply for a new ration card and what are the documents required?

List of documents required for new ration card application in Kerala and how to apply


Application for a new ration card should be addressed to Taluk Supply Officer (TSO) / City Rationing Officer (CRO) of applicant's residing area.

Primary document required are Residence certificate, Income certificate and incase the applicant's name is in another ration card then he/she should submit the reduction certificate ontained from previous TSO / CRO as proof for removing his/her name from old Ration card.

You can get the new application from your currently residing Taluk Supply Office.

Your SBI Debit card ending with XX0000 is deactivated only for Internet txn.

SBI account holders may have received an SMS with following message, supposed to be from State Bank of India (SBI).

Your SBI Debit card ending with XX0000  is deactivated only for Internet txn. To activate send SMS "SWON ECOM 0000" to 09223966666. No change for ATM/POS usage
** Replace the four Zeros with last 4 digits of your debit card number

Recently many of the SBI account holder has losed their money due to a hi-tech ATM robbery which happened in Thiruvananthapuram, capital city of Kerala.


Urgent Openings for PHP trainees, Andriod / IOS developers and PHP developers in Kochi Trivandrum Calicut and Bangalore. Please Send Your updated resumes to recruit.vo@gmail.com   Read more »
Member
Search This Blog