Geo Location By IP

Derek Jones edited this page Jul 5, 2012 · 18 revisions
Clone this wiki locally

Category:Contributions::Plugins::Miscellaneous | Category:Plugin::Geo Locator

A simple plug-in to get user's geo location details by current / given IP address

Following plug-in is based on IP Address Geolocation XML API

Copy the code and create a file as geo_location_pi.php, Place the file into your system/plugins folder.

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

 * Geo Location Plugin
 * @package        CodeIgniter
 * @subpackage        System
 * @category        Plugin

// ------------------------------------------------------------------------


Load the plugin using:


Once loaded you can get user's geo location details by IP address
    $ip = $this->input->ip_address();
    $geo_data = geolocation_by_ip($ip);
    echo "Country code : ".$geo_data['country_name']."\n";
    echo "Country name : ".$geo_data['city']."\n";

    The get_geolocation function will use current IP address, if IP param is not given.


The get_geolocation() function returns an associative array with this data:


 * Get Geo Location by Given/Current IP address
 * @access    public
 * @param    string
 * @return    array
if (!function_exists('get_geolocation')) {
    function get_geolocation($ip) {
        $d = file_get_contents("$ip&output=xml");
        //Use backup server if cannot make a connection
        if (!$d) {
            $backup = file_get_contents("$ip&output=xml");
            $result = new SimpleXMLElement($backup);
            if (!$backup)
                return false; // Failed to open connection
        } else {
            $result = new SimpleXMLElement($d);
        //Return the data as an array
        return array('ip'=>$ip, 'country_code'=>$result->CountryCode, 'country_name'=>$result->CountryName, 'region_name'=>$result->RegionName, 'city'=>$result->City, 'zip_postal_code'=>$result->ZipPostalCode, 'latitude'=>$result->Latitude, 'longitude'=>$result->Longitude, 'timezone'=>$result->Timezone, 'gmtoffset'=>$result->Gmtoffset, 'dstoffset'=>$result->Dstoffset);
/* End of file geo_location_pi.php */
/* Location: ./system/plugins/geo_location_pi.php */