可能重复:
服务器如何找到真实的客户端 IP 地址?
我需要让我的用户非常快速轻松地找到他们的本地(LAN)IP。
我们的网络有一个 squid 代理,所以所有用户都坐在它后面(这是内部 ip 检测的问题:我尝试过的所有 php 脚本都能够 - 充其量 - 检测代理的 ip 而不是客户端的)。
欢迎在 LAMP 服务器上使用任何类型的语言...
Windows上的一个简单的EXE文件也可以作为“计划b”工作,但我找不到任何工作。
可能重复:
服务器如何找到真实的客户端 IP 地址?
我需要让我的用户非常快速轻松地找到他们的本地(LAN)IP。
我们的网络有一个 squid 代理,所以所有用户都坐在它后面(这是内部 ip 检测的问题:我尝试过的所有 php 脚本都能够 - 充其量 - 检测代理的 ip 而不是客户端的)。
欢迎在 LAMP 服务器上使用任何类型的语言...
Windows上的一个简单的EXE文件也可以作为“计划b”工作,但我找不到任何工作。
考虑在浏览器中加载的 java 小程序。由于 java 使用它自己的虚拟环境,它将能够向客户端显示本地 IP 地址。
我猜是开始的好方法-> http://reglos.de/myaddress/MyAddress.html
Java 获取 IP:如何检查 Java 中的系统 IP 地址/主机名?
这样你就不必改变当前的环境。否则它可能会涉及 squid 重新配置。
从您发布的评论中,我可以看到将 IP 呈现给客户端的目的是让他们向您阅读并允许您远程连接。您还提到在客户端运行应用程序是一种选择。这立即将我推向 BGInfo http://technet.microsoft.com/en-us/sysinternals/bb897557.aspx - 特别是如果客户端操作系统是 Windows。
放置在页面上的简单 Java aplet:
function myIP(){ var vi="uses java to get the users local ip number"
var yip2=java.net.InetAddress.getLocalHost();
var yip=yip2.getHostAddress();
return yip;
}//end myIP
alert("your machine's local network IP is "+ myIP())
在@German Arlington 的回答之后,我认为您最好的选择是配置 Squid以将X-Forwarded-For
标头与 HTTP 请求一起发送:
如果设置为“on”,Squid 将在它转发的 HTTP 请求中附加您客户端的 IP 地址。默认情况下,它看起来像:
X-Forwarded-For: 192.1.2.3
然后您将能够通过apache_request_headers()读取 PHP 中的 IP 地址
<?php
$headers = apache_request_headers();
echo $headers["X-Forwarded-For"];
?>
你可能感兴趣
http://roshanbh.com.np/2007/12/getting-real-ip-address-in-php.html
并且通常在应该包含您要查找的信息的 http 标头中