白名单 IP 不起作用


Whitelist IP not working

这是我的代码:

<?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函数。