Jump to content


Photo

Session - Um Problema De Todos


  • Faça o login para participar
5 replies to this topic

#1 filipi

filipi

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 01/12/2005, 12:44

Bom sou iniciante, Ja fiz pergs sobre destruir um sessão mas não consegui resolver, olhei nesse e em outros forum, e vi que muitos tem e tiveram esse tipo de problema, eu queria que alguém ajuda-se a resolver esse problema e tb explica-se o que está acontecendo...
Eu ja usei diversas formas pra fazer logoff e mesmo assim qd clico em voltar ele volta pra pag.
Meu sistema atual está assim...
<?
session_start();
session_unset ();

//unset($_SESSION['usuario']);
//unset($_SESSION['senha']);
//session_unregister "usuario";

session_destroy();

header ("Location: index.php");

?>
E no meu index eu tenho,

if (!(($_SESSION['usuario']) AND ($_SESSION['senha']))) {
echo "Você NÃO tem permissão para este tipo de comando!"; 
exit;
Bom pesso novamente a ajuda de vocês, eu não sei mas vi que esse é um problema de muitos, talvez seja até no php.ini...
Minha Ver. é a 5
Falow e Obrigado...
Smilinguido...

#2 Thales Medeiros

Thales Medeiros

    24 Horas

  • Usuários
  • 426 posts
  • Sexo:Não informado
  • Localidade:Juiz de Fora/MG
  • Interesses:Programação em geral. Programo em PHP, ASP, PERL, VB, Delphi, C/C++, Java e com banco d dados&lt;br&gt;&lt;br&gt;Gosto tb d ajudar. Se precisar d mim, basta postar uma msg no Forum! Se eu souber, te responderei...

Posted 01/12/2005, 12:52

Oi, Filipi! Tudo bem?

Kra.. Me desculpe! Mas não consegui entender sua dúvida. Onde é o ponto de entrada no seu sistema? Como chama o arquivo de entrada? Qual é o código dele?

Onde vc quer ir e não consegue fazer o que está tentando?

Explique melhor, que podemos tentar te ajudar.

A propósito, apague a linha session_unset(), pois ela não está fazendo nada. E apague as linhas comentadas, tb. Assim sabemos o que seu script REALMENTE faz, e não o que vc já fez e depois comentou, ok?

Um abraço,
Thales Medeiros.
Sucesso é ganhar dinheiro fazendo o que você faria de graça.

#3 filipi

filipi

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 01/12/2005, 12:58

É o seguinte quando dou um logff, ele sai, mas se clico em voltar ele volta pro sistema...

Coloquei isso no index...

if (!(($_SESSION['usuario']) AND ($_SESSION['senha']))) {
echo "Você NÃO tem permissão para este tipo de comando!";
exit;

Mas so funciona caso eu feche e abra de no o IE...
Se eu simplesmente clicar em voltar ele volta mesmo depois do logoff...
Smilinguido...

#4 Thales Medeiros

Thales Medeiros

    24 Horas

  • Usuários
  • 426 posts
  • Sexo:Não informado
  • Localidade:Juiz de Fora/MG
  • Interesses:Programação em geral. Programo em PHP, ASP, PERL, VB, Delphi, C/C++, Java e com banco d dados&lt;br&gt;&lt;br&gt;Gosto tb d ajudar. Se precisar d mim, basta postar uma msg no Forum! Se eu souber, te responderei...

Posted 01/12/2005, 13:15

Filipi,

Posso até estar errado, mas pensando muito sobre o assunto, sobre como funciona todos os protocolos de envio/recebimento de dados para um servidor (principalmente HTTP), minha conclusão é de que isto é (teoricamente) impossível.

Quando você descarrega uma página do servidor, o Internet Explorer ou qualquer outro navegador carrega só o HTML puro. É o chamado "armazenar em cache". Quando você vai para outra página, ou até mesmo efetua logoff em seu sistema, o navegador compreende que somente um outro HTML foi carregado. É dentro do servidor que as variáveis de sessão são apagadas.

Quando você clica no botão voltar do navegador, ele sabe q possui aquela página em cache, portanto ele simplesmente carrega o HTML. Não adianta nada você colocar diversos códigos em PHP naquela página, pq quando vc clica em voltar no navegador, a página em PHP não é executada mais uma vez. O navegador não faz uma nova solicitação para o servidor. Por isso o PHP não é executado.

Bem... Minha conclusão é esta, mas vc pode me explicar o motivo de querer impedir que o usuário clique sobre o botão voltar, que podemos tentar contornar o problema de outra forma, que tal?

Um abraço,
Thales Medeiros.
Sucesso é ganhar dinheiro fazendo o que você faria de graça.

#5 filipi

filipi

    Turista

  • Usuários
  • 58 posts
  • Sexo:Não informado

Posted 01/12/2005, 13:24

Sua explicação foi bem convencente, eu sou iniciante e estava achando que o usuario podendo clica em voltar seria um sistema menos seguro, e ainda vi muitas pergs. desse tipo...
Mas ninguém tinha parado pra dar uma explicação como essa...
Seria interessante, se alguém estivesse disposto a fazer um tutorial desde de o login de usuarios com nivel de autenticação diferente até o logoff usando session...
E dizendo o que acontece, porque acredito eu isso ser um problema de muitos iniciantes e talvez de usuarios intermediarios...
Muito Obrigado Pela sua resposta...
Falow...
Smilinguido...

#6 Thales Medeiros

Thales Medeiros

    24 Horas

  • Usuários
  • 426 posts
  • Sexo:Não informado
  • Localidade:Juiz de Fora/MG
  • Interesses:Programação em geral. Programo em PHP, ASP, PERL, VB, Delphi, C/C++, Java e com banco d dados&lt;br&gt;&lt;br&gt;Gosto tb d ajudar. Se precisar d mim, basta postar uma msg no Forum! Se eu souber, te responderei...

Posted 01/12/2005, 13:28

Concordo com você, Filipi, pois este assunto gera muuuuita dúvida sempre! Não é só para iniciantes. Mas é aqui que está o problema. Dificilmente todos já lidaram com todos os tipos de problemas usando sessão, por isso dificilmente se cria tutoriais mais avançados sobre o assunto. Normalmente tutoriais sobre sessão são mais para iniciantes, mesmo. Para se falar o básico.

Obviamente eu concordo e reafirmo que nos tutoriais sobre sessão deveriam citar o que acontece quando o usuário faz isso, isso, ou aquilo.

Por exemplo... O fato de vc encerrar a sessão e depois ainda conseguir voltar na página não é uma falha de segurança. Por quê? Simplesmente pelo fato de, como a sessão já foi destruída, vc pode até enxergar o que tinha nas páginas anteriores, pois estão no cache do navegador. Mas vc não conseguirá sequer mexer no sistema, pq qualquer ação dentro do sistema deverá ser interditada, pois o sistema precisa estar seguro de que as variáveis de sessão existem. Então, se o sistema é bem desenvolvido, a pessoa irá clicar em um link dentro do sistema e na mesma hora o sistema irá encaminhá-lo para uma página de erro ou enviá-lo para a página de login, dizendo que ele não tem permissão para mexer em nada do sistema enquanto não existir uma sessão.

Que bom que você compreendeu o assunto!

Um abraço,
Thales Medeirso.
Sucesso é ganhar dinheiro fazendo o que você faria de graça.




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq