This article introduces the differences between HTTP_X_FORWARDED_FOR, HTTP_VIA, and REMOTE_ADDR in php when obtaining the real IP address of a user.
I. No proxy server is used:
REMOTE_ADDR = your IP address
HTTP_VIA = no value or no display
HTTP_X_FORWARDED_FOR = no value or no display
Ii. Transparent proxy server: Transparent Proxies
REMOTE_ADDR = IP address of the last Proxy Server
HTTP_VIA = Proxy Server IP Address
HTTP_X_FORWARDED_FOR = your real IP address. When multiple proxy servers are used, this value is similar to the following: 203.98.1820.3, 203.98.1820.3, 203.129.72.215.
This type of proxy server still forwards your information to your access object, which cannot hide your real identity.
Iii. Normal Anonymous proxy server: Anonymous Proxies
REMOTE_ADDR = IP address of the last Proxy Server
HTTP_VIA = Proxy Server IP Address
HTTP_X_FORWARDED_FOR = Proxy Server IP address. When multiple proxy servers are used, this value is similar to the following: 203.98.1820.3, 203.98.1820.3, 203.129.72.215.
Your real IP address is hidden, but you are disclosed to the access object that you use the proxy server to access them.
Iv. destorting Proxies
REMOTE_ADDR = Proxy Server IP Address
HTTP_VIA = Proxy Server IP Address
HTTP_X_FORWARDED_FOR = random IP address. When multiple proxy servers are used, the value is as follows: 203.98.182.163, 203.98.182.163, 203.129.72.215.
It tells the access object that you used the proxy server, but fabricated a false random IP address instead of your real IP address to cheat it.
5. High Anonymity Proxies (Elite proxies)
REMOTE_ADDR = Proxy Server IP Address
HTTP_VIA = no value or no display
HTTP_X_FORWARDED_FOR = no value or no value is displayed. When multiple proxy servers are used, the value is similar to the following: 203.98.182.163, 203.98.182.163, 203.129.72.215.
The proxy server information replaces all your information, just as you directly access the object using the proxy server.
Example 1 (obtain the real IP address of the user)
The code for HP to obtain the real IP address of a user is as follows:
The Code is as follows: |
Copy code |
Function getIp (){ If ($ _ SERVER ['HTTP _ CLIENT_IP ']) { $ Ip = $ _ SERVER ['HTTP _ CLIENT_IP ']; // PHP obtains the IP address } Elseif ($ _ SERVER ['HTTP _ X_FORWARDED_FOR ']) { $ Ip = $ _ SERVER ['HTTP _ X_FORWARDED_FOR ']; } Else { $ Ip = $ _ SERVER ['remote _ ADDR ']; // PHP obtains the IP address } } |
Example 2
The Code is as follows: |
Copy code |
<? Php /* Mktime: 2012/9/9 */ // Obtain the user's real IP Address Function get_client_ip (){ If (getenv ("HTTP_CLIENT_IP") & strcasecmp (getenv ("HTTP_CLIENT_IP"), "unknown ")) $ Ip = getenv ("HTTP_CLIENT_IP "); Else If (getenv ("HTTP_X_FORWARDED_FOR") & strcasecmp (getenv ("HTTP_X_FORWARDED_FOR"), "unknown ")) $ Ip = getenv ("HTTP_X_FORWARDED_FOR "); Else If (getenv ("REMOTE_ADDR") & strcasecmp (getenv ("REMOTE_ADDR"), "unknown ")) $ Ip = getenv ("REMOTE_ADDR "); Else If (isset ($ _ SERVER ['remote _ ADDR ']) & $ _ SERVER ['remote _ ADDR '] & strcasecmp ($ _ SERVER ['remote _ ADDR'], "unknown ")) $ Ip = $ _ SERVER ['remote _ ADDR ']; Else $ Ip = "unknown "; Return ($ ip ); } Echo $ ip = get_client_ip (); // This is your ip address. ?> |