Ir para o conteúdo
nuno_couto

fechar o browser

Mensagens Recomendadas

nuno_couto    0
nuno_couto

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
magician    2
magician

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>";

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

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...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nuno_couto    0
nuno_couto

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
karva    0
karva

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

@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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nuno_couto    0
nuno_couto

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nuno_couto    0
nuno_couto

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nuno_couto    0
nuno_couto

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.

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade