местоположение заголовка не перенаправляет сразу, ищет альтернативу - PullRequest
0 голосов
/ 05 января 2012

Я писал скрипт, в конце которого у меня был заголовок перенаправления.

Затем я добавил заголовок перенаправления в середине, если возникнет конкретное условие.

Я был очень удивлен, заметив, что последний заголовок ("Location: http // mydomain.com") был тем, который сработал. Я думал, что заголовок автоматически «выпрыгнет» со страницы, но, похоже, он просто сохраняет его в памяти и сначала просматривает всю страницу.

Есть идеи о том, что такое "правильный" способ "обрезать" страницу потока и изменений?

<?php
$specific_condition=true;
// I wanted this to be the end
if($specific_condition) header("Location: http://google.com/"); 
// But it still triggers following redirect
header("Location: http://bing.com/");
?>

Ответы [ 2 ]

3 голосов
/ 05 января 2012

Всегда звоните exit; сразу после вашего Location заголовка:

if($specific_condition) {
    header("Location: http://google.com/"); 
    exit;
}
Функция

header() сама собирает заголовки для отправки клиенту. Так что не предполагается останавливать выполнение после какого-либо конкретного заголовка, например Location. Но пока нет смысла что-то делать после , вы решили перенаправить пользователя - exit используется

0 голосов
/ 05 января 2012

вы можете использовать переменную для хранения адреса местоположения

Таким образом, вы также можете выполнить некоторый код после установки нового местоположения.

$location = 'http://bing.com/';
$specific_condition=true;   
if($specific_condition) $location = 'http://google.com';

//do something else
header("Location: " . $location);
...