[TC] HTML, PHP: how to make a redirect without meta tags?

Vande omentaina, Tiflocomp!
Народ, вот такой вопрос.
Я обычно делаю редиректы так:
echo "<html><head><title>redirect</title> <meta http-equiv=\"Refresh\" content=\"3;
URL=index.php\"></head>
<h3 align=center>Ваше сообщение успешно отправлено!</h3>";
Однако в спецификации HTML 4.01 говорится, что этот способ применять
не рекомендуется, лучше редиректить со стороны сервера.
Внимание, вопрос: как редиректнуть со стороны сервера, если заголовки
уже переданы (про header ("Location: index.php") знаю)?
Спасибо!
Приветствую всех.
Андрей пишет:
Имеет значение: начался ли вывод в поток данных (тела) http-сообщения или нет.
То есть заголовки функцией header() вы можете отсылать сколько угодно, но, грубо
говоря, лишь до первого echo.
Здесь желательно понимать, как устроено http-сообщение. Как и в сообщениях электронной
почты, в http-сообщении, упрощенно говоря, есть два фрагмента: заголовок (обязательно)и
данные (опционально). поля заголовка всегда отсылаются до начала пересылки данных
(понятно, что все происходит в рамках одного соединения). То есть все, что прислано
до начала передачи данных, считается заголовками. Данные от заголовков отделяются
пустой строкой (т.е. последовательностью \r\n\r\n).
Так называемый "исходный текст страницы", который вы можете просмотреть в браузере,
является данными http-сообщения.
Подробнее см. спецификацию http 1.1.
Следовательно, как только началась передача данных (контента) http-сообщения
(т.е. отправлена пустая строка), передача http-Заголовка становится невозможной
(точнее, он будет рассматриваться как часть данных).
В php есть возможность перехватывать вывод в поток (т. н. буферизация вывода,
см. функции с префиксом ob_...) и это позволяет отправлять поля заголовка при
помощи функции header() из любого места в скрипте (даже после использования echo).
Успехов. Анатолий.