PHP: HowTo Read an IP Address of Remote Computer / Browser

Posted on in Categories , , last updated August 25, 2013

How do I read an IP address of remove system or browser using PHP server side programming language? How can I get client IP address and store it to the variable called $ip using php+apache?

PHP has in built facility to detect remote browser, IP address, and other properties. These values are assigned to special variable. In this case, it is assigned to a variable called REMOTE_ADDR. You can use any one of the following statement to obtained or read IP address.

PHP syntax to find out an IP address

The syntax is:

$ip = $_SERVER['REMOTE_ADDR'];

OR

$ip= $REMOTE_ADDR;

OR

$ip = $_SERVER['REMOTE_ADDR'];

OR

$ip = getenv('HTTP_CLIENT_IP');

PHP syntax to find out remote host name

The syntax is:

$ip = $_SERVER['REMOTE_ADDR'];
$hostname = gethostbyaddr($ip);

OR

$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);

Example

Create a file called client-ip.php and store or upload at your Web-server DocumentRoot (e.g. /var/www/html/client-ip.php):

<?php
// client-ip.php : Demo script by nixCraft <www.cyberciti.biz>
// get an IP address
$ip = $_SERVER['REMOTE_ADDR'];
// display it back
echo "<h2>Client IP Demo</h2>";
echo "Your IP address : " . $ip;
echo "<br>Your hostname : ". gethostbyaddr($ip) ;
?>

Save and close the file. Open a web-browser and type your url:
http://your-sercer-name-here/client-ip.php
OR
http://127.0.0.1/client-ip.php
Sample outputs:

Fig.01 client-ip.php output
Fig.01 client-ip.php output

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

29 comment

  1. hi,

    I am trying to figure out the “spam” word enabled form submission like this one …anyone here can help me ..

    Thanks

  2. echo “ Your hostname : ” . GetHostByName($ip);

    You can get the host name from IP.gethostbyname

    gethostbyname – Get the IP address corresponding to a given Internet host name

    Try the gethostbyaddr for this task.

  3. hey! this is a child’s play! such an easy thing! i said that coz i am 15 and a hard core PHP developer!!

  4. I don’t understand something. 5 of my friends using different HOSTS in different CITIES used a script that logged each user’s IP address and time in a database and all their IP was exactly the same as mine. I used $_SERVER[‘REMOTE_ADDR’]

    1. Hey ben, all of your IP’s are the same since all of you are using the same ISP or the same main ISP:

      user1->ISP1->main_isp->internet
      you->ISP3->main_isp->internet

      So the website actually detects your main_isp IP address since none of you have a dedicated IP address on the internet.

  5. They are all behind the same proxy-server. In that case $_SERVER[‘REMOTE_ADDR’] provides you with the ip-address of the proxy-server.

    This function will determine the real ip-adress:

    function ipCheck() {
    		if (getenv('HTTP_CLIENT_IP')) {
    			$ip = getenv('HTTP_CLIENT_IP');
    		}
    		elseif (getenv('HTTP_X_FORWARDED_FOR')) {
    			$ip = getenv('HTTP_X_FORWARDED_FOR');
    		}
    		elseif (getenv('HTTP_X_FORWARDED')) {
    			$ip = getenv('HTTP_X_FORWARDED');
    		}
    		elseif (getenv('HTTP_FORWARDED_FOR')) {
    			$ip = getenv('HTTP_FORWARDED_FOR');
    		}
    		elseif (getenv('HTTP_FORWARDED')) {
    			$ip = getenv('HTTP_FORWARDED');
    		}
    		else {
    			$ip = $_SERVER['REMOTE_ADDR'];
    		}
    		return $ip;
    	}
    1. it do not work if client computer is using ISA Server.

      but code is working fine if client is connected with DSL , or modem direct internet connection.

      can any one provide how do I resolved issue on intranet application/ Client is using ISA

  6. how can i get the ip address of the client requesting a particular url?
    if possible give me a php code for the same..

  7. supose am chatting with my friend using gtalk how would i get his ip address. [what command do i got to use in DOS]. what i got his ip what command [DOS} do i use to get his host name.
    One more thing to what command to view that a specified computer is online or not.

  8. Why do you have 2 x same conditions in this script ?

    elseif (getenv(‘HTTP_X_FORWARDED_FOR’)) {
    $ip = getenv(‘HTTP_X_FORWARDED_FOR’); x 2
    }
    and

    elseif (getenv(‘HTTP_FORWARDED’)) {
    $ip = getenv(‘HTTP_FORWARDED’); x 2
    }

    1. they arent 2 same conditions in the script marco, if you check back you will notice all the conditions have a slight difference

  9. Simple working excellent

    <?php
    $ip = $_SERVER['REMOTE_ADDR'];
    $hostaddress = gethostbyaddr($ip);
    $browser = $_SERVER['HTTP_USER_AGENT'];
    $referred = $_SERVER['HTTP_REFERER']; // a quirky spelling mistake that stuck in php
    
    print "Display IP address:";
    print "$ip";
    print "More detailed host address:";
    print "$hostaddress";
    print "Display browser info:";
    print "$browser";
    print "Where you came from (if you clicked on a link to get here:";
    if ($referred == "") {
    print "Page was directly requested";
    }
    else {
    print "$referred";
    }
    ?>
    
  10. Great article, thank you it’s really useful for me because i want to track how many users logged into my website daily.

Comments are closed.