[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Cannot modify header information
vn214
Доброго времени суток!

При логинизации пользователя на сайте появляется предупреждение
Цитата
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\dip\smartyclasses\setup.php:26) in Z:\home\localhost\www\dip\classes\logoncl.php on line 54


//54: имеет такой вид
  header('Location: index.php');


Это предупреждение стало появляться после расширенной установки Smarty
( "расширенной установки" это терминология из мануала Smarty)

в мануале дается код, в файле setup.php


<?php
// загружаем библиотеку Smarty
require('/usr/local/lib/php/Smarty/Smarty.class.php');
class Smarty_New extends Smarty {
function Smarty_New()
{
$this->Smarty();
$this->template_dir = '/home/localhost/smarty/dip/templates/';
$this->compile_dir = '/home/localhost/smarty/dip/templates_c/';
$this->config_dir = '/home/localhost/smarty/dip/configs/';
$this->cache_dir = '/home/localhost/smarty/dip/cache/';
//$this->caching = true;
//$this->assign('app_name', 'New');

}
}

?>

две последние строчки комментированы мною.

Почему это предупреждение появляется ?
И как избавиться от него??



Спустя 1 минута, 38 секунд (7.08.2010 - 19:39) Lenarfate написал(а):
воспользуйтесь поиском по форуму. тут каждый третий задает подобный вопрос

Спустя 54 минуты, 23 секунды (7.08.2010 - 20:34) vn214 написал(а):
Просмотрел несколько раз php код никаких echo нет. спецсимволов тоже нет.

Это предупреждение появилось после "расширенной" установки smarty.
При "базой" установки smarty этого не было.

Эта ошибка как то может быть связана со smarty???

Если есть эта ошибка, то что то "отправляется" на сервер до header, что это может быть, в данном случае.

Использую переменные сессии на сайте(session_start() - есть в каждом php файле) - это может иметь отношение к этой ошибке ???

Спустя 1 минута, 42 секунды (7.08.2010 - 20:35) Lenarfate написал(а):
Цитата
output started at Z:\home\localhost\www\dip\smartyclasses\setup.php:26

вот в этом файле на 26 строке и посмотри что там

Спустя 24 минуты, 11 секунд (7.08.2010 - 20:59) vn214 написал(а):
26 строка это конец файла
26: ?>


//сам файл setup.php
Цитата
<?php
require('/usr/local/lib/php/Smarty/Smarty.class.php');
class Smarty_New extends Smarty {
   function Smarty_New()
   {
        $this->Smarty();
  $this->template_dir = '/home/localhost/smarty/dip/templates/';
  $this->compile_dir = '/home/localhost/smarty/dip/templates_c/';
  $this->config_dir = '/home/localhost/smarty/dip/configs/';
  $this->cache_dir = '/home/localhost/smarty/dip/cache/';
  //$this->caching = true;
        //$this->assign('app_name', 'New');
   }
}
?>

Спустя 15 часов, 4 минуты, 47 секунд (8.08.2010 - 12:04) vn214 написал(а):
????????

Возможно смарти отправляет что либо, при такой "конфигурации" ??

и дело в этой строке??
require('/usr/local/lib/php/Smarty/Smarty.class.php');

Спустя 1 минута, 57 секунд (8.08.2010 - 12:06) DedMorozzz написал(а):
Сохрани файл в УТФ без БОМ

Спустя 16 минут, 51 секунда (8.08.2010 - 12:23) vn214 написал(а):
Сделал для файла logoncl.php, и setup.php, а также logon.php- ошибка сохранилась
Какой файл Вы имеете виду?

Если со страницы предупреждения вернуться назад то
Цитата
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\dip\smartyclasses\setup.php:18) in Z:\home\localhost\www\dip\logon.php on line 27

на странице 27 тоже header (но это уже другой файл)

Если после этого загрузить заново сайт - то логинизация происходит
имя пользователя отображается и т.д.

Спустя 31 минута, 59 секунд (8.08.2010 - 12:55) DedMorozzz написал(а):
открой в нотпаде иль гедите и выбери кодировку файла "утф8 без BOM".

Спустя 3 минуты, 25 секунд (8.08.2010 - 12:58) Семён написал(а):
Неправильно используете Smarty.

Скелет приложения сделанного с использованием Smarty.

1) Загружаете все свои классы.
2) Загружаете все свои модули.

Делаете если нада редиректы.
-------
3) Отображаете шаблон Smarty.
После никаких редиректов!

Спустя 6 минут, 23 секунды (8.08.2010 - 13:05) vn214 написал(а):
Цитата (DedMorozzz @ 8.08.2010 - 12:55)
открой в нотпаде иль гедите и выбери кодировку файла "утф8 без BOM".

В предыдущем посте писал что сделал.

Дополнительно делал для все файлов - ошибка осталась.


Цитата (Семён)
Неправильно используете Smarty.

Скелет приложения сделанного с использованием Smarty.

1) Загружаете все свои классы.
2) Загружаете все свои модули.

Делаете если нада редиректы.
-------
3) Отображаете шаблон Smarty.
После никаких редиректов!


Наверно причина, в этом буду разбираться.

Спустя 1 час, 13 минут, 51 секунда (8.08.2010 - 14:19) vn214 написал(а):
Цитата
...Неправильно используете Smarty...

Вы правы!

в одном из файлов было
<?php
session_start();

require('smartyclasses/setup.php');

$smarty = new Smarty_New;
...
...


if($_SESSION["login"]){
header("Location: index.php");
exit;
}
...

?>

Если так
<?php
session_start();

if($_SESSION["login"]){
header("Location: index.php");
exit;
}
...
...

require('smartyclasses/setup.php');

$smarty = new Smarty_New;
...
...


?>

то работает

Спустя 1 час, 18 минут, 20 секунд (8.08.2010 - 15:37) Семён написал(а):
Цитата (vn214 @ 8.08.2010 - 15:19)
Цитата
...Неправильно используете Smarty...

Вы правы!

в одном из файлов было
<?php
session_start();

require('smartyclasses/setup.php');

$smarty = new Smarty_New;
...
...


if($_SESSION["login"]){
header("Location: index.php");
exit;
}
...

?>

Если так
<?php
session_start();

if($_SESSION["login"]){
header("Location: index.php");
exit;
}
...
...

require('smartyclasses/setup.php');

$smarty = new Smarty_New;
...
...


?>

то работает

чудненько. wink.gif

Спустя 3 дня, 21 час, 3 минуты, 34 секунды (12.08.2010 - 12:41) Dron19 написал(а):
лучше перед локанизацией пользователя напиши такой код:

if(ini_get('output_buffering') == '0') {
ini_set('output_buffering','1');
header("Location: index.php");
ini_set('output_buffering','0');
}

и все уже будет работать без ошибок, просто header можно использовать перед шапкой и нигде больше, а запрещает это делать как раз таки функция output_buffering в файле конфигураций php.ini.
Надеюсь я понятно объяснил... wink.gif


_____________
Спартак - чемпион
Быстрый ответ:

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