需要关于在PHP中获取NAT后面的IP地址的建议吗
我在这里试图实现的是获取连接到具有公共ip地址的机器的计算机的本地ip地址 我们有一个具有公共IP地址(比如X)的服务器。此外,我们办公室有15台计算机,具有本地ip地址(192.168.20…)。我想知道是哪台计算机改变了我们系统中的某些东西。我们都在互联网上使用公共IP Y。我们都知道,使用需要关于在PHP中获取NAT后面的IP地址的建议吗,php,ajax,json,jsonp,ip-address,Php,Ajax,Json,Jsonp,Ip Address,我在这里试图实现的是获取连接到具有公共ip地址的机器的计算机的本地ip地址 我们有一个具有公共IP地址(比如X)的服务器。此外,我们办公室有15台计算机,具有本地ip地址(192.168.20…)。我想知道是哪台计算机改变了我们系统中的某些东西。我们都在互联网上使用公共IP Y。我们都知道,使用$\u服务器['REMOTE\u ADDR']我只能获取地址Y,但无法获取本地IP地址(192.168.20.N) 所以我在一台本地机器上安装了webserver,然后我将ajax(jsonp)请求发送到
$\u服务器['REMOTE\u ADDR']
我只能获取地址Y,但无法获取本地IP地址(192.168.20.N)
所以我在一台本地机器上安装了webserver,然后我将ajax(jsonp
)请求发送到该本地机器,我获取计算机的本地IP地址,然后在每个请求中将该IP地址发送到公共服务器。一切正常,我得到了本地和公共IP地址但我想知道是否有更好的方法可以做到这一点?
这是我的test.js脚本
$(document).ready(function(){
var _ip = '';
$.ajax({
url: 'http://192.168.20.24/getIP.php', //local machine
dataType: 'jsonp',
success: function(response){
_ip = response;
$.ajax({
url: 'getIP.php', //public address
type: 'POST',
dataType: 'json',
data: {
ip: _ip
},
dataType: 'json',
success: function(response){
$('#local').html(response.local);
$('#public').html(response.public);
}
})
}
});
});
local getIP.php
header('content-type: application/json; charset=utf-8');
echo $_GET['callback'] . '('.json_encode($_SERVER['REMOTE_ADDR']).')';
echo json_encode(array('local' => $_POST['ip'], 'public' => $_SERVER['REMOTE_ADDR']));
和public getIP.php
header('content-type: application/json; charset=utf-8');
echo $_GET['callback'] . '('.json_encode($_SERVER['REMOTE_ADDR']).')';
echo json_encode(array('local' => $_POST['ip'], 'public' => $_SERVER['REMOTE_ADDR']));
提前谢谢
注意:编写代码仅用于测试目的。IP地址信息不得用于身份验证。这是不安全的。重点
如果您想对个人甚至计算机进行身份验证,请使用身份验证系统。考虑到基于用户名/密码或基于公钥/私钥的身份验证系统。IP地址信息不得用于身份验证。这是不安全的。重点
如果您想对个人甚至计算机进行身份验证,请使用身份验证系统。我们想到了基于用户名/密码或基于公钥/私钥的身份验证系统。Javascript在HTTP级别运行,因此Javascript世界中没有IP地址 你设计的解决方案,我相信这是获得客户私人地址的唯一途径,这个解决方案确实是不安全的,尽管在您的案例中,这个问题不太重要,因为您似乎完全控制了客户端、服务器和两者之间的网络 要获得真正安全的解决方案,请使用。我知道您并不真正关心客户端的IP地址本身,只想将其用作身份验证的手段(或者只是身份验证?:D)
配置不是琐碎的,但也不是火箭发射。这里是(阿帕奇)。它假定使用公共证书颁发机构颁发的证书,但您可以生成并使用自己的自签名证书(,)Javascript在HTTP级别运行,因此Javascript世界中没有IP地址这类东西 你设计的解决方案,我相信这是获得客户私人地址的唯一途径,这个解决方案确实是不安全的,尽管在您的案例中,这个问题不太重要,因为您似乎完全控制了客户端、服务器和两者之间的网络 要获得真正安全的解决方案,请使用。我知道您并不真正关心客户端的IP地址本身,只想将其用作身份验证的手段(或者只是身份验证?:D)
配置不是琐碎的,但也不是火箭发射。这里是(阿帕奇)。它假定使用由公共证书颁发机构颁发的证书,但您可以生成并使用自己的自签名证书(,)我不使用它进行身份验证,而且它仅在我们的办公室中使用,所以不用担心,我知道应该如何进行身份验证。我知道你们中的一些人会告诉我不应该这样做,但相信我,我们需要这些信息,除了出于安全考虑,你们会看到,由于NAT,它显然不起作用。无论安全性如何,身份验证系统都能解决这个问题。事实上,正如我所说的,它工作得很好,我可以看到本地和公共IP地址,我只是想知道是否有更好的解决方案。如果它对您有效,您就可以了。更好的解决方案不包括用于身份验证的IP地址。最明显的优点是您不再需要本地web服务器。也许在使用当前解决方案一段时间后,您会了解到这一点……;)曾经说过它是用于身份验证的,只是想知道用户登录的是哪台电脑,这就是itI。我不使用它进行身份验证,而且它只在我们办公室使用,所以不用担心,我知道应该如何进行身份验证。我知道你们中的一些人会告诉我不应该这样做,但相信我,我们需要这些信息,除了出于安全考虑,你们会看到,由于NAT,它显然不起作用。无论安全性如何,身份验证系统都能解决这个问题。事实上,正如我所说的,它工作得很好,我可以看到本地和公共IP地址,我只是想知道是否有更好的解决方案。如果它对您有效,您就可以了。更好的解决方案不包括用于身份验证的IP地址。最明显的优点是您不再需要本地web服务器。也许在使用当前解决方案一段时间后,您会了解到这一点……;)No1曾经说过它用于身份验证,只是想知道用户登录的pc是什么,这就是itTnx作为你的答案,我只是想从我的体系结构中删除本地web服务器,但显然如果没有itTnx作为你的答案,它将无法工作,我只是想从我的体系结构中删除本地web服务器,但很明显,没有它它是行不通的