这是我的代码:
<?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”。请帮忙!
答案 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
。