我试图使我的PHP页面不允许查看页面,除非你在一个特定的IP如下所示。我不知道该怎么做,因为我没有真正使用PHP很长时间了。
$clientip = $_SERVER['REMOTE_ADDR'];
$whitelistedip = 'realIPhere';
if ($clientip == $whitelistedip) {
echo "Welcome $clientip!";
}
if ($clientip !== $whitelistedip) {
die("Access Denied");
}
IP检查位似乎没有错误,但如果只使用REMOTE_ADDR
进行检查,在某些情况下检查可能会失败,因此请参考此问题实现更好的IP检查方法。
此外,除非您在其他地方定义了它们,否则REQUEST_URL
和URL_OF_CURRENT_PAGE
不是$_SERVER
环境的有效变量。您可以查看REQUEST_URI
,这确实是一个有效的。你可以在这里咨询他们。
我明白,如果IP被列入白名单,您希望只显示HTML页面内容。您可以使用如下所示的语法:
<?php
$clientip = $_SERVER['REMOTE_ADDR'];
$whitelistedip = 'realIPhere';
?>
<?php if ($clientip == $whitelistedip) : ?>
<!-- Place all your HTML here, example: -->
<p>hi</p>
<?php else : ?>
<?php die("Access denied") ?>
<?php endif ?>
在上述情况下,如果IP不在白名单中,则不会显示<p>hi</p>
。当然,你应该把你网页的实际内容放上去,而不是hi
。
我认为对$URL_OF_CURRENT_PAGE
的测试是失败的。我不明白你为什么要这么做,你只是想阻止他直接到达那里吗?如果是我来写的话,就简单多了:
if ($clientip == $whitelistedip) {
echo "Welcome $clientip!";
}
else {
die ("Access Denied");
}