|
|
|
| Я в нескольких местах вычитал, что для вывода до header можно использовать буфер. Это так? То есть, после этого header будет работать? У меня пока не получается...
<?ob_start();
$file=file("t.txt");
$row="";
for($i=0;$i<count($file);$i++){
$row.=$file[$i];
}
print $row;
ob_flush();
header("Location: test.php");
?>
|
| |
|
|
|
|
|
|
|
для: Shorr Kan
(10.05.2005 в 01:42)
| | Вообще-то, ситуация такова:
test.php
<table>
<tr><td id="text"></td></tr>
<tr><td><iframe src="iframe.php" width="200" height="200" frameborder="1"></iframe></td></tr>
</table>
|
iframe.php
<?ob_start();
$file=file("t.txt");
$row="";
for($i=0;$i<count($file);$i++){
$row.=$file[$i];
}
?>
<script>//parent.document.reload();
parent.document.all['text'].innerText="<?print $row;ob_flush();?>";
</script>
<?header("Location: iframe.php");?>
|
| |
|
|
|
|
|
|
|
для: Shorr Kan
(10.05.2005 в 01:42)
| | На самом деле header сработает раньше вывода, на этом весь эффект и построен. Я применил здесь установку cookie, но можно поставить и Location, только результата видно не будет так как редирект будет происходить раньше, чем придут данные для вывода в браузер. Чудес не бывает, заголовки всё равно должны отправляться первыми, а данные за ними - буффер - это лишь обходной манёвр, чтобы более удобно организовать код.
<?php
// Помещаем всё в буффер
ob_start();
$file=file("t.txt");
$row="";
for($i=0;$i<count($file);$i++)
{
$row.=$file[$i];
}
// Преждевременный вывод в окно браузера
print $row;
// занесение содержимого буфера в переменную
$strtmp = ob_get_contents();
// очищение буфера вывода и отключение буферизации вывода
ob_end_clean();
setcookie("test",5,time()+3600);
// Отправляем информацию из буффера
// в браузер
echo $strtmp;
?>
|
| |
|
|
|