简体   繁体   English

如何在php中获取客户端的公共ip

[英]how to get public ip of the client in php

I have to get public IP of the remote system in php. 我必须在php中获取远程系统的公共IP。 I have tried 我努力了

$_SERVER['REMOTE_ADDR']

getenv('REMOTE_ADDR');

but is always returning the private IP. 但总是返回私有IP。 Help to fix it. 帮助修复它。

Try this: 尝试这个:

$ip = !empty($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : (!empty($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']);

Warning: you should extend it and sanitize, since headers can be easily manipulated. 警告:您应该扩展并清理它,因为标头很容易操纵。

private function getIP()
{
    $client  = @$_SERVER['HTTP_CLIENT_IP'];
    $forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
    $remote  = $_SERVER['REMOTE_ADDR'];

    if(filter_var($client, FILTER_VALIDATE_IP))
    {
        $ip = $client;
    }
    elseif(filter_var($forward, FILTER_VALIDATE_IP))
    {
        $ip = $forward;
    }
    else
    {
        $ip = $remote;
    }

    return $ip;
}
echo getIP();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM