首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP中准确的客户端IP

PHP中准确的客户端IP
EN

Stack Overflow用户
提问于 2013-07-04 14:10:05
回答 4查看 612关注 0票数 0

我想在PHP中匹配我的客户端IP。我已将客户端IP地址存储在http://www.whatismyip.com/提供的数据库IP地址中。

在PHP中,我经常这样获取客户端IP地址

代码语言:javascript
运行
复制
$client_ip = $_SERVER['REMOTE_ADDR'];

但是这两个IP地址给出的值是不同的。

有没有办法在PHP中获得正确的IP地址

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-04 18:09:28

代码语言:javascript
运行
复制
function get_ip_address(){
    foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_X_CLUSTER_CLIENT_IP', 'HTTP_FORWARDED_FOR', 'HTTP_FORWARDED', 'REMOTE_ADDR') as $key){
        if (array_key_exists($key, $_SERVER) === true){
            foreach (explode(',', $_SERVER[$key]) as $ip){
                $ip = trim($ip); // just to be safe

                if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false){
                    return $ip;
                }
            }
        }
    }
}
票数 0
EN

Stack Overflow用户

发布于 2013-07-04 14:15:35

$_SERVER['REMOTE_ADDR']返回web服务器看到的发出请求的IP地址。当您从本地IP地址访问web服务器时,这可能主要是不同的。因为whatismyip.com会返回您的公网IP,您的服务器会收到您的本端IP的请求。

尝试从远程位置访问该页面,您将获得正确的IP。

票数 1
EN

Stack Overflow用户

发布于 2013-07-04 14:15:52

如果你在本地开发...很明显会有不同的地址:

  • 外部网站将向您显示公共one
  • 内部站点将向您显示本地one

参见。您是否识别私有范围中的本地地址?

一旦您在线部署您的项目(在不在您的网络中的服务器上),事情将按预期工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17463006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档