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

Posted on in Categories , , , , , , , , , , , last updated April 4, 2013

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:

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.

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

35 comment

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

      1. It works. Your url will show as :::1

        The code is:

        // Check connection
        if (!$conn) {
            die("Connection failed: " . mysqli_connect_error());
        }
        
        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";
            }
        
  2. 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.

    1. 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.

  3. 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 :)

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

    Thanx,
    Umair

  5. 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

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

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

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

  9. 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

  10. 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?

  11. 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.

  12. 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
    }
    
  13. 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

  14. 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

  15. 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..!

  16. 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.

    1. u r seeing in server comp so this way it will displays loopback address::
      check it in other computer you will see the ip .

  17. create a php page which show the ip address of client who is visting the website , on page load, alert my id address ,

    so plz help me dear sir plz help this problume

Comments are closed.