Jhow86 0 Denunciar post Postado Maio 24, 2011 Fala Pessoal!!!! seguinte eu tenho uma aplicação aqui que esta com um comportamento estranho. Quando o usuario faz login eu inicio a SESSION e atribuo TRUE a uma variavel. quando ele faz logoff eu uso o destruo a session com o comando session_destroy(). agora olhem o problema. se o usuario usa o botão "voltar" do navegador uma vez, como nao existe session criada o sistema direciona ele para a pagina de login. ate aqui tudo certo né... mas se ele clicar umas 5 veses no botão voltar, o navegador consegue restaura toda a sessão que eu destrui quando o usuario clicou logoff??? como eu posso impedir esse comportamento? Compartilhar este post Link para o post Compartilhar em outros sites
Jhow86 0 Denunciar post Postado Maio 25, 2011 Bom acho que nao deve ter ficado muito claro, o que esta acontecendo é o seguinte: Qaundo reinicio a session ele cria um id: ex:(6b710e33ab1c99b0f83c072bcea644da) ai depois uso o destroy para eliminala e quando clico no botão voltar do navegador ele reconstroy a seesion, inclusive com o mesmo id. isso é totalmente inseguro, pois se o usuario ja fez logoff essa session nao deveria mais existir. alguem tem alguma ideia agora? Compartilhar este post Link para o post Compartilhar em outros sites
Justin Bieber 0 Denunciar post Postado Maio 25, 2011 Não é que ele reconstrói, quando você clica pra voltar ele VOLTA, voltar não é ATUALIZAR. Volte e dê um F5. Mas claro que você tem que tratar a sessão em toda página. if(isset($_SESSION['ID'])) header("Location: index.php"); Compartilhar este post Link para o post Compartilhar em outros sites
Jhow86 0 Denunciar post Postado Maio 25, 2011 Pois é justin, mas mesmo verificando em toda pagina ela é validada olha o que eu faço: na minha index tem um formulario com os campos login e senha na pagina que executa a validação eu recebo os atributos via $_POST e valido o usuario, se validado, coloco o valor true na variavel de sessao ($_SESSION['logado'] =true ) ele é direcionado para a pagina principal na pagina principal ele clica no link logout e é direcionado para a pagina que executa o comando session_destroy(); até qui tudo bem mas se ele clicar no botao voltar 2 veses e atualizar a pagina ele acessa a pagina principal com se tivesse feito o login novamente. Compartilhar este post Link para o post Compartilhar em outros sites
Back-on 14 Denunciar post Postado Maio 25, 2011 Não faça $_SESSION['bla'] = TRUE; faça if(isset($_SESSION['bla'])) PS: Você só deu session_destroy();, ou fez o unsset delas? Compartilhar este post Link para o post Compartilhar em outros sites
Justin Bieber 0 Denunciar post Postado Maio 25, 2011 até qui tudo bem mas se ele clicar no botao voltar 2 veses e atualizar a pagina ele acessa a pagina principal com se tivesse feito o login novamente. É isso que eu to falando, você está VOLTANDO e no ATUALIZANDO. Ele nao VOLTA e ATUALIZA ao mesmo tempo. você VOLTOU e ATUALIZOU ? Mas antes corrija o script da session, faça o que o Back On falou. Use no inicio da página: session_start(); if(!isset($_SESSION['NOME_DE_UMA_SESSION'])) header("Location: index.php"); Compartilhar este post Link para o post Compartilhar em outros sites
Jhow86 0 Denunciar post Postado Maio 25, 2011 então eu faço o unset da variavel unsset('logado'); e para testar destruo a sessao ai eu executo um "print_r($_SESSION)" e realmente verifico que tudo foi finalizado. mas quando clico no botão voltar a SESSION se recupera como se nunca tivesse sido apagada entendeu? Compartilhar este post Link para o post Compartilhar em outros sites
Lord... 0 Denunciar post Postado Maio 25, 2011 Quando a pessoa clicar em logoff ao ivés de usar session_destroy() use unset() na session desejada. no seu caso unset($_SESSION['logado']); Att. Compartilhar este post Link para o post Compartilhar em outros sites
Jhow86 0 Denunciar post Postado Maio 25, 2011 gente eu to falando que depois de VOLTAR a PAGINA eu ATUALIZO e depois de ATUALIZAR a variavel que usei o usset($_SESSION['logado']) recupera seu valor inicial. eu acho que ao atualizar o $_POST executa novamente quando eu retorno, será que é isso? Compartilhar este post Link para o post Compartilhar em outros sites
Justin Bieber 0 Denunciar post Postado Maio 25, 2011 Como você está fazendo a verificação ? Se você tiver fazendo: if($_SESSION['logado'] = true) Está errado! O certo é usar ==, dois iguais que significa comparação de valores. Mas como não sei o que você tem agora no código, posta aí por favor. Compartilhar este post Link para o post Compartilhar em outros sites
Jhow86 0 Denunciar post Postado Maio 25, 2011 putz o codigo ta todo orientado, vou ter que separar as classes pra poder postar, etav tentando nao precisar postar ele mas faz parte.. Compartilhar este post Link para o post Compartilhar em outros sites
Back-on 14 Denunciar post Postado Maio 25, 2011 Faça o seguinte na página de logout: <?php ob_start(); session_start(); unset($_SESSION['sessão que tenque ser finalizada']); unset($_SESSION['outra sessão que tenque ser finalizada']); session_destroy(); echo '<script language = "JavaScript"> location.href="pagina.html" </script>'; ?> Compartilhar este post Link para o post Compartilhar em outros sites
Sérgio Mota 0 Denunciar post Postado Novembro 27, 2015 Estou com esse mesmo problema que sinistro isso!!! Compartilhar este post Link para o post Compartilhar em outros sites