我试图让我的 PHP 页面禁止查看该页面,除非您使用某个 IP,如下所示。我不知道该尝试什么,因为我真的很长时间没有使用 PHP。
$clientip = $_SERVER['REMOTE_ADDR'];
$whitelistedip = 'realIPhere';
if ($clientip == $whitelistedip) {
echo "Welcome $clientip!";
}
if ($clientip !== $whitelistedip) {
die("Access Denied");
}
答案 0 :(得分:1)
IP校验位好像没有错误,只是如果只用REMOTE_ADDR
校验,在某些情况下可能校验失败,参考this问题实现更好的方法检查IP。
此外,除非您在其他地方定义了它们,否则 REQUEST_URL
和 URL_OF_CURRENT_PAGE
不是 $_SERVER
环境的有效变量。您可能正在研究 REQUEST_URI
,这确实是一个有效的。您可以咨询他们here。
我知道如果 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
。
答案 1 :(得分:0)
我认为针对 $URL_OF_CURRENT_PAGE
的测试失败了。我不明白你为什么要那样做,你只是在他直接到达那里的情况下才试图阻止吗?如果我正在编码它会更简单一些:
if ($clientip == $whitelistedip) {
echo "Welcome $clientip!";
}
else {
die ("Access Denied");
}