проблема перенаправления в цикле for в PHP - PullRequest
0 голосов
/ 20 августа 2009

я использую xajax framework

Я хочу перенаправить мой URL-адрес для цикла. каждый раз, когда его перейти на home.php, наконец,

мой пример кода это

for($i=0;$i<4;$i++) {
    if($i == 1) {
        header("index.php")
    } else {
        header("home.php")
    }
}

Ответы [ 5 ]

6 голосов
/ 20 августа 2009

Ну, так как начальное значение '$ i' равно 0, блок else будет вызываться в первый раз, который указывает на home.php.

Почему даже есть цикл, чтобы сделать это? Это не имеет смысла.

2 голосов
/ 20 августа 2009

В чем именно смысл этого кода? Вы можете иметь только один редирект в вашем скрипте.

И это должно быть написано так:

header('Location: home.php');
exit;

без выхода, код продолжает работать.

0 голосов
/ 20 августа 2009

Дело в том, что после перенаправления происходит новая загрузка страницы. PHP запускает все по-новому, поэтому ваш цикл будет запущен новым. Это означает, что на каждой странице $ я начну с 0 и вернусь к 3.

header ("Location ... не перенаправляет вас автоматически, вы отправили что-то пользователю или остановили страницу (с помощью exit или die) для отправки заголовков. Таким образом, ваш цикл for всегда будет перенаправлять на home.php, потому что это последний заголовок, заданный в цикле for, а не потому, что он первый.

0 голосов
/ 20 августа 2009

Я согласен с этим постом: проблема перенаправления в цикле for в PHP

Но если вы все еще хотите это сделать, вы можете найти обходной путь, передав переменную, определяющую, что ваш цикл уже выполнен + вы должны прекратить выполнение, перенаправляя страницу.

Вы можете использовать этот код и изменить по-своему:

if(!isset($_GET['ex']) || $_GET['ex'] != '1') //can use ether isset or/and check its value  
{
    for($i=0;$i<4;$i++) 
    {
        if($i == 1)
        {
            header("index.php?ex=1");
            die(); //or exit();
        } else {
            header("home.php?ex=1");
            die(); //or exit();
        }
    }
}
0 голосов
/ 20 августа 2009

Это простая ошибка, в которую я сам впадаю, но header () может устанавливать множество различных заголовков; вам нужно указать заголовок Location (со страницей для перенаправления):

header("Location: index.php")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...