通常、誰もが $_SERVER['REMOTE_ADDR'] を使用してユーザーの IP を取得します
ただし、リバース プロキシが使用されている場合、HTTP ヘッダーの REMOTE_ADDR はユーザーのアドレスではなく、上位レベルのプロキシのアドレスになります。
調査の結果、ユーザーの実際の外部 IP を取得するには 2 つの方法があります。
方法 1:curl
コードをコピーします コードは次のとおりです:
function get_onlineip() {
$ch =curl_init('http://www.ip138.com/ip2city.asp ');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$a =curl_exec($ch);
return $ip); 1];
}
方法 2: $_SERVER['HTTP_X_FORWARDED_FOR'] を使用して、対応するアドレスを取得します
コードをコピーします コードは次のとおりです:
function get_onlineip() {
$ onlineip = '';
if( getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
$onlineip = getenv('HTTP_CLIENT_IP')
} elseif(getenv('HTTP_X_FORWARDED_FOR') ) && strcasecmp(getenv('HTTP_X_FORWARDED_ FOR '), 'unknown')) {
$onlineip = getenv('HTTP_X_FORWARDED_FOR')
} elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), '不明')) {
$onlineip = getenv('REMOTE_ADDR');
} elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], '不明')) {
$onlineip = $_SERVER['REMOTE_ADDR']
}
return $onlineip;
http://www.bkjia.com/PHPjc/321807.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/321807.html技術記事通常、ユーザーの IP を取得するには $_SERVER['REMOTE_ADDR'] を使用しますが、リバース プロキシを使用する場合、HTTP ヘッダーの REMOTE_ADDR はユーザーのアドレスではなく、上位プロキシのアドレスになります...