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