我们如何使用PHP跟踪代理背后的真实IP地址?我的意思是纯粹的PHP实现。因为他们可以关闭浏览器的js .BTW当JS打开时我可能会使用HTML 5地理定位所以我不需要IP地址来定位用户。
答案 0 :(得分:12)
如果发送了一个X-Forwarded-For HTTP标头,您可以查看它,但无法保证知道。
答案 1 :(得分:10)
此PHP代码将起作用,对正向和反向代理很有用。对于反向代理,请注意X_FORWARDED_FOR标头信息(如果可用的话)可以伪造,并且根本不应该被信任。
if($_SERVER["HTTP_X_FORWARDED_FOR"] != ""){
$IP = $_SERVER["HTTP_X_FORWARDED_FOR"];
$proxy = $_SERVER["REMOTE_ADDR"];
$host = @gethostbyaddr($_SERVER["HTTP_X_FORWARDED_FOR"]);
}else{
$IP = $_SERVER["REMOTE_ADDR"];
$proxy = "No proxy detected";
$host = @gethostbyaddr($_SERVER["REMOTE_ADDR"]);
}
答案 2 :(得分:1)
代理服务器后面的用户没有可全局路由的IP地址。如果你想保持会话状态,你最好使用你生成的会话密钥,并将其设置为cookie,或将其保存在URL中(这种方法存在权衡)。
如果您真的想知道他们的IP地址在他们自己的网络上是什么,您可以在页面中使用javascript找到它,然后将其发送回您的服务器。