古典的なコードを使用して、内部ネットワークであっても外部ネットワークであっても、ユーザーの実際の IP アドレスを取得できます。必要な友人はそれを参照できます。
コードは次のとおりです | コードをコピー |
/** * ユーザーの実際の IP アドレスを取得します * * @戻り文字列 */ 関数 real_ip(){ 静的 $realip = NULL; If ($realip !== NULL){ 戻り $realip; } If (isset($_SERVER)){ If (isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ $arr =explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); /* X-Forwarded-For で最初の未知ではない有効な IP 文字列を取得します */ foreach ($arr AS $ip){ $ip = トリム($ip); If ($ip != '不明'){ $realip = $ip; 休憩; } } } elseif (isset($_SERVER['HTTP_CLIENT_IP'])){ $realip = $_SERVER['HTTP_CLIENT_IP']; } その他{ If (isset($_SERVER['REMOTE_ADDR'])){ $realip = $_SERVER['REMOTE_ADDR']; } その他{ $realip = '0.0.0.0'; } } } 他{ If (getenv('HTTP_X_FORWARDED_FOR')){ $realip = getenv('HTTP_X_FORWARDED_FOR'); } elseif (getenv('HTTP_CLIENT_IP')){ $realip = getenv('HTTP_CLIENT_IP'); } その他{ $realip = getenv('REMOTE_ADDR'); } } Preg_match("/[d.]{7,15}/", $realip, $onlineip); $realip = !empty($onlineip[0]) $onlineip[0] : '0.0.0.0'; $realip を返します; } |