• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

MROverclock

Ajudem-me com este Warning

15 mensagens neste tópico

O warning é este:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent

O que poderá estar a provocar este warning?

Se eu tirar o Session_start() do inicio do ficheiro que se está a queixar, ele deixa de se queixar. Mas o Login deixa de funcionar  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois.

Tens que colocar o session_start antes de enviar o que quer que seja para o output.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O estranho é que no servidor wamp que eu tenho aqui no pc a página não apresenta qualquer warning nesta parte. Mas online aparece!  :P

O servidor parece que teve alguns problemas e até esteve offline uns dias. Agora voltou e aparece-me este warning  :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não é nada estranho, isso depende das definições das mensagens de erros e avisos. Mas a sessão tem que ser utilizada antes de enviar o que quer que seja para o output. Verificações de autenticidade, guardar variaveis de sessão, etc. tudo isso tem que ser feito antes de começares a mostrar a pagina.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é estranho porque eu julgo que não estou a enviar nada disso  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é muito estranho, ja fui confirmar e de facto não tenho qualquer código php antes desse session_start(), tenho apenas HTML, depois faço um include para o ficheiro onde a 1ª linha é o session_start()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

só o facto de teres html pode originar isso, tens de ter o session_start logo no inicio da página:

<?php

$session_start();

?>

e a partir daqui podes fazer o código à vontade

Nota: As mesmas definições aplicam-se para os headers e para os cookies

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nota: As mesmas definições aplicam-se para os headers e para os cookies

Este warning relativo às sessões são porque as sessões funcionam à base de cookies que por sua vez são headers :) Ou seja, tu fazeres, header("Set-Cookie: PHPSESSID=blabla"); ou setcookie("PHPSESSID", "blabla"); ou session_start();, o warning vai ser sempre esse do "headers already sent", uma vez que o session_start() vai chamar o setcookie() que vai chamar o header() :D Confuso? :)
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É o mesmo que teres isto:

function session_start(){ setcookie("PHPSESSID", "blabla"); }
function setcookie($x, $y){ header("Set-Cookie: {$x}={$y}"); }
function header($x){ if($headersEnviados) mandar_o_warning(); else $variavelComOoutputDoScript.=$x."\r\n"; } // defini just in case xD

session_start();

Ou seja, chamares header("Set-Cookie: PHPSESSID=blabla"); ou setcookie("PHPSESSID", "blabla"); ou session_start();, a m*rda é a mesma, quem lança o warning é o header() :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tirei o session_start() de onde ele estava e meti-o no inicio da página principal ( a pagina onde depois aparecem as outras todas incluidas, consoante os links onde se vai carregando)

Desapareceu o warning de facto, mas deixei de conseguir fazer o login na página  :)

Eu acho que vou mandar um mail para os gajos do alojamento a pedir para "desligarem" as mensagens de erro/warings, porque funciona tudo bem. O unico problema que sempre tive é quando não faço logout e o tempo expira, tenho que fazer o login duas vezes para entrar  :D Mas isso é outro problema que tenho que investigar mais tarde  :D

Mas de qualquer maneira um grande obrigado a quem tentou ajudar  :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu acho que vou mandar um mail para os gajos do alojamento a pedir para "desligarem" as mensagens de erro/warings, porque funciona tudo bem. O unico problema que sempre tive é quando não faço logout e o tempo expira, tenho que fazer o login duas vezes para entrar  :) Mas isso é outro problema que tenho que investigar mais tarde  :)

Esse problema advém do warning que recebes uma vez que estás a mandar output para o cliente antes do session_start()
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem, não cheguei a mandar mail nenhum, mas recebi um mail a dizer que a migração do servidor estava completa e tal. Entretanto o warning desapareceu!

Quando eu voltar a ter tempo, abro um novo tópico para ver se consigo resolver o problema do "duplo" login, mas antes disso ainda vou ler uns tópicos por aí que falam sobre autenticação!

Um abraço e obrigado por toda a ajuda!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já te expliquei que o output do warning não tem nada a ver com o estar a funcionar. Eu posso estar a fazer m*rda aos potes mas se fizer error_reporting(); ele não manda nenhum warning ou erro para o cliente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É o mesmo que teres isto:

function session_start(){ setcookie("PHPSESSID", "blabla"); }
function setcookie($x, $y){ header("Set-Cookie: {$x}={$y}"); }
function header($x){ if($headersEnviados) mandar_o_warning(); else $variavelComOoutputDoScript.=$x."\r\n"; } // defini just in case xD

session_start();

Ou seja, chamares header("Set-Cookie: PHPSESSID=blabla"); ou setcookie("PHPSESSID", "blabla"); ou session_start();, a m*rda é a mesma, quem lança o warning é o header() :)

já percebi a explicação...gracias!!!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora