我需要显示特定范围的IP地址和我想要重定向的其他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地址。
我该如何修改脚本?
你的方法很奇怪。那些in_array
与野外卡ips的比赛是徒劳的。想想所有的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";