6
respostas

Qual o milagre que aparece no vídeo?

No vídeo, dentro do código do index.php, o comando include("cabecalho.php"); aparece na primeira linha e não há erro. No meu código aparece o erro: Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/sdwon/public_html/aluraphp2/cabecalho.php:24) in /home/sdwon/public_html/aluraphp2/logica-usuario.php on line 3 A linha 3 do logica-usuario.php é o comando session_start(); Quando comento o comando include("cabecalho.php"); da primeira linha, meu código executa sem erro. Alguém saberia dizer o por quê?

6 respostas

Olá Sergio,

No seu caso o problema é que antes de enviar qualquer caractere para seu html é necessário iniciar uma sessão, ou seja, deixe no topo do seu código antes de exibir qualquer contéudo HTML, declarado o session_start();

Isso ocorre porque ao carregar uma página seu navegador está esperando todas as informações necessárias em ordem começando pelo headers comentado na mensagem de erro... Ao colocar o comando include("cabecalho.php"); e depois iniciar uma session_start(). O processo que estamos fazendo é carregar o headers e consequentemente o conteúdo html (através do include) e logo em seguida é executada o comando de início da sessão ( essa informação já deveria ter sido carregada no headers, ou seja, antes do include). Por isso que na mensagem exibe "headers already sent". O headers já foi carregado, mas estamos tentando executar um comando que está posicionado de maneira equivocada.

Espero ter ajudado.

Será que tu não iniciou duas vezes sessão ou esqueceu a session_Start()

Eu entendo, mas por que o código da vídeo-aula funciona e o meu não, mesmo estando igualzinho?

Através do apache tem como configurarmos para não exibir "Warnings" que é esse caso da sessão. Por padrão o apache já vem configurado para exibir todos os avisos, mas pode ser oculto quando não for um erro necessariamente e sim uma forma mal escrita da linguagem.

Possivelmente foi o caso dessa aula...

Obrigado pela atenção Tiago. O responsável da Alura por esse curso bem que poderia criar uma aula sobre esse problema dos headers e como resolvê-los. Abração.

Olá Sergio, acabei de passar por esta etapa e no meu correu tudo bem. Sem erros.

Você disse que se comentar sua linha include("cabecalho.php"); funciona corretamente. Certo? Posta o seu código para gente dar uma olhada.