嗨,我还有另一个问题,我正在用 PHP 编写一个简单的网站,但我的网站在本地网络中的可见性有问题,无法使其对我使用的远程地址可见
$_SERVER['REMOTE_ADDRESS']
,但我想让它在我的 LAN 中可见。
我该怎么做??
同样在 .htaccess 中,您可以允许来自您的 IP/子网,如下所示:
Order Deny,Allow
Deny from all
Allow from 192.168.1.1/24
当然它应该匹配你的LAN
您应该在 .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
对于 Apache 2.2,得票最高的答案是正确的。如果你使用2.4,你必须使用这样的东西:
<Limit GET POST>
Require all denied
Require ip 192.168.1.0/24
</Limit>
order deny,allow
deny from all
allow from ::1
allow from 192.168.0.1 etc...
::1
效果很好(这也在Windows主机文件中指定)。
我不完全确定,但也许这是一个足够好的解决方案:
if( substr($_SERVER['REMOTE_ADDRESS'], 0, 3) == '10.' ) {
// welcome...
}
问题可能很旧并且结构不是很好,但我有类似的需求并最终来到这里,所以我正在根据 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>");
}