我需要显示特定范围的IP地址和我想要重定向的其他人的内容。
我找到了用于检查IP地址的代码:
<?php
$ip_ban = array();
$ip_ban[] = "10.10.*.*";
$ip_ban[] = "10.111.111.10";
if(in_array($_SERVER['REMOTE_ADDR'],$ip_ban))
{
header("Location: http://www.yahoo.com/");
}
else
{
//Do loop through bans:
foreach($ip_ban as $ban)
{
if(eregi($ban,$_SERVER['REMOTE_ADDR']))
{
header("Location: http://www.yahoo.com/");
}
//Finished loop
}
} ?>
代码有效,它真的重定向到雅虎,但我需要显示内容而不是重定向。并重定向所有其他IP地址。
如何修改脚本?
答案 0 :(得分:1)
你的做法很奇怪。与野外卡ips匹配的那些in_array
是无用的。想想所有的IP都是preg模式。
<?php
$ip_ban = [
"10\.10\.\d\.\d";
"10\.111\.111\.10"
];
foreach($ip_ban as $ban)
{
if(\preg_match("/$ban/", $_SERVER['REMOTE_ADDR']))
{
header("Location: http://www.yahoo.com/");
exit;
}
}
echo "not banned";