• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
seegatesite header

Seegatesite.com

Seegatesite.com - Programming Tutorial , Sharing , How and Learn Together

  • TOOLS
    • Bootstrap Navbar Online Generator
    • Customize Sidebar Menu Bootstrap 3
    • Bootstrap Demo
  • ADVERTISE
  • CATEGORIES
    • Android
    • Blogging Tips
    • Database
    • CSS
    • Info Gadget
    • Javascript
    • Linux
    • PHP
    • Various
    • WordPress
  • Q&A
  • PHP
  • JAVASCRIPT
  • JQUERY
  • ANGULAR
  • WORDPRESS
  • SEO
  • REACT
🏠 » PHP » Simple Tutorial Get Geolocation IP With PHP

Simple Tutorial Get Geolocation IP With PHP

By Sigit Prasetya Nugroho ∙ September 6, 2017 ∙ PHP ∙ Leave a Comment

Share : TwitterFacebookTelegramWhatsapp

To get Geo location (country, city, isp, etc.) based on website visitor IP in PHP application can use API from ip-api.com. In this article, I will share how to get geolocation information from site visitors using PHP.

IP-API is a free GEO LOCATION IP service with multiple response formats. In addition to free, its use is also quite easy to apply. However, free facilities have some limitations. IP-API server will automatically be banned IP Addresses if making more than 150 requests per minute. If you need more data from IP-API, you can buy a pro service.

Another article: Angular 4 Tutorial For Beginner With Simple App Project

Tutorial get GEOLOCATION IP Information with PHP

Make a function to get Ip visitors

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function get_header_info(){
$header = array();
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP']))
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_X_FORWARDED']))
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if(isset($_SERVER['HTTP_FORWARDED']))
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if(isset($_SERVER['REMOTE_ADDR']))
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'UNKNOWN';
 
$header['ipaddress'] = $ipaddress;
if(isset($_SERVER['HTTP_REFERER']))
{
$header['referer']= $_SERVER['HTTP_REFERER'];
}else
{
$header['referer'] ='';
}
$header['useragent'] = $_SERVER['HTTP_USER_AGENT'];
$header['requesturi'] = $_SERVER['REQUEST_URI'];
return $header;
}

Create a function to call the geolocation API from ip-api.com

1
2
3
4
5
6
7
8
9
10
function geolocation($ip){
$ch = curl_init('http://ip-api.com/json/'.$ip);  
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                    
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,5);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$xresult = curl_exec($ch);
$xresult = json_decode($xresult,true);
return $xresult;
}

Test both functions above using the following code

1
2
3
4
5
6
7
8
9
10
11
$header = get_header_info();
echo '<h3>Array from get_header_info function:</h3><br/>';
foreach ($header as $key => $value) {
echo $key.' => '.$value.'<br/>';
}
echo '<br/>';
$getloc = geolocation($header['ipaddress']);
echo '<h3>Array from geolocation function:</h3><br/>';
foreach ($getloc as $key => $value) {
echo $key.' => '.$value.'<br/>';
}

If successful you will get results like the following picture

Simple Tutorial Get Geolocation IP With PHP

Note: The above script does not work on the localhost server.

Conclusion:

To obtain information geolocation is very easy using API from ip-api.com. You can subscribe for €45 (3 months) for unlimited use of API

So my short tutorial on Simple Tutorial Get Geolocation IP With PHP, hopefully, useful

Another PHP Related Post :

  • Tutorial Create Simple POS Using ReactJS And Laravel Lumen Part 1
  • How To Replace String With Another String In PHP
  • Login Page – Tutorial CRUD Client and API Server Using JQuery And Lumen Part 2
  • Tutorial CRUD Client and API Server Using JQuery And Lumen Part 1
  • How To Solve Problems Illegal mix of collations (latin1_swedish_ci,IMPLICIT) In Laravel
  • How To Resolve No ‘Access-Control-Allow-Origin’ Header In Lumen

Avatar for Sigit Prasetya Nugroho

About Sigit Prasetya Nugroho

This site is a personal Blog of Sigit Prasetya Nugroho, a Desktop developer and freelance web developer working in PHP, MySQL, WordPress.

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload CAPTCHA.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Primary Sidebar

Welcome to my Home,

Avatar for Sigit Prasetya NugrohoThis site is a personal Blog of Sigit Prasetya Nugroho, a Desktop developer and freelance web developer working in PHP, MySQL, WordPress.



Popular Articles

Checked checkbox AdminLTE Bootstrap in Jquery

November 4, 2014 By Sigit Prasetya Nugroho 7 Comments

Simple create date format validation with jqueryUI

December 21, 2014 By Sigit Prasetya Nugroho Leave a Comment

Create Simple Progress Bar for Fake Online Generator with Jquery

January 10, 2015 By Sigit Prasetya Nugroho Leave a Comment

22+ Coolest Free Jquery Plugin For Premium Theme

October 3, 2015 By Sigit Prasetya Nugroho Leave a Comment

Easy Build Your Anti Copy Paste Plugin

October 6, 2015 By Sigit Prasetya Nugroho Leave a Comment

Popular Tags

adminlte (15) adsense (13) adsense tips (4) affiliate amazon (13) amazon (12) Android (8) angular (16) angular 4 (12) angular 5 (4) asin grabber (3) Bootstrap (27) codeigniter (5) create wordpress theme (5) crud (8) css (6) free wordpress theme (7) google adsense (4) imacros (4) increase traffic (6) jquery (34) laravel (10) laravel 5 (5) learn android (5) lumen api (4) modal dialog (5) mysql (6) nodeJs (4) optimize seo (4) pdo (6) php (30) plugin (53) pos (8) Publisher Tips (5) react (6) Reactjs (9) SEO (37) theme (17) tutorial angular (5) tutorial angular 4 (6) tutorial javascript (10) tutorial javascript beginners (4) twitter (3) wordpress (18) wordpress plugin (13) XMLRPC (5)




  • About
  • Contact Us
  • Disclaimer
  • Privacy Policy
  • Terms and Conditions

©2022 Seegatesite.com