Boa noite gente, este pode ser um dos artigos mais simples que você possa conhecer, mas vai uma dica para que está sofrendo com o session_start(); (PHP), esta dica vai para quem está USANDO o session_start() e não sabe o por que de não estar funcionando o código. Lá vai a solução que REALMENTE FUNCIONA:

erro->

Cannot send session cookie – headers already sent by

Warning: session_start() [function.session-start]: Cannot send session cookie – headers already sent by

Essa mensagem significa que a função session_start() não pode enviar o cookie da sessão porque os cabeçalhos (HTTP headers) já foram enviados.

Normalmente o interpretador envia a saída assim que o comando é processado, por isso você não pode ter um echo, print ou qualquer outra coisa que produza uma saída antes da função session_start() (ou outras funções que precisão modificar os headers).

Você pode usar session_start() antes de qualquer saída ou usar session_start em qualquer lugar com output buffering.

Pode obter mais informações visitando os detalhes da função session_start()

+{+++++}+

VERIFIQUE SE O SEU EDITOR PHP ESTÁ GERANDO CARACTERES ESTRANHOS ANTES DO CÓDIGO, POR EXEMPLO:

<?php

session_start();

AS VEZES INICIAMOS NOSSO CÓDIGO ASSIM E A MENSAGEM DE ERRO ACONTECE

Cannot send session cookie – headers already sent by

VERIFIQUE SE O SEU EDITOR PHP ANTECIPOU OS CARACTERES, COMIGO JÁ ACONTECEU DELE COLOCAR ALGO DO TIPO “r%e#$@” ANTES DA TAG DE INICIAÇÃO DO CÓDIGO PHP (<?php…), PARA VER ISTO USE DIVERSOS EDITORES (o vi do unix não consegue visualizar e nem o dreamweaver).

Anúncios

37 comentários em “Cannot send session cookie – headers already sent by (SOLUÇÃO)

  1. Nome meu caso acontecia pq eu uso uma pagina index que monta o site com includes. Então eu só tinha que colocar session_start() nesta página e tirar de todas as outras.

  2. Olá Jack….
    Funcionou perfeito kra… valeu …. abraços … se precisar de ajuda em algum código aí me avisa via email….

  3. Obrigado, No meu caso utilizo dreamweaver e o erro aconteceu simplesmente por ter deixado a linha 1 em branco e iniciado o código a partir da linha 2.
    resultou em duas menssagens de erro:
    a primeira relatada e
    Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent

    Resolvido – Feliz 2009 para todos nós

  4. Cara. Simplesmente demais!! Como os colegas já disseram, Simples e direto…
    Vlw…. Salvou meu dia tb… Já estava pensando que iria endoidar…. Coloquei antes de um require que tinha …. Pronto…

  5. Olá… estou com um problema que é o seguinte…

    Fiz um cabeçalho e um rodapé que são carregados nas páginas usando INCLUDE.

    Já tentei colocar o session_start(); em todos os lugares possíves para saber qual é o erro e não consegui identificar ainda…

  6. Olá… estou com um problema que é o seguinte…

    Fiz um cabeçalho e um rodapé que são carregados nas páginas usando INCLUDE.

    Já tentei colocar o session_start(); em todos os lugares possíves para saber qual é o erro e não consegui identificar ainda…

    Alguém pode me ajudar???

  7. Ah valeu gente! O meu caso foi o que Jack disse…. também to montando um site que tem um index.php com vários includes…. foi só tirar o session_start() das páginas chamadas no include e deixar só no index…..

    Talvez seja isso que o Gustavo deva tentar fazer…. =)

  8. Muito obrigado, realmente nem o Notepad ou Dreamweaver mostrava os caracteres. Abri em um serviço de FTP online com opção de edição e o problema foi resolvido.

    Abraçõs,
    até mais…

  9. resolvi colocando como falaram, bem no to da pagina.
    Antes do , ai resolvel. Ainda não testei as funcionalidade mais um problema a menos. Valew Fernanda e parabens littleoak pelo POST.

    Exemplo do Codigo feito no DreamWeaver>

    //PS: esse tipo de declaração pode não funcionar em alguns servers talves seja bom mudar.

    Untitled Document

  10. No meu caso era porque não tinha no topo das páginas, INCLUSIVE, na página que contém o formulário para login do utilizador. :)

    Parece que temos de ter o nosso session start também nas páginas onde temos o nosso formulário, alguém poderá confirmar por favor?

    Abraço
    Márcio

  11. Pesquisando em diversos foruns, li várias matérias…

    A maioria dizia que o problema éra relacionado ao Dreamweaver ou Word, que éra necessário mudar o código de UTF sem BOM… no Notepad ++ ….
    Diziam tambem que éra necessário remover as linhas em branco do arquivo configuration.php ….

    E diziam que funcionavam, mas não funcionou.

    E você meu amigo foi o único que de uma maneira simples, focada e rápida solucionou meu problema, se precisar de alguma coisa só falar brow..

    Abraço e parábens.

  12. Pessoal, a solucao foi simples, bastou inserir o codigo
    session_start();
    Na 1a pagina e as demais q preciso usar o conteudo do Session, simples assim!

  13. Gente, o meu problema era causado por linhas em branco depois do ?> final do arquivo connecta.php , que vinha num include antes do sessionstart. Estranho mas era isso sim. Abraços.

  14. Comigo, tive que editar a página principal com um editor on-line e retirar os caracteres especiais que apareceiam antes da tag <?php. Nem o Dreamweaver, nem o bloca de notas, nem word pad mostraval tal caracteres especiais. Talvez ao enviar o documento pro server é que eles são inseridos. De qualquer forma, somente pelo editor on-line que consegui removê-los e assim, fazer a bagaça funfar… Olhe como tava: "<?". Foi tirar esses caracteres esquisitos e foi de boa.

  15. O WebDesign fez os arquivos de Layout no DreamWeaver com UTF-8.
    Não funcionava por nada e nem consegui visualizar qualquer caracter estranho lá.
    Criei um arquivo pelo Eclipse e colei o código lá. Funcionou!

  16. Realmente, nunca tinha imaginado usar o buffer de saída pra isso… A documentação realmente cita que o buffer bufferiza tudo que não for Header, ou seja, saídas comuns são suprimidas, mas o cabeçalho que manda o cookie da sessão é enviado perfeitamente.

    Muito obrigado!

  17. Pessoas,

    Assim como teve um post assim, resovi reintera-lo e ressaltá-lo; atente-se ao seguinte caso:

    Se o seu site/sistema foi feito através de includes chamados pela index, ou seja, o que altera na navegação é somente o meio do site, o session_start deve vim na 1º linha da index, o porque é claro: Quem inicia a sessão é a index e como todas as outras são chamada por ela basta que exista apenas uma sessão aberta.

    Parabens pelo tuto. Deus abençoe a todos!

  18. Parabens Irmao !!! Solucao simples e objetiva, foi direto ao assunto…

    E ja tava pra matar o pessoal do meu host que nao sabia resolver isso…

    e aqui vc foi direto.. outros blogs o cara enrola umas quinze paginas pra poder falar da solucao..

    Comigo o Dream Weaver tava me passando a perna… rsrsrs eu tinha deixado um monte de linhas em branco
    antes do inicio de cada pagina…

    Vale continue assim..

  19. Quando se trata de paginas montadas a partir de vários includes no index.php, não é necessário aplicar o session_start() nas outras paginas que utilizam variaveis de sessão. Basta apenas incluir o session_start na pagina index.php.

    Parabéns pelo post

  20. Muito Bom…

    O meu caso foi o meus que o Jack (anos atrás):

    ‘No meu caso acontecia pq eu uso uma pagina index que monta o site com includes. Então eu só tinha que colocar session_start() nesta página e tirar de todas as outras.’

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s