[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP и HTML вместе
koala
Написал скрипт и он работает нормально если в файле нету HTML. Но если добавить HTML то выводится ошибка header'a. У меня идет перезагрузка страницы.

Вот ошибка:


Warning: Cannot modify header information - headers already sent by (output started at Q:\home\localhost\www\xak\add.php:7) in Q:\home\localhost\www\xak\add.php on line 44


вот кусок кода где есть header:

if ($text1 == false or $text2 == false or $text3 == false)
{
header('refresh: 3;url=add.php');
echo 'Заполните пожалуйста все поля. Через 3 секунды скрипт обновит страницу...';
}


До этого header'a нету никакого вывода с echo. Только пару переменных и HTML. Если убираю HTML - тоисть теги <html><head><title><link> то вре работает нормально.



Спустя 12 минут, 22 секунды (24.03.2010 - 11:03) jetistyum написал(а):
ну теги HTML то у тебя выводятся....
хедер посылается браузеру до начала вывода информации. и не может быть послан после хтмла, или чего-либо еще

Спустя 41 секунда (24.03.2010 - 11:04) jetistyum написал(а):
у тебя там даже написано в какой строчке твоего скрипта начался вывод данных

Спустя 5 минут, 5 секунд (24.03.2010 - 11:09) krasilich написал(а):
Либо используй буферизацию вывода, либо меняй скрипт так, что бы никаких тегов не было до вызова функции header()

Спустя 6 минут, 6 секунд (24.03.2010 - 11:15) Guest написал(а):
тебе уже впринципе сказали в последнем посте, но так как ты новичек, то скажу по-другому:
найди на сервере файл php.ini
в строке output_buffering поставь on

Спустя 8 минут, 2 секунды (24.03.2010 - 11:23) krasilich написал(а):
Цитата
найди на сервере файл php.ini
в строке output_buffering поставь on


Вот как раз это лучше и не стоит делать.

Идеальный вариант, часть кода, которая что-то выводит заключить в функции.


ob_start();
//тут мы выводим html в перемешку с php и шлем хедеры
ob_clean_flush(); //отсылаем все в браузер

Спустя 4 минуты, 42 секунды (24.03.2010 - 11:28) Guest написал(а):
krasilich
я сам не специалист, можешь объяснить чем output_buffering on плохо?

Спустя 8 минут, 29 секунд (24.03.2010 - 11:36) phz написал(а):

Спустя 7 минут, 54 секунды (24.03.2010 - 11:44) krasilich написал(а):
Потому что twin палкой по пальцам бьет того, кто пишет код, который зависит от внешних настроек=)

Вот захочет человек через полгода переместить ресурс на другой сервер. А там может и небыть доступа к php.ini если человек вообще вспомнит, что для того, что бы его код работал нужен output_bufering=on К тому же кто знает что у него там за вывод, если скрипт просто отдает файл на скачивание, его тоже в буфер?? А буфер-то не резиновый...

Спустя 1 час, 26 минут, 57 секунд (24.03.2010 - 13:11) koala написал(а):
phz спасибо. С помощью функции ob_start() все решилось.

Если писать:


<?php ob_start(); ?>
HTML
<?php
ob_clean();
Код.
?>


То стили CSS не работают. Если писать только ob_strat(); то все работает нормально и стили применяются. Вопрос: Можно использовать ob_strat() без ob_clean() ?

Спустя 6 минут, 48 секунд (24.03.2010 - 13:18) Guest написал(а):
krasilich
ну если из таких соображений, то все понятно, и в принципе логично, но все таки... не легче создать .htaccess и добавить для себя нужные по умолчанию параметры...
настройки по умолчанию ведь на разных хостингах все-таки немного отличаюся и я обращал внимание, на очень многих из них output_buffering не отключена. насчет резиного буффера, на сколько я знаю, можно ставить конкретное значение, например output_buffering 2000, если я не ошибаюсь! так что проблем быть не должно)

Но в общем я понял))


_____________
Vi Veri Veniversum Vivus Vici
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.