перенаправление с if, основанное на cookie с использованием заголовка ('location:'), приводит к странной ошибке в firefox - PullRequest
0 голосов
/ 20 июля 2010

Я пытаюсь перенаправить своих посетителей, например, на http://localhost/site/test.php?lang=en_US на основе кода страны в файле cookie, например:

if (isset($_COOKIE['country'])) 
{
        $country = $_COOKIE['country'];
        header('Location: test.php?lang=en_US');  

        if ($country == "NO"){              
        header('Location: test.php?lang=no_NO');    
        }                       
}
else
{
    header('Location: test.php?lang=en_US');  
}

Но я получаю странную ошибку в Firefox: The page isn't redirecting properly

Нашел решение:

if (!isset($_GET['lang']))
{

        if (isset($_COOKIE['country'])) 
        {
                $country = $_COOKIE['country'];
                $redirect = "en_US";

                if ($country == "NO"){              
                $redirect = "no_NO";    
                header('Location: crime.php?lang='.$redirect); 
                }   

                if ($country == "EN"){              
                $redirect = "en_US";    
                header('Location: crime.php?lang='.$redirect); 
                }   

        }
        else
        {
            header('Location: crime.php?lang=en_US'); 
        }


}       

1 Ответ

3 голосов
/ 20 июля 2010

Проблема в том, что он безоговорочно перенаправляет, и всегда к самому себе, вызывая бесконечный цикл, который Firefox обнаруживает и останавливает. Вам нужно добавить условия для предотвращения перенаправлений после достижения последней страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...