Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Php Headers

1.9K
02 июля 2005 года
Ananim
156 / / 15.05.2005
Почему всё время приходится нажимать (REFRESH) , иначе выводит старую версию файла !!!
Нашел ответ : http://forum.codenet.ru/showthread.php?threadid=4852
Но у меня выводится ошибка :
Warning: Cannot modify header information - headers already sent by (output started at /home/s/snk-ananim.hut1.ru/WWW/index.php:9) in ...
Кто мне поможет ???
253
02 июля 2005 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
Originally posted by Ananim
Почему всё время приходится нажимать (REFRESH) , иначе выводит старую версию файла !!!
Нашел ответ : http://forum.codenet.ru/showthread.php?threadid=4852


Надо просто послать четыре header'а: для браузера два для прокси и еще какой-то
Но у меня выводится ошибка :
Warning: Cannot modify header information - headers already sent by (output started at /home/s/snk-ananim.hut1.ru/WWW/index.php:9) in ....

Эта ошибка появляется когда вывод уже был сделан
Например:

 
Код:
<?
echo "1";
Header(....); // ошибка сдесь
?>

 
Код:
<html>
1
<?
Header(....); // ошибка сдесь 2
?>

Надо так:
<?
Header(....); ?>
1
271
02 июля 2005 года
MrXaK
721 / / 31.12.2002
а можно вот так вот
<?php
ob_start();
ob_flush();
flush(); /* это потому что не всегда просто flush() работает *.
echo "aaa";
flush();
header("Location: aaa");
flush();
ob_end_flush();
?>

з.ы. в принципе вместо всех ob_* достаточно просто flush() если сервак нормально настроен...
12K
04 июля 2005 года
droont
5 / / 28.06.2005
Цитата:
Originally posted by Mr.Hacker
а можно вот так вот
<?php
ob_start();
ob_flush();
flush(); /* это потому что не всегда просто flush() работает *.
echo "aaa";
flush();
header("Location: aaa");
flush();
ob_end_flush();
?>

з.ы. в принципе вместо всех ob_* достаточно просто flush() если сервак нормально настроен...



нет , объяснили же , что заголовки ДОЛЖНЫ БЫТЬ ДО ЛЮБОГО ВЫВОДА ИЛИ HTML , а у тебя
...
echo "aaa";
...
header("Location: aaa");
...

1.9K
04 июля 2005 года
Ananim
156 / / 15.05.2005
Цитата:

Надо просто послать четыре header'а: для браузера два для прокси и еще какой-то


Но у меня выводится ошибка :
Warning: Cannot modify header information - headers already sent by (output started at /home/s/snk-ananim.hut1.ru/WWW/index.php:9) in ....

Цитата:

Эта ошибка появляется когда вывод уже был сделан
Например:
 
Код:
<?
echo "1";
Header(....); // ошибка сдесь
?>

 
Код:
<html>
1
<?
Header(....); // ошибка сдесь 2
?>


Нет у меня в скрипте таких ошибок , я до этого не использовал Headers !!!

Может кто знает в чем праблема ????

271
04 июля 2005 года
MrXaK
721 / / 31.12.2002
Цитата:
Originally posted by droont
нет , объяснили же , что заголовки ДОЛЖНЫ БЫТЬ ДО ЛЮБОГО ВЫВОДА ИЛИ HTML , а у тебя
...
echo "aaa";
...
header("Location: aaa");
...



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

1.9K
04 июля 2005 года
kasap
168 / / 07.04.2005
Цитата:
Originally posted by Ananim
Но у меня выводится ошибка :
Warning: Cannot modify header information - headers already sent by (output started at /home/s/snk-ananim.hut1.ru/WWW/index.php:9) in ....


Нет у меня в скрипте таких ошибок , я до этого не использовал Headers !!!

Может кто знает в чем праблема ????



Тебе же сказали, что подобная ошибка происходит в том случае, если до headers, выводится в браузер любая информация, даже пробел. Так что ищи, где это у тебя происходит.

8
04 июля 2005 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by Ananim
Но у меня выводится ошибка :
Warning: Cannot modify header information - headers already sent by (output started at /home/s/snk-ananim.hut1.ru/WWW/index.php:9) in ....


Нет у меня в скрипте таких ошибок , я до этого не использовал Headers !!!

Может кто знает в чем праблема ????


Код в студию!

253
04 июля 2005 года
Proger_XP
1.5K / / 07.08.2004
Может у тебя в Apache библиотекарь стоит, который что-то выводит или include() или require()

Насчет flush()
Сомневаюсь что это будет работать, т.к flush() отправляет то что ты уже вывел в браузер(очищает буфер)
То же самое будет если ты поменяешь размер буфера(функцию не помню), т.е пока клиент не примет N данных сервер не будет посылать больше

Ananim
Напиши сюда хотя бы начало твоего кода

З.Ы: написано же: Output started in .... ))
271
04 июля 2005 года
MrXaK
721 / / 31.12.2002
Цитата:
Originally posted by Proger_XP
Насчет flush()
Сомневаюсь что это будет работать, т.к flush() отправляет то что ты уже вывел в браузер(очищает буфер)
То же самое будет если ты поменяешь размер буфера(функцию не помню), т.е пока клиент не примет N данных сервер не будет посылать больше


не знаю, но у меня работает... сначала посылаются куки, потом скрипт, потом если надо - редерикт.. если без flush() то как раз пишет про хедеры, если с flush() то спокойно переадресовывает...

1.9K
04 июля 2005 года
Ananim
156 / / 15.05.2005
Цитата:

Может у тебя в Apache библиотекарь стоит, который что-то выводит


у меня сайт на Agave .

Цитата:
или include() или require()


нет нету у меня в скрипте не include() , не require()

Цитата:
Ananim
Напиши сюда хотя бы начало твоего кода


Ok , сразу предупреждаю код у меня очень страшный т.к. я молодой человек 16-и лет и только недавно сел за компьютер !!!

Код:
<title>Ananim &copy</title>
<body background="images/canpaper.gif" text="black" link="green" alink="black" vlink="red" topmargin="0" leftmargin="0">

<table align="center" width="100%" border="0" cellpading="0" cellpacing="0">
 <tr>
  <td width="5" background="images/obr.bmp">
  </td>
  <td valign="top" width="175">
   <table border="0" cellpadding="0" cellspacing="0" valign="top">
    <tr>
     <td width="175" valign="top">
     


       <center></center>

       <center></center>

       <center></center>

       <center></center>

       <center></center>

       <center></center>

       <center></center>

       <center></center>

       <center></center>
     


     </td>
    </tr>

Вот !
271
04 июля 2005 года
MrXaK
721 / / 31.12.2002
вопрос, и куда в этом файле ты пихешь те хедеры?? я что-но здесь не нашёл :o
1.9K
04 июля 2005 года
Ananim
156 / / 15.05.2005
Цитата:
Originally posted by Mr.Hacker
вопрос, и куда в этом файле ты пихешь те хедеры?? я что-но здесь не нашёл :o


сразу после кода идет Head и в самом начале !
Я подумал если Output started in .... , то я засунул этот headers в самое начало кода и теперь страница вообще не открывается :( .

1.9K
05 июля 2005 года
Ananim
156 / / 15.05.2005
Не поверю чтоб некто незнал как избавиться от моей проблемы ! Заходя на любой сайт , браузер каждый раз читает новую версию файла , а у меня на сайте нет !
Может есть какие-нибудь функции для этого , кроме Headers ??
Кто-нить помогите plzzzzzzzz
12K
05 июля 2005 года
droont
5 / / 28.06.2005
Цитата:
Originally posted by Ananim
Не поверю чтоб некто незнал как избавиться от моей проблемы ! Заходя на любой сайт , браузер каждый раз читает новую версию файла , а у меня на сайте нет !
Может есть какие-нибудь функции для этого , кроме Headers ??
Кто-нить помогите plzzzzzzzz



(извеняюсь заранее) твою мать ... где там хоть кусок РНР кода ???
делай так
<?php

header("Expires: Mon, 26 Jul 1997 00:00:00 GMT");
header("Cashe-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");

?>
<title>Ananim &copy</title>
<body background="images/canpaper.gif" text="black" link="green" alink="black" vlink="red" topmargin="0" leftmargin="0">

<table align="center" width="100%" border="0" cellpading="0" cellpacing="0">
<tr>
<td width="5" background="images/obr.bmp">
</td>
<td valign="top" width="175">
<table border="0" cellpadding="0" cellspacing="0" valign="top">
<tr>
<td width="175" valign="top">
...............

1.9K
05 июля 2005 года
kasap
168 / / 07.04.2005
Цитата:
Originally posted by Ananim
Не поверю чтоб некто незнал как избавиться от моей проблемы ! Заходя на любой сайт , браузер каждый раз читает новую версию файла , а у меня на сайте нет !
Может есть какие-нибудь функции для этого , кроме Headers ??
Кто-нить помогите plzzzzzzzz



Блин ну ты даешь? Например, прочитав твой вопрос, у меня была полная уверенность, что дело будет касаться php. А код, который ты привел, полностью хтмлшэный. Ты, скорее всего, не до конца понял, того, что тебе здесь объясняли. Если ты в файле, хоть что-то уже выводил, любой символ, любой html тэг, то хедеры уже не отошлются. Так что если тот код, который ты привел, стоит перед php кодом, то у тебя ничего не выйдет.

1.9K
05 июля 2005 года
Ananim
156 / / 15.05.2005
Цитата:
Originally posted by droont
делай так
<?php
header("Expires: Mon, 26 Jul 1997 00:00:00 GMT");
header("Cashe-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
?>
<title>Ananim &copy</title>
<body background="images/canpaper.gif" text="black" link="green" alink="black" vlink="red" topmargin="0" leftmargin="0">

<table align="center" width="100%" border="0" cellpading="0" cellpacing="0">
<tr>
<td width="5" background="images/obr.bmp">
</td>
<td valign="top" width="175">
<table border="0" cellpadding="0" cellspacing="0" valign="top">
<tr>
<td width="175" valign="top">
...............


Работает спасибо , но пробавал делать также только хедеры вставлял со страницы http://forum.codenet.ru/showthread.php?threadid=4852 и выходила ошибка "500" !

253
05 июля 2005 года
Proger_XP
1.5K / / 07.08.2004
Мда....
1.9K
05 июля 2005 года
Ananim
156 / / 15.05.2005
Droont , а чем отличается
Цитата:

header("Expires: Mon, 26 Jul 1997 00:00:00 GMT");
header("Cashe-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");


от

 
Код:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

это мне посоветовали на другом форуме !
Эти два кода действуют одинакого ???
271
05 июля 2005 года
MrXaK
721 / / 31.12.2002
Цитата:
Originally posted by Ananim
Droont , а чем отличается

от
 
Код:
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

это мне посоветовали на другом форуме !
Эти два кода действуют одинакого ???



второй код просто с пхп-шного мануала...

Цитата:

PHP scripts often generate dynamic content that must not be cached by the client browser or any proxy caches between the server and the client browser. Many proxies and clients can be forced to disable caching with:


и этот код...
первый код просто немного обрубленный, но в общем случае его достаточно...

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

271
05 июля 2005 года
MrXaK
721 / / 31.12.2002
и ещё, насчёт flush()
Цитата:

Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include(), or require(), functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.

 
Код:
<html>
<?php
/* This will give an error. Note the output
 * above, which is before the header() call */

header('Location: http://www.example.com/');
?>


Note: As of PHP 4, you can use output buffering to get around this problem, with the overhead of all of your output to the browser being buffered in the server until you send it. You can do this by calling ob_start() and ob_end_flush() in your script, or setting the output_buffering configuration directive on in your php.ini or server configuration files.



и код с flush() который я выше приводил будет работать...

253
05 июля 2005 года
Proger_XP
1.5K / / 07.08.2004
Цитата:
Originally posted by Mr.Hacker
и ещё, насчёт flush()


и код с flush() который я выше приводил будет работать...


А если я сначала отправлю браузеру половину картинки JPG с
Header("Content-type: image-x-jpg"); // вроде так
а потом сделаю flush() и пошлю вторую половину картинки с
Header("Content-type: image-x-png")
И что браузер будет делать? ))
Насчет 2-х вариантов Header'ов:
Второй вариант похоже ПОЛНОСТЬЮ отключает кэширование страницы
Но лучше будет юзать эти ОБА варианта ))

271
05 июля 2005 года
MrXaK
721 / / 31.12.2002
Цитата:
Originally posted by Proger_XP
А если я сначала отправлю браузеру половину картинки JPG с
Header("Content-type: image-x-jpg"); // вроде так
а потом сделаю flush() и пошлю вторую половину картинки с
Header("Content-type: image-x-png")
И что браузер будет делать? ))
Насчет 2-х вариантов Header'ов:
Второй вариант похоже ПОЛНОСТЬЮ отключает кэширование страницы
Но лучше будет юзать эти ОБА варианта ))



в твоём коде передасться второй хедер, а при Header("Content-type: image-x-png", false);
и если ты сначала в коде поставишь ob_start() а потом в конце ob_end_flush() то по идее хедера будет оба.. а что сделает браузер уже только ему виднее)))
з.ы. я тут понял, что сам по себе flush() особой роли не играет.. играют роль ob_start() и ob_end_flush()

1.9K
06 июля 2005 года
Ananim
156 / / 15.05.2005
Цитата:
Originally posted by Mr.Hacker
з.ы. я так и не понял, куда ты сам пихал эти хедеры когда они не работали...


Кажись я уже писал !

Цитата:
Originally posted by Ananim
сразу после кода идет Head и в самом начале !

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог