Tried a lot of code on the Internet is not working, but ip138 every time to show my real IP. Special Beg You heroes.
For example, I use normal PHP to get my IP address is: 60.55.8.229-Ningbo, Zhejiang
But ip38.com get my IP address is: [42.196.192.67] From: Shanghai Great Wall Broadband
Ip138 is the right one.
I am in the hospital test also this, own PHP code to obtain the IP is Zhejiang Hangzhou
But ip138 can get my real IP, Shanghai Jiaotong University
I now use the following PHP code:
function GetIP () {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 GetIP ();
Reply to discussion (solution)
Not studied, I want to know.
Look forward to the answer downstairs
Http://iframe.ip138.com/ic.asp
Maybe the ASP has magical functions?
? Is my method:
Function Curip () {$ip = ' ', IF (Getenv (' http_client_ip ') and strcasecmp (Getenv (' http_client_ip '), ' unknown ')) {$ip = Getenv (' http_client_ip ');} ElseIF (Getenv (' http_x_forwarded_for ') and strcasecmp (Getenv (' http_x_forwarded_for '), ' unknown ') {$ip =getenv (' HTTP _x_forwarded_for ');} ElseIF (Getenv (' remote_addr ') and strcasecmp (Getenv (' remote_addr '), ' unknown ') {$ip =getenv (' remote_addr ');} ElseIF (Isset ($_server[' REMOTE_ADDR ']) and $_server[' REMOTE_ADDR '] and strcasecmp ($_server[' remote_addr '), ' unknown ' ) {$ip =$_server[' remote_addr ');} else{$ip = ' 127.0.0.1 ';} Return $ip;}
function Real_ip ()
{
static $realip = NULL;
if ($realip!== NULL)
{
return $realip;
}
if (Isset ($_server))
{
if (Isset ($_server[' http_x_forwarded_for '))
{
$arr = Explode (', ', $_server[' http_x_forwarded_for ');
/* Take the first non-unknown valid IP string in X-forwarded-for */
foreach ($arr as $ip)
{
$ip = Trim ($IP);
if ($ip! = ' Unknown ')
{
$realip = $ip;
Break
}
}
}
ElseIf (Isset ($_server[' http_client_ip '))
{
$realip = $_server[' http_client_ip ');
}
Else
{
if (Isset ($_server[' remote_addr '))
{
$realip = $_server[' remote_addr ');
}
Else
{
$realip = ' 0.0.0.0 ';
}
}
}
Else
{
if (getenv (' http_x_forwarded_for '))
{
$realip = getenv (' http_x_forwarded_for ');
}
ElseIf (getenv (' http_client_ip '))
{
$realip = getenv (' http_client_ip ');
}
Else
{
$realip = getenv (' remote_addr ');
}
}
$ONLINEIP = null;
Preg_match ("/[\d\.") {7,15}/", $realip, $ONLINEIP);
$realip =!empty ($onlineip [0])? $ONLINEIP [0]: ' 0.0.0.0 ';
return $realip;
}
No matter how complicated your code is, it's all checked in turn.
Http_client_ip
Http_x_forwarded_for
Remote_addr
exists and ends once one exists
However, it is important to note that both HTTP_CLIENT_IP and http_x_forwarded_for are programmable
Like what
$ip = ' 888.888.888.888 ';
curl_setopt ($ch, Curlopt_httpheader,array ("X-forwarded-for: $ip", "Client-ip: $ip"));
Then your code will assume that IP is 888.888.888.888.
Apparently, it's a joke.
REMOTE_ADDR always reflects the first-level routed IP of the access network, which is the real IP
Real? No, I'm a proxy, you're stupid.
To break the proxy ... It's really a problem. Need other technology PHP bad implementation
The personal use of goagent Google's agent, 99% of all can not be measured out drops.
Using the functions in PHP can be implemented
The above code to get the IP method, there is no error, wrong in your server may be single-line.
I personally tested, the same PHP code, using the United States server, access to the real Great Wall broadband IP is wrong, the use of Hangzhou Ali Baba multi-line server, access and ip138, the same as the use of Xiamen Telecom line, the acquisition of IP is also wrong. Visible multi-line in the domestic is very important. Domestic is his grandmother's fucking, man-made a lot of obstacles.