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

Usuários Online


George

Pergunta

sei que o ESerra já postou aqui um sistema desses, mas esse aqui (por usar AJAX) dá pra atualizar quase que em tempo real quem sai e quem entra em determinado site. Aqui eu utilizei o sistema usando como referência uma session (fiz assim pra testar no mesmo computador), mas dá pra facilmente mudar pra usar com IP (o que é mais eficiente, mas não dá pra testar na mesma máquina).

ajax.js

function set_xmlhttp() {
    try {
      xmlhttp = new XMLHttpRequest();
    } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
        try {
          xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {
          xmlhttp = false;
        }
      }
    }
}
isso aqui é a função de criar o objeto pro ajax funcionar index.html
<html>
<head>
<script type="text/javascript" src="../Addons/ajax.js"></script>
<script type="text/javascript">
<!--

var intervalo;

function carregar() {
    set_xmlhttp();
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4) {
            document.getElementById('usr').innerHTML = xmlhttp.responseText;
            intervalo = self.setInterval("atualizar()", 5000);
        }
    }
    xmlhttp.open('GET', 'engine.php', true);
    xmlhttp.send(null);
}

function atualizar() {
    intervalo = window.clearInterval(intervalo);
    carregar();
}
carregar();

-->
</script>
</head>
<body>

<div id="usr">Aguarde...</div>

</body>
</html>
o script acima não é segredo nenhum pra quem sabe o básico de AJAX: ele simplesmente abre o arquivo engine.php a cada 5 segundos e joga o resultado na DIV "usr". agora vamos ver o engine.php engine.php
<?php
$con = mysql_connect('localhost', 'usuario', 'senha');
mysql_select_db('usuariosonline');
session_start();

//checa se eu já tenho um registro
if (!$_SESSION['id']) {
    //cria um registro se eu não tenho
    mysql_query('insert into online values (null, "'.time().'")');
    $_SESSION['id'] = mysql_insert_id();
} else {
    //confirmar minha presença
    mysql_query('update online set unix="'.time().'" where id="'.$_SESSION['id'].'"');
}

//apagar inativos
mysql_query('delete from online where unix < '.(time() - 30)); //aqui coloquei 30 segundos para o timeout

//retornar quantos estão online
$qr_on = mysql_query('select * from online');
echo mysql_num_rows($qr_on);
mysql_free_result($qr_on);

mysql_close($con);
?>
e agora a tabela: usuariosonline.online
create table online (
id int(25) auto_increment,
unix int(25) not null,
primary key(id));

e pronto!

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...