PHP重定向基于IP地址

时间:2015-03-16 23:18:48

标签: php redirect

我需要显示特定范围的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地址。

如何修改脚本?

1 个答案:

答案 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";