не ставятся куки

Discussion in 'PHP' started by Дикс, 18 Jul 2008.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    структура такая:
    грузится 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:
    <?php
    if(!defined('blablabla')) die('closed');
    $phrases = array(
        
    'lang' => 'en'
    );
    и все. там никакого вывода нет.
    когда я убираю весь код из файла, он начинает орать на следующий - в которой лишь определение класса, без вызовов.

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

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

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    в условие с куками на самые первые строчки кидай

    Может быть у тебя просто не назначено blablabla, и поэтому идет вывод 'closed', попробуй заменить die('closed'); на
    PHP:
    exit();
     
    #2 Chaak, 18 Jul 2008
    Last edited: 18 Jul 2008
  3. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Хидеры (в том числе и функция setcookie) должны быть до вывода информации
     
  4. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    _http://ru2.php.net/manual/ru/function.ob-start.php

    Можно с помощью output buffering
     
  5. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    ChaaK
    нет, я дебажил код

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

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    -=Static=-
    я не применяю гзип и не хочу чтобы страницы вываливались полностью, только когда сгенерятся.
    ради куков включать буферизацию не хочется
     
  7. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    Придумал вот что:
    $_SESSION['setCookie']['login'] = $login;
    $_SESSION['setCookie']['pass'] = $pass;

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