Jump to content

Recommended Posts

Posted

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?

portalmundial.net »» criamos sites

Posted

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

I haven’t lost my mind; it’s backed up on DVD somewhere!

Posted

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.

I haven’t lost my mind; it’s backed up on DVD somewhere!

Posted

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

Posted

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?

portalmundial.net »» criamos sites

Posted

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

Posted

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?

portalmundial.net »» criamos sites

Posted

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.

Posted

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.

portalmundial.net »» criamos sites

Posted

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.

portalmundial.net »» criamos sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.