Negar login do mesmo usuário

Caros…
Tenho uma aplicação que não quero permitir que o mesmo login faça acesso de maquinas diferentes ao mesmo tempo.
já pensei da seguinte forma, criar uma sessão do login e jogar no banco, quando tentar se logar com o mesmo login de outra maquina ele vai ver que existe e não vai permitir enquanto estiver logado. mais não sei fazer para que quando o usuario sair seja apagado do banco o login para que possa se logar novamente.

Paulo Vaz

Crie uma tabela em memória com id do usuário, timestamp e sessão, se não souber usar temporizador jquery com ajax crie um div oculta com iframe acessando uma blank que atualiza a tabela a cada n tempo, no login leia a tabela e se o usuário estiver inativo por mais tempo que o estipulado, remova o registro e habilite o login, caso contrário não permita o login

Olá cara, obrigado pela atenção, mais não sei fazer o que vc me pediu, vc pode mostrar algum exemplo?

Oi Cara, eu sei pegar a sessao do usuário $_SESSION[“ssSessionID”] = session_id();, o timestamp $timestamp = $_SERVER[‘REQUEST_TIME’]; mais não sei como criar uma div oculta que chame a cada 30segundos.

Colega, eu precisaria desenvolver um exemplo

Oi, eu tentei fazer em javascript, até consegui mais o problema é que nos formulários tem a opcao de js mais nas grids não, e eu tenho que colocar em todas as aplicações.

Será que alguem já não se deparou com isso no forum, algum exemplo?

Não tem que colocar em todas apps só no menu principal

OI, a minha primeira aplicacao é o de login depois é redirecionado para o menu, vc está me dizendo para eu colocar no login esse codigo e quando eu passar para o menu esse codigo vai parar não?

a linha logica é a seguinte, na aplicacao de login, quando o usuario se logar vai guardar a sessao e o timestanp e nas aplicacoes ele atualizar a cada 30s o timestamp da sessao no bando, quando o usuario der logout vai apagar o timestamp, se ele fechar sem dar logout, no proximo logim será feito uma consulta a tabela e ver se o timestamp é maior que 60s, se sim é porque o usuario está inativo.

no login vc grava em sessão o usuario logado, no menu vc fica atualizando a cada n tempo o registo do usuario logado, com essa informação você consegue saber se o usuário já está logado e não permite outro login.

OK, é essa logica que queria fazer, mais como faço isso no menu, pois não tem a opcao de js.

estou montando um exemplo para você, vou ver se consigo liberar até amanhã.

Valeu cara fico no aguardo.

Haroldo,

Tb gostaria deste exemplo

OI, Haroldo,

Quando vc disponibilizar esse exemplo, vou colocar aqui no forum um projeto básico já pronto com isso inclusive com o banco.

Paulo Vaz

OI Valter Júnior…

Cara estamos com o mesmo problema, vi que vc é da programacao web, então vamos nos ajudar. Pergunta:

Via javascript vc tem como chamar(sem abrir ele no navegador) um arquivo php? Pois se sim acredito que tenho uma logica para isso.

Paulo Vaz

OI Valter…

Uma coisa que esqueci, tem que ser dentro de uma funcao em javascript. exemplo:

function chama{

chamararquivo.php
}

Paulo Vaz

OI Valter

Esqueci de dizer que para chamar um aquivo ele terá que está dentro de uma função em javascript. exemplo:

function chama{
executa arquivo,php
}

Paulo Vaz

Colegas desculpa a demora, segue exemplo:
No exemplo passo o usuário como parâmetro na própria url, mas isso deve vir da sua aplicação de login.
Na sua aplicação de login você pode verificar usuários deslogados e remover o registro.
Não aconselho tempos muito curtos para bancos que não estão no mesmo servidor php.

São 3 aplicações:
Menu: Onde através do Jquery executo via ajax uma app do tipo blank a cada n segundos
Blank: Aqui atualizo a tabela com a hora atual para o usuário online.
Consulta: Apenas para demonstrar a atualização da hora do usuário online
*No lugar de “xxxxx” coloque uma nome válido.

http://iw.servehttp.com/sc/iw/app/Publico/useronline_menu/useronline_menu.php?user_=xxxxx

Create da tabela exemplo (MySql):

CREATE TABLE `useronline` ( `user` varchar(20) NOT NULL, `datahora` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`user`) ) ENGINE=MEMORY

Download:
http://www.scriptcaseajax.com.br/download.php?view.27

Olá pessoal,
Alguém teria ainda essa aplicação como exemplo que poderia disponibilizar para download?

Obrigado

Eu fiz assim:
Criei um campo a mais, tipo INT na tabela de usuários;
A cada login, eu pego os numeros de ano, mês, dia, hora, minuto e segundo, tudo junto e gravo nesse campo e numa global;
No OnExecute do menu principal, eu verifico se o valor da global bate com o código gravado na tabela;
Se estiver diferente é porque o usuário logou novamente, então eu forço a saída do sistema e fica apenas o login mais novo ativo.
Assim não tem jeito do usuário logar mais de uma vez. Em vez de bloquear o usuário novo, eu bloqueio o anterior. Quem logou primeiro cai e fica apenas o mais recente.
Ficou simples e bem funcional.