2

我正在调解从客户端 A 到服务器 B 的请求。客户端 A 可能是电话或笔记本电脑。服务器 B 想知道客户端 A 的 IP 地址,但他们正在$_SERVER['REMOTE_ADDR']. 因为我正在访问服务器 B,所以他们得到了“错误”的值$_SERVER['REMOTE_ADDR']——他们得到了我服务器的 IP 地址。我该怎么做才能让服务器 B$_SERVER['REMOTE_ADDR']在他们的端点访问时看到客户端的 IP 地址?

4

2 回答 2

5

这发生在您的 PHP 脚本无法覆盖的层上。标X-Forwarded-For头的存在是为了中继真实的客户端 IP,但远程服务器必须支持这个容易被欺骗的值。

$header = "X-Forwarded-For: {$_SERVER['REMOTE_ADDR']}, {$_SERVER['SERVER_ADDR']}";
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, array($header));
于 2012-10-03T01:10:27.783 回答
0

编辑:先前的答案是完美的。这仅适用于您自己的 dev-ip 干扰客户端统计信息的情况。

在没有更多信息的情况下,在最基本的层面上,您应该删除自己的“开发者 IP”,这样您就不会被包含在任何统计/数据/日志中......

您的 IP 可能与相关服务器不同:

<?php 

$dev_ip = '217.12.14.14' // your dev IP address

if ($_SERVER['REMOTE_ADDR'] == $dev_ip){
    // do nothing
} else {
    // do|show|log something
}

这不考虑动态 IP 地址分配(而不是静态 IP)。动态 IP 通常由 ISP 分配,这会导致进一步的问题。

于 2012-10-03T01:19:41.977 回答