Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Avatar do usuário
ADMIN
ADMIN
Tópico Autor
Mensagens: 17612
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

Somente um acesso por vez ao banco de dados MySQL

23-05-2014 20:40

O objetivo desse script é permitir que somente uma pessoa por vez possa ter acesso a determinado conteúdo do site.

Por exemplo, quando o usuário A logar no sistema, terá um registro no bd, que ficará ativo até o usuário deslogar, ou passar determinado tempo em segundos. Se nesse período que o usuário A estiver logado, o usuário B tentar fazer o login, será avisado que já há outro usuário logado, e terá que tentar logar novamente mais tarde.

Para o funcionamento, você precisa criar a tabela useronline

CREATE TABLE IF NOT EXISTS `useronline` (   `timestamp` INT(15) NOT NULL,   `ip` VARCHAR(40) NOT NULL )

Para testar, crie um documento chamado teste.php e coloque o seguinte:

<?php include("conexao.php"); // 100 É O SEGUNDO DE PERMANÊNCIA PARA DELETAR O LOGADO ANTIGO $timeoutseconds = 100; // CAPTURANDO O IP QUE SERÁ ARMAZENADO $ip = $_SERVER['REMOTE_ADDR']; // CAPTURANDO O TIMESTAMP $timestamp=time(); // SUBTRAINDO O TEMPO DE PERMANÊNCIA DO TIMESTAMP $timeout=$timestamp-$timeoutseconds; // DELETANDO O LOGADO ANTIGO mysql_query("DELETE FROM useronline WHERE timestamp<$timeout") or die(mysql_error()); // VERIFICANDO SE JÁ HÁ LOGADO, E BLOQUEANDO NOVOS LOGADOS $online = mysql_query("SELECT timestamp, ip FROM useronline") or die(mysql_error()); // PERMITINDO O LOGADO E BLOQUEIA O DESLOGADO if(mysql_num_rows($online) >= 1 && $ip!=mysql_result($online , 0, "ip")) { echo "Já existe alguém logado no sistema, volte mais tarde"; exit; } // TENTATIVA DE LOGIN SEM TER ALGUÉM NO BD if(isset($_GET['logado']) && mysql_num_rows($online) == 0) { mysql_query("INSERT INTO useronline VALUES('$timestamp','$ip')") or die(mysql_error()); echo "<script>alert('Logado');location.href='teste.php';</script>"; } // TENTATIVA DE LOGIN TENDO ALGUÉM NO BD if(isset($_GET['logado']) && mysql_num_rows($online) >= 1) { echo "<script>alert('Já existe alguém logado no sistema, volte mais tarde');location.href='teste.php';</script>"; } ?> <?php // CONTEÚDO PROTEGIDO if(mysql_num_rows($online) >= 1 && $ip==mysql_result($online , 0, "ip")) { ?> CONTEÚDO SÓ PARA LOGADO<br /><br /> <?php } ?> CONTEÚDO LIBERADO

1
A melhor hospedagem para o seu site HostGator!

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado