PHP - 如何使页面仅在本地网络中可见

问题描述 投票:0回答:6

嗨,我还有另一个问题,我正在用 PHP 编写一个简单的网站,但我的网站在本地网络中的可见性有问题,无法使其对我使用的远程地址可见

$_SERVER['REMOTE_ADDRESS']

,但我想让它在我的 LAN 中可见。

我该怎么做??

php .htaccess lan
6个回答
13
投票

同样在 .htaccess 中,您可以允许来自您的 IP/子网,如下所示:

Order Deny,Allow
Deny from all
Allow from 192.168.1.1/24

当然它应该匹配你的LAN


5
投票

您应该在 .htaccess 文件中执行此操作。

首先指定“全部拒绝”, 然后指定应允许的 IP 地址列表。

order deny,allow
deny from all
allow from X.X.X.X
allow from X.X.X.X
allow from X.X.X.X

您可以允许这样的范围:

allow from 10.0.0.0-10.255.255.255
allow from 10.0-255.0-255.0-255
allow from 10.*.*.*

如果您想允许

1.2.3.254
1.2.3.255
1.2.4.1
1.2.4.2
1.2.4.3
1.2.4.4
,
你可以这样做:

allow from 1.2.3.254-1.2.4.4

2
投票

对于 Apache 2.2,得票最高的答案是正确的。如果你使用2.4,你必须使用这样的东西:

<Limit GET POST>
 Require all denied
 Require ip 192.168.1.0/24
</Limit>

1
投票
order deny,allow
deny from all
allow from ::1
allow from 192.168.0.1 etc...

::1
效果很好(这也在Windows主机文件中指定)。


0
投票

我不完全确定,但也许这是一个足够好的解决方案:

if( substr($_SERVER['REMOTE_ADDRESS'], 0, 3) == '10.' ) {
   // welcome...
}

0
投票

问题可能很旧并且结构不是很好,但我有类似的需求并最终来到这里,所以我正在根据 xCander 的想法编写我的想法,以在 PHP 中解决这个问题。此代码将检查远程地址是否在子网“192.168.1.0/24”中,以便允许任何像“192.168.1.x”这样的IP访问。其他一切都会被切断。

 // get partial IP from remote address
 $IP = explode(".", $_SERVER['REMOTE_ADDR']);
 $subnet = $IP[0].".".$IP[1].".".$IP[2].".";

 if ($subnet == "192.168.1.")
         {
                 // code when IP is inside this same local LAN, allowed
                 echo "Subnet ".$subnet." is allowed! <br>";
         }
 else
         {
                    // code when rempte IP is NOT in the local LAN, so DENY
                    echo "IP address ".$subnet.$IP[3]." is NOT allowed! <br>";
                    // optionally kill further executing
                    die("Stopping execution, IP isn't allowed! <br>");
         }
© www.soinside.com 2019 - 2024. All rights reserved.