Ir para conteúdo
Fórum Script Brasil
  • 0

Coibir Acesso Simultâneo


falha404

Pergunta

Como eu faço para proibir o acesso há uma página se um usuário já estiver usando a mesma conta?

Ficou claro?

Eu pensei em acrescentar mais um campo na minha tabela de mySQL (`online`, por exemplo), e toda vez que um usuário logasse, setava esse campo para true.

Então, ao logar, eu julgaria o campo `online`. Se true, ele não conseguiria entrar no site.

Ao deslogar, setaria o `online` para true.

Gostaria de saber se essa é a melhor maneira e quais os problemas que eu posso enfrentar se a utilizar.

Obrigado,

Fabiano Nunes

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
o logout é a melhor saída, mas você tem q fazer algo q obrigue o usuário ao logout, porque ele pode simplesmente fechar a página sem efetuar logout...

seria interessante você tb criar uma rotina que tire td mundo q está logado há mais de 1 hr por exemplo....

o que faço por exemplo é criar um campo na tabela conexao, por exemplo.

então na hora em que o usuario faz o login ele faz um update e coloca na tabela usuario e campo conexao = 1

e na hora em que o usuario faz o logout ele faz um update e coloca na tabela usuario e campo conexao = 0

então é so colocar um if antes da conexao verificando o id e conexao, tipo, se aquele usuario de id=1, tiver com a conexao=1, ele não entrará mais....

acho que e isso que ele quer.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu fiz uma vez algo parecido com isso um tempo atras. Na época eu também pensei em colocar um campo "online" para evitar que vários usuários utilizassem a mesma conta.

Para evitar este problema do ussuário não efetuar logout e travar a conta dele, eu parti para outra solução.

Na minha solução eu armazanava o IP do usuário num campo da tabela de usuários bem como o ID da session. Assim em cada página acessada, o PHP verificava se tanto o IP quanto o ID da sessão batia com o que ele tinha, se não batesse o PHP efetuava logout no usuário.

A cada usuário que se logasse, os dados de IP e ID da sessão eram atualizados na tabela.

O inconveniente é que o site fica um pouco lento pois você tem que fazer consultas no mysql em cada página (mas nada muito problemático). O outro incoveniente (que para mim não era) é que quando um outro usuário tenta se logar na conta de um usuário que já está logado, o usuário que já estava logado é deslogado (sofre um logout) e o novo usuário que estava tentando se logar, consegue se logar!

Link para o comentário
Compartilhar em outros sites

  • 0

Eu fiz uma vez algo parecido com isso um tempo atras. Na época eu também pensei em colocar um campo "online" para evitar que vários usuários utilizassem a mesma conta.

Para evitar este problema do ussuário não efetuar logout e travar a conta dele, eu parti para outra solução.

Na minha solução eu armazanava o IP do usuário num campo da tabela de usuários bem como o ID da session. Assim em cada página acessada, o PHP verificava se tanto o IP quanto o ID da sessão batia com o que ele tinha, se não batesse o PHP efetuava logout no usuário.

A cada usuário que se logasse, os dados de IP e ID da sessão eram atualizados na tabela.

O inconveniente é que o site fica um pouco lento pois você tem que fazer consultas no mysql em cada página (mas nada muito problemático). O outro incoveniente (que para mim não era) é que quando um outro usuário tenta se logar na conta de um usuário que já está logado, o usuário que já estava logado é deslogado (sofre um logout) e o novo usuário que estava tentando se logar, consegue se logar!

o que você fez parece com o meu, porque se cada hora que o usuário conecta ele conecta com um ip diferente, então tambem não daria.

a melhor solução é colocar como nosso amigo lmww17 falou, mas cxomo fazer isso ?

Editado por Guilherme014
Link para o comentário
Compartilhar em outros sites

  • 0
o que você fez parece com o meu, porque se cada hora que o usuário conecta ele conecta com um ip diferente, então tambem não daria.

a melhor solução é colocar como nosso amigo lmww17 falou, mas cxomo fazer isso ?

Hum... desculpe a demora...

Mas não tem problema com o IP. A cada hora que o usuário se conecta, ele se conecta com um IP e com uma ID diferente! Só que esses campos são atualizados no banco de dados na hora do login (sempre).

Assim, NUNCA vou ter problema de usuário não conseguir se conectar por causa de uma sessão não finalizada.

Ah, acho que eu verificava tanto a ID quanto o IP para evitar que ID's antigas fossem usadas por outros usuários através do endereço do site...

Como eu atualizo sempre o banco de dados na hora do login, se já existir um usuário com a mesma conta usando o site, este usuário não vai mais ter permissão de usar o site (pois os campos atualizados no banco de dados foram de um usuário que acabou de se conectar) e seria obrigado a efetuar um novo login ("deslogando" o outro usuário que tinha entrado)....

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...