наверно это к котяре

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
Bora
Житель
Сообщения: 613
Зарегистрирован: 06 ноя 2005, 19:11

наверно это к котяре

Сообщение Bora »

Warning: Cannot modify header information - headers already sent by (output started at c:bla-bla bla.php:2) in c:bla bla bla.php on line n

Знаю, что не должно быть такого, все ОК.
Копирую код по частям в новый файл- проходит без проблем
Где собака зарыта?

:cry:
Аватара пользователя
Gatchinskiy
Комбинатор
Сообщения: 20952
Зарегистрирован: 05 окт 2003, 20:44
Откуда: St. Petersburg(Gatchina) > Vancouver

Сообщение Gatchinskiy »

:arrow: http://ca.php.net/manual/en/function.header.php#53578
__________________________________________________________
If you got this message: "Warning: Cannot modify header information - headers already sent by ...."

Few notes based on the following user posts:

1. Blank lines:
Make sure no blank line after <?php ... ?> of the calling php script.

2. Use exit statement:
Use exit after header statement seems to help some people
header ("Location: xxx");
exit();

3. PHP has this annoying problem, if your HTML goes before any PHP code or any header modification before redirecting to certain page, it'll said "Warning: Cannot modify header information - headers already sent by ...." Basically anytime you output to browser, the header is set and cannot be modified. So two ways to get around the problem:

3a. Use Javascript:
<? echo "<script> self.location(\"file.php\");</script>"; ?>
Since it's a script, it won't modify the header until execution of Javascript.

3b. Use output buffering:
<?php ob_start(); ?>
... HTML codes ...
<?php
... PHP codes ...
header ("Location: ....");
ob_end_flush();
?>
This will save the output buffer on server and not output to browser yet, which means you can modify the header all you want until the ob_end_flush() statement. This method is cleaner than the Javascript since Javascript method assumes the browser has Javascript turn on. However, there are overhead to store output buffer on server before output, but with modern hardware I would imagine it won't be that big of deal. Javascript solution would be better if you know for sure your user has Javascript turn on on their browser.
Аватара пользователя
Bora
Житель
Сообщения: 613
Зарегистрирован: 06 ноя 2005, 19:11

Сообщение Bora »

Все это так. :D
Проблема заключается в том, что код тип-топ :o
я его скопировала в новый файл. Если копирую одним разом те же самые проблемы. Если копирую по частям в 3-4 приема- все хорошо.
:twisted:
Аватара пользователя
Gatchinskiy
Комбинатор
Сообщения: 20952
Зарегистрирован: 05 окт 2003, 20:44
Откуда: St. Petersburg(Gatchina) > Vancouver

Сообщение Gatchinskiy »

Bora писал(а): ... Если копирую по частям в 3-4 приема- все хорошо.
:twisted:
... ну если все хорошо, то какие проблемы ... :lol:
Аватара пользователя
Котяр
Маньяк
Сообщения: 1545
Зарегистрирован: 02 мар 2005, 13:05
Откуда: Toronto -> Vancouver

Re: наверно это к котяре

Сообщение Котяр »

Bora писал(а):Warning: Cannot modify header information - headers already sent by (output started at c:bla-bla bla.php:2) in c:bla bla bla.php on line n

Знаю, что не должно быть такого, все ОК.
Копирую код по частям в новый файл- проходит без проблем
Где собака зарыта?

:cry:
я такое получил пару раз, когда в коде невидимый в HTML редакторе символ затесался. Бывает когда сору/paste из разных редакторов делаешь, типа Zend Studio - Dreamwever - FrontPage. Лечится удалением лишних пробелов и брейков в ноутпаде.
Аватара пользователя
CdR
Графоман
Сообщения: 11245
Зарегистрирован: 11 окт 2004, 19:27
Откуда: Европа, центр, за углом направо.

Re: наверно это к котяре

Сообщение CdR »

И еще раз убеждаюсь: Изображение
Аватара пользователя
ajkj3em
Маньяк
Сообщения: 2063
Зарегистрирован: 12 ноя 2006, 06:53

Re: наверно это к котяре

Сообщение ajkj3em »

blank lines or spaces outside <? ?> block - 100% - известные грабли
Аватара пользователя
Bora
Житель
Сообщения: 613
Зарегистрирован: 06 ноя 2005, 19:11

Re: наверно это к котяре

Сообщение Bora »

poneyhot писал(а):blank lines or spaces outside <? ?> block - 100% - известные грабли
Так оно и было :lol: спасибо!
Ответить