PHP Client IP address
Many times we need the visitor’s ipaddress for validation, security, spam prevention, etc. Getting the Visitor’s ipaddress is very easy in PHP.
The simplest way to get the visitor’s/client’s ipaddress is using the$_SERVER[‘REMOTE_ADDR’] or $_SERVER[‘REMOTE_HOST’] variables.
1 2 |
// Get the client ip address $ipaddress = $_SERVER [ 'REMOTE_ADDR' ] |
However, sometimes this does not returns the correct ipaddress of the visitor, so we can use some other server variables to get the ipaddress. You can use any of the following 2 functions. Both the functions are equivalent with the difference only in how and from where the values are retrieved.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Function to get the client ip address function get_client_ip() { $ipaddress = '' ; if ( getenv ( 'HTTP_CLIENT_IP' )) $ipaddress = getenv ( 'HTTP_CLIENT_IP' ); else if ( getenv ( 'HTTP_X_FORWARDED_FOR' )) $ipaddress = getenv ( 'HTTP_X_FORWARDED_FOR' "); else if ( getenv ( 'HTTP_X_FORWARDED' )) $ipaddress = getenv ( 'HTTP_X_FORWARDED' ); else if ( getenv ( 'HTTP_FORWARDED_FOR' )) $ipaddress = getenv ( 'HTTP_FORWARDED_FOR' ); else if ( getenv ( 'HTTP_FORWARDED' )) $ipaddress = getenv ( 'HTTP_FORWARDED' ); else if ( getenv ( 'REMOTE_ADDR' )) $ipaddress = getenv ( 'REMOTE_ADDR' ); else $ipaddress = 'UNKNOWN' ; return $ipaddress ; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
// Function to get the client ip address function get_client_ip() { $ipaddress = '' ; if ( $_SERVER [ 'HTTP_CLIENT_IP' ]) $ipaddress = $_SERVER [ 'HTTP_CLIENT_IP' ]; else if ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]) $ipaddress = $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]; else if ( $_SERVER [ 'HTTP_X_FORWARDED' ]) $ipaddress = $_SERVER [ 'HTTP_X_FORWARDED' ]; else if ( $_SERVER [ 'HTTP_FORWARDED_FOR' ]) $ipaddress = $_SERVER [ 'HTTP_FORWARDED_FOR' ]; else if ( $_SERVER [ 'HTTP_FORWARDED' ]) $ipaddress = $_SERVER [ 'HTTP_FORWARDED' ]; else if ( $_SERVER [ 'REMOTE_ADDR' ]) $ipaddress = $_SERVER [ 'REMOTE_ADDR' ]; else $ipaddress = 'UNKNOWN' ; return $ipaddress ; } |
getenv() is used to get the value of an environment variable in PHP
$_SERVER is an array contains server variables created by the web server.
Note: HTTP_X_FORWARDED_FOR sometimes returns internal or local IP address, which is not usually useful. Also, it would return a comma separated list if it was forwarded from multiple ipaddresses.
Note: This would work only on live site, because on your local host your ip would be one of the internal ip addresses, like 127.0.0.1
References:
- PHP Manual – $_SERVER
- PHP Manual – getenv()
- http://roshanbh.com.np/2007/12/getting-real-ip-address-in-php.html
- http://admincmd.blogspot.com/2007/08/php-get-client-ip-address.html