MROverclock Posted January 11, 2008 at 04:06 AM Report #159208 Posted January 11, 2008 at 04:06 AM 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 😛
pedrotuga Posted January 11, 2008 at 05:02 AM Report #159209 Posted January 11, 2008 at 05:02 AM pois. Tens que colocar o session_start antes de enviar o que quer que seja para o output.
MROverclock Posted January 11, 2008 at 03:59 PM Author Report #159247 Posted January 11, 2008 at 03:59 PM 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
pedrotuga Posted January 11, 2008 at 04:07 PM Report #159249 Posted January 11, 2008 at 04:07 PM 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.
MROverclock Posted January 11, 2008 at 04:09 PM Author Report #159250 Posted January 11, 2008 at 04:09 PM é estranho porque eu julgo que não estou a enviar nada disso ?
MROverclock Posted January 11, 2008 at 04:13 PM Author Report #159251 Posted January 11, 2008 at 04:13 PM é 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()
fil79 Posted January 11, 2008 at 04:32 PM Report #159256 Posted January 11, 2008 at 04:32 PM 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
djthyrax Posted January 11, 2008 at 11:41 PM Report #159350 Posted January 11, 2008 at 11:41 PM 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!
fil79 Posted January 12, 2008 at 12:36 AM Report #159374 Posted January 12, 2008 at 12:36 AM bastante....🙂 MCITP-MCTS-MCP
djthyrax Posted January 12, 2008 at 12:52 AM Report #159380 Posted January 12, 2008 at 12:52 AM É 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!
MROverclock Posted January 12, 2008 at 01:10 AM Author Report #159385 Posted January 12, 2008 at 01:10 AM 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 🙂
djthyrax Posted January 12, 2008 at 01:45 AM Report #159388 Posted January 12, 2008 at 01:45 AM 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!
MROverclock Posted January 12, 2008 at 09:07 PM Author Report #159479 Posted January 12, 2008 at 09:07 PM 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!
djthyrax Posted January 12, 2008 at 11:02 PM Report #159497 Posted January 12, 2008 at 11:02 PM 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!
fil79 Posted January 13, 2008 at 03:37 PM Report #159598 Posted January 13, 2008 at 03:37 PM É 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now