PHP重定向基于IP地址

问题描述 投票:-2回答:1

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

我该如何修改脚本?

php redirect
1个回答
1
投票

你的方法很奇怪。那些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";
© www.soinside.com 2019 - 2024. All rights reserved.