Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要关于在PHP中获取NAT后面的IP地址的建议吗_Php_Ajax_Json_Jsonp_Ip Address - Fatal编程技术网

需要关于在PHP中获取NAT后面的IP地址的建议吗

需要关于在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)请求发送到

我在这里试图实现的是获取连接到具有公共ip地址的机器的计算机的本地ip地址

我们有一个具有公共IP地址(比如X)的服务器。此外,我们办公室有15台计算机,具有本地ip地址(192.168.20…)。我想知道是哪台计算机改变了我们系统中的某些东西。我们都在互联网上使用公共IP Y。我们都知道,使用
$\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服务器,但很明显,没有它它是行不通的