白名单IP无法正常工作

时间:2014-12-14 19:43:56

标签: php

这是我的代码:

<?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”。请帮忙!

3 个答案:

答案 0 :(得分:1)

我不确定您的语法是否有效,但您应该使用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";
}

答案 1 :(得分:0)

您正在以一种在这里没有意义的方式使用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";
}
?>

答案 2 :(得分:0)

您的问题出现在$whitelist的定义中。 使用这种方式的or运算符表示如果计算结果为true,则取左边的值,否则如果计算结果为true,则取另一个值,否则为false。

你需要的是一个数组:

$whitelist = array("61.4.121.157", "43.4.521.32");

在测试中使用函数in_array