Current Location: Home> Latest Articles> Practical Methods and Code Examples for Getting Real IP Address in PHP

Practical Methods and Code Examples for Getting Real IP Address in PHP

gitbox 2025-08-10

Introduction

In PHP development, obtaining the visitor's real IP address is a common requirement. However, due to complex network environments, IP address retrieval is often affected by proxies and load balancers. This article explores multiple methods to get the real IP and offers code examples to help developers correctly identify the client IP.

Obtaining HTTP Header Information

The HTTP request headers contain client IP information. The most basic variable is REMOTE_ADDR, which records the client's IP.

Getting the REMOTE_ADDR Value

$ip = $_SERVER['REMOTE_ADDR'];
echo "IP Address: $ip";

This code outputs the current visitor's IP address. However, note that REMOTE_ADDR may contain the proxy or load balancer IP rather than the real client IP.

Getting the X-Forwarded-For Header

To address proxy-related issues, many proxies add the X-Forwarded-For header to record the real client IP.

$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
echo "IP Address: $ip";

However, this header is not always provided by proxies and can be spoofed, so it shouldn't be fully trusted.

Using Proxy Libraries to Improve Accuracy

In complex environments, using specialized PHP proxy libraries is an effective way to improve the accuracy of IP retrieval by analyzing multiple HTTP headers.

Getting Real IP Address Using Cloudflare

If your site is behind Cloudflare, you can use the corresponding library to accurately obtain the real IP:

require_once 'vendor/autoload.php';
use Cloudflare\IpRewrite;
$ipRewrite = new IpRewrite();
$ip = $ipRewrite->getIp();
echo "IP Address: $ip";

This library parses Cloudflare-specific headers to ensure the real client IP is obtained.

Using Other Proxy Libraries to Get Real IP

Besides Cloudflare, other open-source proxy libraries like JShrink/Proxy-Test can help analyze multiple HTTP headers to accurately get the IP:

require_once 'vendor/autoload.php';
use JShrink\ProxyTest;
$proxyTest = new ProxyTest();
$ip = $proxyTest->getIp();
echo "IP Address: $ip";

Conclusion

Getting the visitor's real IP is a frequent need in PHP development. Directly reading REMOTE_ADDR is simple but unreliable behind proxies. Using X-Forwarded-For or specialized proxy libraries improves accuracy. It's also important to protect user privacy and use IP information responsibly.