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

nuno_couto

fechar o browser

13 mensagens neste tópico

Existe alguma forma de obrigar o browser a fazer logout quando é fechado?

Quando uma sessão está aberta e o browser é fechado, a sessão é fechada tambem, mas no caso de um script que executa outras funções no logout, seria interessante "forçar" o browser a fazer logout, até por motivos de segurança.

Alguem sabe algo sobre isto?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso tem de ser com javascript pk php é server side e não client side.

Podes usar esta função

echo "<script>window.close()</script>";

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como faria então (poderia ser no html mesmo) para, ao fechar a janela, correr o ficheiro logout.php?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não dentro da função logout podes meter esse codigo php ke te dei, que faz correr uma função javascript que fecha o browser.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não dentro da função logout podes meter esse codigo php ke te dei, que faz correr uma função javascript que fecha o browser.

Ele não quer que a função logout feche o browser.... ele quer que quando o usuario fechar o browser a função logout corra.

@nuno_couto A maioria das pessoas prefere que os usuários apareçam ligados para não terem que fazer o login sempre que acederem o site porque é uma grande perca de tempo, mas se é isso que queres...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

kingless

Vou-te explicar...

Há algum tempo atrás falamos sobre a segurança de um sistema de login, em que eu estava a utilizar as sessões e estava a abrir uma variável $_SESSION['id'] que era igual ao número do cliente.

Percebi que estava a cometer o erro de ter a variável não encriptada, ou seja, se alguem conseguisse abrir a sessão $_SESSION['id']=25, iria conseguir fazer login como se fosse o cliente nº 25.

O que fiz para resolver isto foi criar um código do tipo nº_cliente_[nº_sorteado] ou seja... qq coisa como 25_1234567891 (dez digitos sorteados) e depois disso encripto esta chave.

De cada vez que o cliente faz login ou logout este número sorteado muda, é "concatenado" com o nº de cliente e depois encriptado e guardado na base de dados.

Quando o user navega, de cada vez que abre um ficheiro, abre a sessão e o script verifica se esse código existe na base de dados e a qual cliente pertence.

Penso que assim o sistema esteja seguro, e já testei e funciona mt bem. Não sei se concordas, já agora gostava da tua opinião.

A ideia seria obrigar ao logout quando o browser fecha porque no logout esse código é mudado e assim, caso alguem conseguisse obter o código existente na sessão anterior, o código já não iria existir e o login iria falhar.

É boa ideia ou basta o sistema que já tenho?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

porque nao associar o ip do user, a essa determindada sessao???

assim so quem tiver na rede desse user, a usar o memo ip, consegue entrar nao sessao

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@nuno_couto podes utilizar "session_regenerate_id()" para que o código seja sorteado/gerado sempre que o usuário aceder uma nova página, para além de ser mais fácil e seguro o usuário não vai precisar de fazer o login sempre  que aceder o site. Vou tentar dar-te um pequeno exemplo...

<?php
if(session_id() == "" ) {
session_start();
$id_do_usuario = "id_do_usuario"; //A ID do usuário
$id_do_usuario .=  session_id(); //Concatenação 
} else {
session_start();
$nova_id = session_regenerate_id(); //Gera uma nova ID
$id_do_usuario = "id_do_usuario"; //A ID do usuário
$id_do_usuario .= $nova_id;  //Concatenação
}
//Faz de conta que já conectaste a mysql etc... agora só falta executar o query
mysql_query("INSERT INTO tabela_do_usuario VALUES( '$id_do_usuario' ) "); //É apenas um exemplo

(....) //resto do código da página

É apenas um exemplo se conseguires aplicar este exemplo no teu site vais ver que é muito bom.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

karva tens algum exemplo disso? Nunca trabalhei com IP´s... era interessante o sistema, mas não sei nada sobre isso.

kingless eu acho que o sistema que me demonstraste é basicamente o mesmo que eu estou a usar, mas com um código diferente. A diferença é que tu estás a criar um novo session_id de cada vez que o utilizador está abrir uma página, e eu estou a fazer isso apenas no login e logout.

Achas que durante a navegação é necessário fazer essa alteração?

Eu não fiz isso porque me parece pesado para o servidor estar a escrever constantemente na base de dados de cada vez que o utilizador abre uma página enquanto navega... Ou é só ideia minha?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

karva tens algum exemplo disso? Nunca trabalhei com IP´s... era interessante o sistema, mas não sei nada sobre isso.

kingless eu acho que o sistema que me demonstraste é basicamente o mesmo que eu estou a usar, mas com um código diferente. A diferença é que tu estás a criar um novo session_id de cada vez que o utilizador está abrir uma página, e eu estou a fazer isso apenas no login e logout.

Achas que durante a navegação é necessário fazer essa alteração?

Eu não fiz isso porque me parece pesado para o servidor estar a escrever constantemente na base de dados de cada vez que o utilizador abre uma página enquanto navega... Ou é só ideia minha?

Não é necessario fazer essa alteração do ID durante a navegação mas é o metodo mais fácil e seguro para fazer o que tu queres e facilita a vida ao utilizador pois ele não vai precisar de fazer sempre o login.

O código não é pesado para o servidor, uma página pode executar muitos querys a mysql  e o servidor funciona normalmente. Tens o exemplo deste fórum, são executados varios querys a mysql em uma só página mas o servidor não fica pesado e as páginas não demoram muito tempo a abrir.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas repara, usando sessões, ao fechar o browser a sessão é fechada e o user tem que fazer login novamente. Isso acontece no site que estou a fazer e relativamente ao qual coloquei esta questão.

Assim sendo, fazer o logout ao fechar a janela não iria trazer nenhuma desvantagem, porque não o fazendo a sessão fecharia na mesma.

Eu só tinha uma dúvida em relação à segurança que era a seguinte.

É possível alguem obter o id da sessão e conseguir "abri-lo" de forma forçada?

Foi por isso que coloquei a questão sobre forçar ao logout ao fechar a janela. Se fosse possível, ao fazer o logout, o id da sessão iria mudar. Se alguem conseguisse descobrir esse id, já não servia de nada porque ele iria ser alterado na base de dados ao fazer logout.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora, relativamente ás sessões, se usares o firefox ou o maxthon p.ex... browser com tabs, e fechares um tab, o login permanece "on", mas se fechares mesmo o browser, o login vai ao ar porque a sessão fecha.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Em muitos dos casos isso não acontece--- eu não sei como é que programaste o teu script por isso não te posso ajuda mais.

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