Jump to content

Recommended Posts

Posted

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  😛

Posted

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!  😛

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

Posted

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.

Posted

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

MCITP-MCTS-MCP

Posted

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() 😄 Confuso? 🙂

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

É 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() 🙂

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

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  😄 Mas isso é outro problema que tenho que investigar mais tarde  😄

Mas de qualquer maneira um grande obrigado a quem tentou ajudar  🙂

Posted

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()

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

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!

Posted

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.

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Posted

É 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!!!!

MCITP-MCTS-MCP

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.