Get country IP address in php

→ Are you a new visitor? Please visit the page guidance for new visitors ←

Get country IP address in php

I was checking around stackoverflow recently and I tend to look at what people are doing or making and getting what I know refreshed or trying to learn new tricks from here and there. Today I saw one user trying to get country IP address in php and I was “hey, there’s an easy way without relying on that GeoIPService”. And that is indeed true, if you’ve read my other articles, you would see I’ve played alot with CDN networks, well one of them, Cloudflare to be exact, has the option to help us directly by providing the country IP Code. And I’m going to show you this how it is done in this article.

Activate cloudflare on your domain

First you will need to activate cloudflare on your domain name, this can be done easily on your hosting provider (now days almost everyone have this option) or adding your domain directly on their website after you signup:

https://www.cloudflare.com/sign-up

You then want to enable the option to pass the header information that contains the country (GeoIP) of the IP address.

This is done in section Cloudflare Settings specific to your domain name.

Get Country IP address - geolocation Cloudflare

Country IP geolocation Cloudflare

On the same page you also have a nice little example there how you can get the country code for each IP address passing through Cloudlare, so you just use the code:

The result would look similar to:

An example can be found here:

http://www.ajutorpe.net/scripts/cloudflare-country-ip-example.php

Using Soap client to get country IP

In the same way, but using php SoapClient to get the information from webservicex.net. Personally I don’t really like it this way, but it is a nice and easy way using other public services that already offers these data for you to use.

You can use the bellow code for getting the country code:

An example can be seen here (without www):

http://ajutorpe.net/scripts/soap-client-country-ip.php

I’m pretty sure there are other ways to get the country IP address, but these ones are as simple as it gets, especially the Cloudflare one which you just need to read the http header that cloudflare are kind enough to send.

Comment bellow if you know any other quick and simple methods to get this information and don’t forget to subscribe!

  • SaraSadness

    Hi

    Thanks for the post… I am new to php… just signed up for CloudFlare and trying to use IP Geolocation

    any help would be appreciated… the goal is for the selected
    countries to show maintenance message. Otherwise show the content of the
    page

    this is what I have but its not working…

    $country_code = $_SERVER["HTTP_CF_IPCOUNTRY"];
    if ($country_code=="FR") {
    echo "Site Under Maintenance";
    }

    elseif ($country_code=="UK") {
    echo "Site Under Maintenance";
    }

    elseif ($country_code=="US") {
    echo "Site Under Maintenance";
    }
    else {
    echo "Site is online";
    }

    Thanks in advance

    • The code is correct, should work. Make sure you enable the option to show country IP header, else you are trying to read a server var that doesn’t exist.

    • Zak

      @sarasadness Country code for France is : FRA. not FR.

  • Zak

    @sarasadness:disqus Country code for France is : FRA. not FR.

    • Sorry for replying late, I’m pretty sure I’ve tested when I wrote the bellow code and was working.

Request an article ←