PDA

Просмотр полной версии : не ставятся куки


Дикс
18.07.2008, 09:55
структура такая:
грузится index.php, потом в него инклудится куча файлов, затем наконец вызывается login.php
он проверяет введённую гет-методом инфу и в зависимости от этого ставит куки.
но он не может их поставить! ругается на

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/fedr/engine/inc/phrases.php:1) in /var/www/html/fedr/engine/interfaces/login.php on line 18

причем в этом phrases.php такой код:

<?php
if(!defined('blablabla')) die('closed');
$phrases = array(
'lang' => 'en'
);


и все. там никакого вывода нет.
когда я убираю весь код из файла, он начинает орать на следующий - в которой лишь определение класса, без вызовов.

как грамотно ставить куки в крупных движках?
я раньше давно писал в сессию переменную о необходимости установки куки и после перезагрузки страницы, в первых строках у меня проверялось наличие этой переменной. если она присутствовала - соответственно ставились куки. но я понимаю что это корявый метод.

ничего в голову не приходит

Chaak
18.07.2008, 11:15
в условие с куками на самые первые строчки кидай

Может быть у тебя просто не назначено blablabla, и поэтому идет вывод 'closed', попробуй заменить die('closed'); на exit();

NOmeR1
18.07.2008, 11:17
Хидеры (в том числе и функция setcookie) должны быть до вывода информации

-=Static=-
18.07.2008, 12:48
_http://ru2.php.net/manual/ru/function.ob-start.php

Можно с помощью output buffering

Дикс
18.07.2008, 12:48
ChaaK
нет, я дебажил код

NOmeR1
я это знаю. меня интересует, как это применяется в серъёзных проектах.
как ставить куки, если надо их поставить при определённом действии

Дикс
18.07.2008, 12:51
-=Static=-
я не применяю гзип и не хочу чтобы страницы вываливались полностью, только когда сгенерятся.
ради куков включать буферизацию не хочется

Дикс
18.07.2008, 13:24
Придумал вот что:
$_SESSION['setCookie']['login'] = $login;
$_SESSION['setCookie']['pass'] = $pass;

а в первых строках скрипта проверять $_SESSION['setCookie'] на заполненность и устанавливать куки.