PHP Methods to Get Real Client IP Address

When developing with PHP, it’s often necessary to identify the user’s IP address. The simplest way is to use the `$_SERVER` superglobal variable.

// Simple IP fetch
$client_ip = $_SERVER['REMOTE_ADDR'];
echo 'Client IP Address: ' . $client_ip;

However, in real-world cases where users access your site via proxy servers or CDNs, this method may not give the original IP. To handle that, PHP can also check certain headers:

// IP with proxy handling
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
    $client_ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
    $client_ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
    $client_ip = $_SERVER['REMOTE_ADDR'];
}
echo 'Client IP Address: ' . $client_ip;

To enhance this, you can use the `getenv()` function, which checks the environment variables set by your web server:

// Using getenv() to get IP
function getUserIP() {
    $ip = getenv('HTTP_CLIENT_IP');
    if (!$ip) $ip = getenv('HTTP_X_FORWARDED_FOR');
    if (!$ip) $ip = getenv('HTTP_X_FORWARDED');
    if (!$ip) $ip = getenv('HTTP_FORWARDED_FOR');
    if (!$ip) $ip = getenv('HTTP_FORWARDED');
    if (!$ip) $ip = getenv('REMOTE_ADDR');

    $ip_array = explode(',', $ip);
    return trim($ip_array[0]);
}

Call it like this:

$client_ip = getUserIP();
echo 'Client IP Address: ' . $client_ip;

Keep in mind that header values can be spoofed. Use this only for informational or low-security purposes.

 

Leave a Comment

Your email address will not be published. Required fields are marked *

Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.