这是我的代码:
<?php
$whitelist = "61.4.121.157" or "43.4.521.32";
$ip = $_SERVER['REMOTE_ADDR'];
if ($ip == $whitelist) {
echo "You can access the whitelist page!";
} else {
echo "Bad IP";
}
?>
我正在尝试这样做,因此如果您有 61.4.121.157 或 43.4.521.32 作为 IP 地址,您可以收到"您可以访问白名单页面!但是,它只显示61 IP的此页面。43 个 IP 有"坏 IP"。请帮忙!
我不确定你的语法是否有效,但你应该使用 in_array()
:
$whitelist = array("61.4.121.157", "43.4.521.32");
$ip = $_SERVER['REMOTE_ADDR'];
if (in_array($ip, $whitelist)) {
echo "You can access the whitelist page!";
} else {
echo "Bad IP";
}
您使用or
运算符的方式在这里没有意义。该运算符只为您的变量$ip
分配一个地址,在这种情况下只分配第一个地址。
试试这个:
<?php
$whitelist = ["61.4.121.157", "43.4.521.32"];
$ip = $_SERVER['REMOTE_ADDR'];
if (in_array($ip, $whitelist)) {
echo "You can access the whitelist page!";
} else {
echo "Bad IP";
}
?>
你的问题在于$whitelist
的定义。以这种方式使用的or
运算符说,如果它的计算结果为 true,则取我左侧的值,如果它的计算结果为 true,则取另一个值,否则为 false。
你需要的是一个数组:
$whitelist = array("61.4.121.157", "43.4.521.32");
并使用测试中in_array
函数。