gpt4 book ai didi

php - 自定义服务器应用程序所需的内部 IP 地址 - PHP SERVER 变量

转载 作者:行者123 更新时间:2023-12-04 05:37:54 25 4
gpt4 key购买 nike

我读过这个:

How to get the my system's IP address

但这并没有真正解决我的根本问题。我需要获取内部网络上的客户端 IP,例如 192.168.1.7以便我知道是否从内部位置访问服务器。

我正在更新一些前一段时间由其他人构建的代码,这个代码片段就在那里:

$octet = explode(".", getenv("REMOTE_ADDR"), 4);

if($octet[0] != 192 && $octet[1] != 168 && $octet[2] != 1) {
die("You are unable to view this page from your current location.");
}

这看起来像是在测试该内部 IP,但在另一个具有类似代码的页面上,我得到了 die信息。该代码实际上显示我的 IP 不是 192.168.1.7 (这段代码实际上显示了 ISP 给我的静态 IP):
if($octet[0] != 192 && $octet[1] != 168 && $octet[2] != 1) { 
die("You are unable to view this page from your current location: " . getenv("REMOTE_ADDR"));
}

我有点困惑,因为这段代码过去似乎有效,但现在不行。我不完全确定它什么时候停止工作,但根据我看到的代码,它一开始就不应该工作。

注意

我还应该提到,所有需要访问该服务器的客户端都是内部的(大部分)。这是一个带有自定义许可证 key 模块的 CRM。我希望这些 PHP 页面只能被 192.168.1.0 上的那些客户端访问。网络。但棘手的部分是,有一种方法可以在如下位置使用 DNS 从外部访问 CRM 的非关键系统部分:
crm.my-domain.com
可以说,那些从网络外部访问 CRM 的客户不应该访问关键模块;只有 192.168.1.0 上的那些客户网络应该能够看到 key 。因此,如果我可以获得内部 IP,我可以对其进行测试并显示页面。

注 2

我正在网络中运行 DNS,并且我在路由器上有一个端口转发到有问题的服务器,即 <internal_ip>。在端口 80 .

DNS 有这样的 A 记录:
crm_servername    A    192.168.1.20

它有一个 CNAME这个的:
crm    CNAME    crm_servername.my-domain.com

我是否需要更多,或者这对我有用吗?目前我可以通过子域地址访问有问题的服务器,但是当我访问有问题的页面时,它仍然显示一个外部 IP, non-192.168.1.x ...

我的问题是,如何设置我的 DNS 区域文件,以便当我在本地网络上时,我转到 IP 上的服务器,例如 192.168.1.20,我留在网络中并且不会被路由出去然后再回来?看来我要从 ISP 静态 IP 出去然后进来,而服务器认为是这样。

最佳答案

如果您将其更改为以下代码,您可能会使此代码更好地工作:

function is_local($ip) {
$octet = explode('.', $ip);

return ($octet[0] == '10' ||
($octet[0] == '172' && ((int)$octet[1] >=16 && (int)$octet[1] <= 31)) ||
($octet[0] == '192' && $octet[1] == '168')
);
}

此代码将检查 IP 地址是否属于 private network 中的任何一个。范围,这应该意味着您的客户端是内部的或通过 VPN 连接的。

这可能会解决您的问题,或者可能过于广泛。如果您的 IP 显示为来自您的 ISP 的 IP,那么当您认为自己在本地网络上时,您不知何故不在本地网络上,或者您正在被端口转发到内部网络,因此仍将远程 IP 地址显示给服务器。

关于php - 自定义服务器应用程序所需的内部 IP 地址 - PHP SERVER 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11696250/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com