Utilizando sessões (session) no PHP e o erro mais comum
Em sistemas WEB desenvolvidos em PHP é muito comum a utilização de Sessões para guardar informações relacionadas a navegação do usuário. A sessão pode funcionar como uma espécie de variável guardada na memória, um exemplo básico de sua utilização pode ser para controle de login, quando o usuário logar no sistema um valor é gravado na sessão e nas páginas protegidas do sistema você testa se o usuário esta logado ou não.
A sintaxe de uma sessão é simples
1 2 3 | <?php $_SESSION['logado'] = 1; ?> |
Sempre que for utilizar sessão você precisa inicia-la, assim:
1 2 3 | <?php session_start(); ?> |
Um dos erros mais comuns que alguns programadores iniciantes costumam cometer é iniciar a sessão após uma saída para o navegador. O session_start() deve ser a primeira coisa que aparece na página porque a sessão faz parte do cabeçalho HTTP, e no protocolo HTTP após o envio de um cabeçalho de requisição não é possível incluir novas informações, assim se você enviar algo para o navegador antes do session_start(); o protocolo será enviado e quando iniciar a sessão ela não poderá ser adicionada o que causará o erro abaixo:
“Cannot send session cookie – headers already sent”
Uma solução para este problema é a utilização do ob_start(); que bufferiza a saída, eu prefiro planejar direitinho o sistema pois esta buffrerização torna o script mais lento, mas se sua necessidade exige, a sintaxe é:
1 2 3 4 5 6 | <?php ob_start(); echo "Ao emitir essa frase o cabaçalho HTTP é enviado mas a sessão será iniciada sem apresentar o erro"; session_start(); ob_end_flush(); ?> |
Se você gostou deste post, escreva um comentário e/ou cadastre-se em nosso feed.


o ob_end_flush();
é no final do script?