I have installed PHPTRAID to check my php codes. The following code
<?php echo $_SERVER['REMOTE_ADDR'];?> will give 127.0.0.1 as output. but i want the exact ip address (192...*) of the client.

The following java code ( in JSP page)
InetAddress i;
i=InetAddress.getLocalHost();
running on the same m/c will give the output as 192...;
only the php code is not responding. my m/c is in LAN. when i view the
"Local Area Connection Status", my m/c has its ip address as 192.
..;

Moreover, <?php
header("Location: http://www.google.com/");
?>
will give the warning as
Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\redirect.php:3) in c:\apache\htdocs\redirect.php on line 5.

help me.

    thanks for reply.
    $_SERVER['REMOTE_HOST'] doesn't give any output.

      $_SERVER['REMOTE_ADDR'];
      

      check out all the predefined $_SERVER variables here

        $SERVER[REMOTE_HOST] doesn't give any output.

        $SERVER[REMOTE_ADDR] gives local host's address(127.0.0.1 )as output. but i need client's ip address(192...*).

          when i use $_SERVER['REMOTE_ADDR']; i get my IP address..

          however, the ip address that you may have been told of by your ISP and the one that requests page information may be different if you use proxy or routers, etc..

            i have checked all server variables.
            <center><b>Server variables</b></center>
            <hr>
            GATEWAY_INTERFACE = <?php echo $SERVER['GATEWAY_INTERFACE']; ?> <br>
            SERVER_ADDR = <?php echo $
            SERVER['SERVER_ADDR']; ?> <br>
            SERVER_NAME = <?php echo $SERVER['SERVER_NAME']; ?> <br>
            SERVER_SOFTWARE = <?php echo $
            SERVER['SERVER_SOFTWARE']; ?> <br>
            SERVER_PROTOCOL = <?php echo $SERVER['SERVER_PROTOCOL']; ?> <br>
            REQUEST_METHOD = <?php echo $
            SERVER['REQUEST_METHOD']; ?> <br>
            REQUEST_TIME = <?php echo $SERVER['REQUEST_TIME']; ?> <br>
            QUERY_STRING = <?php echo $
            SERVER['QUERY_STRING']; ?> <br>
            DOCUMENT_ROOT = <?php echo $SERVER['DOCUMENT_ROOT']; ?> <br>
            HTTP_ACCEPT = <?php echo $
            SERVER['HTTP_ACCEPT']; ?> <br>
            HTTP_ACCEPT_CHARSET = <?php echo $SERVER['HTTP_ACCEPT_CHARSET']; ?> <br>
            HTTP_ACCEPT_ENCODING = <?php echo $
            SERVER['HTTP_ACCEPT_ENCODING']; ?> <br>
            HTTP_ACCEPT_LANGUAGE = <?php echo $SERVER['HTTP_ACCEPT_LANGUAGE']; ?> <br>
            HTTP_CONNECTION = <?php echo $
            SERVER['HTTP_CONNECTION']; ?> <br>
            HTTP_HOST = <?php echo $SERVER['HTTP_HOST']; ?> <br>
            HTTP_REFERER = <?php echo $
            SERVER['HTTP_REFERER']; ?> <br>
            HTTP_USER_AGENT = <?php echo $SERVER['HTTP_USER_AGENT']; ?> <br>
            HTTPS = <?php echo $
            SERVER['HTTPS']; ?> <br>
            REMOTE_ADDR = <?php echo $SERVER['REMOTE_ADDR']; ?> <br>
            REMOTE_HOST = <?php echo $
            SERVER['REMOTE_HOST']; ?> <br>
            REMOTE_PORT = <?php echo $SERVER['REMOTE_PORT']; ?> <br>
            SCRIPT_FILENAME = <?php echo $
            SERVER['SCRIPT_FILENAME']; ?> <br>
            SERVER_ADMIN = <?php echo $SERVER['SERVER_ADMIN']; ?> <br>
            SERVER_PORT = <?php echo $
            SERVER['SERVER_PORT']; ?> <br>
            SERVER_SIGNATURE = <?php echo $SERVER['SERVER_SIGNATURE']; ?> <br>
            PATH_TRANSLATED = <?php echo $
            SERVER['PATH_TRANSLATED']; ?> <br>
            SCRIPT_NAME = <?php echo $SERVER['SCRIPT_NAME']; ?> <br>
            REQUEST_URI = <?php echo $
            SERVER['REQUEST_URI']; ?> <br>
            PHP_AUTH_DIGEST = <?php echo $SERVER['PHP_AUTH_DIGEST']; ?> <br>
            PHP_AUTH_USER = <?php echo $
            SERVER['PHP_AUTH_USER']; ?> <br>
            PHP_AUTH_PW = <?php echo $SERVER['PHP_AUTH_PW']; ?> <br>
            AUTH_TYPE = <?php echo $
            SERVER['AUTH_TYPE']; ?> <br>

            by executing the above PHP codes, i got output as

                                                   Server variables

            GATEWAY_INTERFACE = CGI/1.1
            SERVER_ADDR = 127.0.0.1
            SERVER_NAME = localhost
            SERVER_SOFTWARE = Apache/1.3.23 (Win32)
            SERVER_PROTOCOL = HTTP/1.1
            REQUEST_METHOD = GET
            REQUEST_TIME =
            QUERY_STRING =
            DOCUMENT_ROOT = c:/apache/htdocs
            HTTP_ACCEPT = /
            HTTP_ACCEPT_CHARSET =
            HTTP_ACCEPT_ENCODING = gzip, deflate
            HTTP_ACCEPT_LANGUAGE = en-us
            HTTP_CONNECTION = Keep-Alive
            HTTP_HOST = localhost
            HTTP_REFERER =
            HTTP_USER_AGENT = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
            HTTPS =
            REMOTE_ADDR = 127.0.0.1
            REMOTE_HOST =
            REMOTE_PORT = 1642
            SCRIPT_FILENAME = c:/apache/php/php.exe
            SERVER_ADMIN = admin@localhost
            SERVER_PORT = 80
            SERVER_SIGNATURE =
            Apache/1.3.23 Server at localhost Port 80

            PATH_TRANSLATED = c:\apache\htdocs\test4.php
            SCRIPT_NAME = /php/php.exe
            REQUEST_URI = /test4.php
            PHP_AUTH_DIGEST =
            PHP_AUTH_USER =
            PHP_AUTH_PW =
            AUTH_TYPE =

            please help me to figure out what is going wrong with my codes.

              5 days later
              <?php
              echo ' Client IP: ';
              if ( isset($_SERVER["REMOTE_ADDR"]) )	{
              	echo '' . $_SERVER["REMOTE_ADDR"] . ' ';
              } else if ( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) )	{
              	echo '' . $_SERVER["HTTP_X_FORWARDED_FOR"] . ' ';
              } else if ( isset($_SERVER["HTTP_CLIENT_IP"]) )	{
              	echo '' . $_SERVER["HTTP_CLIENT_IP"] . ' ';
              }
              ?>
              

                The reason you're getting 127.0.0.1 from REMOTE_ADDR is because that is your remote address. If you type in http://localhost/ into your browser, you're using the loopback interface 127.0.0.1. This interface is entirely separate from your actual LAN address of 192.x.x.x that you're expecting.

                If you type in http://192.12.34.56/ (using your real internal IP instead), you'll see 192.12.34.56 returned. Why? Because you're connecting to Apache on a totally different interface.

                  a year later

                  I use this function :

                  function getIP() {
                  $ip;
                  if (getenv("HTTP_CLIENT_IP"))
                  $ip = getenv("HTTP_CLIENT_IP");
                  else if(getenv("HTTP_X_FORWARDED_FOR"))
                  $ip = getenv("HTTP_X_FORWARDED_FOR");
                  else if(getenv("REMOTE_ADDR"))
                  $ip = getenv("REMOTE_ADDR");
                  else
                  $ip = "UNKNOWN";
                  return $ip;

                  }

                  refer : http://admincmd.blogspot.com

                    4 months later

                    none of these _SERVER things worked for me either. but this did:

                    $joe = apache_request_headers();
                    echo $joe['PC-Remote-Addr'];

                      2 months later

                      Hi bradgrafelman

                        Am also getting same problem in getting Ipaddress... I tried my internal it ([url]http://192.168[/url]...) instead ([url]http://localhost/[/url]) bur stil am getting result as 127.0.0.1 like that..

                      wat is solution for this..

                        3 months later

                        hi chramya,

                        Are you connecting to apache from the same machine were apache is installed?

                        If you are doing this, you may check the following:
                        from command prompt type command (windows):
                        route print
                        it shows the route table, which will see something like that:

                        Network Destiny Netmask Gateway Interface Metrica
                        ....
                        172.168.0.7 255.255.255.255 127.0.0.1 127.0.0.1 10
                        .....
                        default gateway: 192.168.0.1

                        if you see a line on your ip have as a gateway 127.0.0.1, your connection to apache goes throught loopback (127.0.0.1).

                        Try to connect from other machine or put your web on a server (out of your local network) and try again.

                        Ujin

                          8 months later

                          [SIZE="3"]Hi i would like to kwon how can i see others IP from a mail I´ve recieved

                          Thanks...[/SIZE]

                            a year later

                            try this dude.

                            first pack in a variable like so.
                            <?PHP
                            $ip=$_SERVER["REMOTE_ADDR"];
                            ?>

                            and to use it where you want do this

                            <?PHP echo $ip; ?>

                            and there you have it.

                            also if you are testing it on your local server it will give you ip 127.0.0.1 as this is the local host ip. tru it on the net from another PC.

                            Good luck

                              I certainly hope he's had time to solve his issue in the two years since his last post.

                                6 months later

                                <?php
                                $ip= $REMOTE_ADDR;
                                echo " Your ip address: " . GetHostByName($ip);
                                ?>

                                  3 months later

                                  This script will assign the clients IP to a varrible so you can store it a database or just easily echo out the users IP addess. Hope this was help full!

                                  <?php 
                                  if ( isset($_SERVER["REMOTE_ADDR"]) )    { 
                                  $ip=$_SERVER["REMOTE_ADDR"] . ' '; 
                                  } else if ( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) )    { 
                                  $ip=$_SERVER["HTTP_X_FORWARDED_FOR"] . ' '; 
                                  } else if ( isset($_SERVER["HTTP_CLIENT_IP"]) )    { 
                                  $ip=$_SERVER["HTTP_CLIENT_IP"] . ' '; 
                                  } 
                                  echo 'Clients IP  Address: ' . $ip;
                                  ?>

                                    This script will assign the clients IP to a varrible so you can store it a database or just easily echo out the users IP addess. Hope this was help full! check out my site im building. www.mysocialent.net

                                    <?php 
                                    if ( isset($_SERVER["REMOTE_ADDR"]) ) { 
                                    $ip=$_SERVER["REMOTE_ADDR"] . ' '; 
                                    } else if ( isset($_SERVER["HTTP_X_FORWARDED_FOR"]) ) { 
                                    $ip=$_SERVER["HTTP_X_FORWARDED_FOR"] . ' '; 
                                    } else if ( isset($_SERVER["HTTP_CLIENT_IP"]) ) { 
                                    $ip=$_SERVER["HTTP_CLIENT_IP"] . ' '; 
                                    } 
                                    echo 'Clients IP Address: ' . $ip;
                                    ?>
                                      a year later
                                      trigg12;10818829 wrote:

                                      I use this function :

                                      refer : http://admincmd.blogspot.com

                                      You saved my life with this one, Trigg!
                                      I have user the 'REMOTE_ADDR' variable for years on the same server and suddenly, this started to give server address, not the client.
                                      Does anyone have an idea why this happened? I only tweaked with phptraffic. Maybe it has messed something in the shades?