PHP: Determine or Retrieve Visitor’s IP Address Using PHP Script

by on September 15, 2006 · 27 comments· LAST UPDATED April 4, 2013

in , ,

How do I determine or retrieve visitor's IP address using PHP server side programming under Unix/Windows operating systems?

Use the following environment variables to get visitor's IP address:
Tutorial details
DifficultyEasy (rss)
Root privilegesNo
RequirementsPHP+LAMP
Estimated completion timeN/A

No Proxy detection
REMOTE_ADDR - Get the remote client IP address

With Proxy detection
HTTP_X_FORWARDED_FOR - Get the proxy server IP address.

PHP getenv() function
Use php getenv() function to read the value of the environment. The syntax is:

 
getenv('VAR-NAME-HERE')
 

Example: Sample code to get an IP address

Here is the PHP code:

<html>
<head>
 <title>What is my IP address?</title>
</head>
<body>
<?php
 
    if (getenv('HTTP_X_FORWARDED_FOR')) {
        $pipaddress = getenv('HTTP_X_FORWARDED_FOR');
        $ipaddress = getenv('REMOTE_ADDR');
echo "Your Proxy IP address is : ".$pipaddress. "(via $ipaddress)" ;
    } else {
        $ipaddress = getenv('REMOTE_ADDR');
        echo "Your IP address is : $ipaddress";
    }
?>
</body>
</html>
 

If GEOIP database installed and configured using Apache/Nginx/Lighttpd, try the following php code to get the visitors country name:

 
   $country = getenv('GEOIP_COUNTRY_NAME');
   echo "Your country : $country";
 

You can try the demo by visiting this url.

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 27 comments… read them below or add one }

1 Abhishek October 17, 2006 at 3:55 am

it is working on localhost
but it doesn’t work after uploading it on website
i m getting blank page..

Reply

2 Marvin Henry February 6, 2007 at 7:42 am

I tried with the given php code “to determine or retrieve visitors ip address in PHP” in two different machines and got the same ip address.

Reply

3 Rahman July 3, 2007 at 11:07 am

I want to get visitor IP address into table of my database.

please help me

thanks

Reply

4 chenna kiran September 27, 2012 at 8:24 am

you can do it by simple code
just change host, user, password, dbname and table
first create a table and add two columns at least like ip_id and ipaddress.
then copy and paste the below code at last just change what you want.

code:
______________________________________________________
mysql_connect(“host”,”user”,”password”) or die(‘problem in conection’);
mysql_select_db(“dbname”) or die(‘problem in database’);
mysql_query(“INSERT INTO table_name (‘ipaddress’) VALUES (‘”.$ipaddress .”‘)”) or die(“error in querry”);

now you have ipaddress in your database table.

Reply

5 trupti July 15, 2007 at 2:53 pm

i am getting a blank page after i paste the code onto my website. plz help.

Reply

6 Ogaden October 11, 2007 at 8:30 pm

Excellent tutorial!

It works for me. I havent uploaded it to my site yet. But it looks find and i guess it should work.

Thanks :)

Reply

7 erti November 9, 2007 at 10:14 pm

In line 12 and 15 delete and rewrite the ” and it will work.

Reply

8 RK Aggarwal November 24, 2007 at 1:14 am

very nicely given. thanx a tone

Reply

9 Muhammad March 23, 2008 at 8:12 pm

The tutorial is really great it solved my problem at once…On my local machine and on my webserver it worked.

Thanx,
Umair

Reply

10 Deepak Poolamadai June 13, 2008 at 11:44 pm

Hi All
This code worked for me fine……
Thanks to the programmer……

And For this
# Marvin Henry Says:
February 6th, 2007 at 7:42 am

I tried with the given php code “to determine or retrieve visitors ip address in PHP” in two different machines and got the same ip address.

Reply
I think u get a Ip address from the DHCP server.
In This case You should the ip address of the Server and not of the client Machine.

Anyways this solved my problem….
Thanks a ton.

Deepak Poolamadai

Reply

11 fRank September 28, 2008 at 4:28 am

nice work :)..

But how will you know if the user is using a socks server?

Reply

12 CN October 2, 2009 at 3:21 am

When putting this code into a page, make sure has the “.php” extension, and not “.html” or “.htm”

Reply

13 Gopalakrishana October 18, 2010 at 10:11 am

Help me .I want try connect to computer in php programing .so please some example progarm and explain me
Thank You

Reply

14 Gopalakrishnan October 18, 2010 at 10:14 am

Help me .I want try connect two computer in php programing using socket programing.so please some example progarm and explain me

Reply

15 Sumesh Narmath November 2, 2010 at 1:39 pm

Excellent one! Thanks for uploading…

Reply

16 zahid November 22, 2010 at 4:01 pm

Great … Thanks for the post .. I was thinking about how to determine the country from this ip address ?

Reply

17 RaphG March 9, 2011 at 3:04 am

Good code. It’s useful. Thanks for providing that one.

Reply

18 love May 12, 2011 at 7:14 am

Hello evry1….I wanna 9 the ip address of local machine in the form of 192.168…….but i m getting the server’s ip address……. so can any1 give me solution of dis problm

THANKS IN ADVANCE

Reply

19 Nitesh Ahir May 18, 2011 at 12:42 pm

I am PHP web developer & CEO of web development company. I have excluded my office’s IP address from Google analytics.

But, I am little bit confuse with data of Google analytics which still give me details regarding my office staff member’s visit.

Can I make some integration to solve this issue? I want to check IP address of all visitors who are visiting my website in specific time frame.

Can you give me some idea about it or not? May I do it with help of Google analytics?

Reply

20 Private101 August 9, 2011 at 7:01 pm

Hold on. You said it can get the IP address of someone using a proxy. NOT TRUE. I’ve just tested this on a variety of proxies, and it didn’t stop it. Totally useless extra line of code.

Reply

21 Tim November 8, 2011 at 12:17 am

I am enhancing my website with php code I have the following code that will display a message to the suspect of an sql injection what I would like to do is add some code to log the visitors IP address to a table called sql_injection_suspects where it will store the IP address and the time of the event and the value of the save string:

$PUserid=strip_tags($_POST['lUSER']);
	$Ppassword=Strip_tags($_POST['lPASSWORD']);
	$sqlSafeUserid=mysqli_real_escape_string($con, $_POST['lUSER']);
	//Query users table and Email table to see if either exist
		$queryUserid = mysqli_query($con,"SELECT UserID, Password FROM tt_users WHERE UserID='$sqlSafeUserid'");
		$rowUserid = mysqli_num_rows($queryUserid);
			if (strpos($sqlSafeUserid, '\\') !== false)
			{
			echo 'your attempt to inject sql into my database has been reported we have modified your input to: ' .$sqlSafeUserid .'';
			echo '\'s and "s are not permited in feilds that query databases and will be prefixed with a \\';
			echo 'Click here to leave my website with your head hanging in shame';
			}
			else
			{// Some code to find the userid and validate the userid and password
}

Reply

22 AlAa YoSeF March 21, 2012 at 3:32 pm

Hi every one my name is AlAa

My problem with $_SERVER[‘remote_addr’]

I’m not sure if I’m having a problem with the installation of PHP on the server or if there’s something that I’m not doing right in the code, but I am trying to capture the IP address of anyone that is trying to log into a secure part of a site. Regardless of my IP address, when I do:

Code:

echo $_SERVER[‘remote_addr’];

It returns ‘192.168.1.1’. This is the first time I’ve written code that is being used on a Windows Server, so I don’t know if that has anything to do with it.

I’ve run phpinfo(), and in the PHP Variables section, it shows “_SERVER[“REMOTE_ADDR”]” : 192.168.1.1. Does this mean that the php.ini file is setup wrong, or am I missing something?

i am running my own server on windows 7 iis7.5 with php as fastcgi and i am behind a router with a dynamic ip not static and i am using
http://www.no-ip.com/ that give me a link to my router and i am opening 80 port in my router forwarding it to my id address 192.168.1.5 and i have tested a php file that contains

tested it using tor network that give me ip out of my network to test that file always give me the same result 192.168.1.1 i am trying to get IP address of the visitor and i asked someone of my friends to use this form it sends the same ip

i hope someone tells me what i am doing wrong and the solution for this problem

Thanks in advance

Reply

23 toodle bumpleskin May 11, 2012 at 4:22 pm

This is a good link, fixed the same error for me when I went through it!

Reply

24 PhpDev September 27, 2012 at 11:38 pm

Hay!!!

It’s a great thing what you have given here… It solved my problem on Server.

Again thank you very much for this.

Thanks & Regards,
PhpDev

Reply

25 Ganesh February 9, 2013 at 4:25 am

i want add in my blogger , blogspot site, please help me your code php not work with blogspot any other idea please give me, i want see my visitors ip..!

Reply

26 Mahi September 12, 2014 at 7:28 am

Am using this code but i am getting only last part of ip address( : : :1).how can i get full ip address..if any one know answer please reply.

Reply

27 Mi ip December 17, 2014 at 11:51 am

hi! Thanks for share!!! It,s work for me. How can i make a my ip widget ?
Thanks again!

Reply

Leave a Comment

Tagged as: , , , , , , , , , , ,

Previous Faq:

Next Faq: