Метод перенаправления страницы - Javascript или PHP? - PullRequest
1 голос
/ 12 января 2011

Какой способ перенаправления с одной страницы на другую более надежен? Мне нужно иметь ссылку, которая выводит пользователя на пустую страницу, где сначала выполняется некоторый php-код (в фоновом режиме), а затем он перенаправляет на целевую страницу. Я хотел бы сделать это без проблем, чтобы пользователь не знал, что он был перенаправлен. Я использовал для этого javascript, и он работал нормально, но с отключенным Javascript он просто не будет работать. Будет ли работать перенаправление php в этом случае? Можно ли использовать функцию header () после выполнения какого-либо другого php-кода? Все советы приветствуются.

Ответы [ 5 ]

4 голосов
/ 12 января 2011

Перенаправление из PHP с помощью header('Location: '.$URL); die; - это наиболее надежное перенаправление, которое вы можете сделать (поскольку оно работает на уровне HTTP).

Единственная проблема в том, что вы не можете перенаправить таким образом , если у вас естьпроизвел любой вывод уже.Это то, чего вы можете избежать, просто продумав поток кода и спроектировав его соответствующим образом, но если придет конец, вы можете вставить его в существующую базу кода, используя возможности PHP буферизации вывода (базовый пример здесь ).

2 голосов
/ 12 января 2011

Да, заголовок может быть вызван после запуска php-кода, только убедитесь, что вы не выводите текст. Затем отправьте заголовок местоположения.

0 голосов
/ 12 января 2011

Почему бы не использовать AJAX для вызова скрипта, который обрабатывает данные, а затем, когда этот AJAX завершен, вы можете перенаправить на внешнюю страницу?

Если все, что делает ваш первый скрипт, это вычисляет данные и перенаправляет без возвраталюбой реальный контент, то нет смысла заставлять страницу быть загруженной синхронно и отображаться с нормальным HTTP-запросом.Я предполагаю, что вам разрешено использовать JavaScript, так как это в вашем вопросе.

0 голосов
/ 12 января 2011

да, вы можете выполнить код с помощью PHP перед перенаправлением. Просто убедитесь, что вы используете правильный код состояния HTTP для этой работы. (Я предполагаю, что по умолчанию 302 будет уместно, но вы никогда не знаете.)

Этот метод будет предупреждать машину клиента о перенаправлении, но имеет тенденцию быть достаточно плавным, чтобы обычный пользователь не заметил.

0 голосов
/ 12 января 2011

Перенаправление PHP будет работать, если вы не отправляли какой-либо вывод перед заголовком. Но да, легко заметить, что вы перенаправлены.

...