Contador de Usuários on-line em PHP / My-Sql
Arquivo de (Scripts) por Jonas Olmos em 10-04-2008 - 2,583 visualizações
Tags: php. script em php, Script user online, user online
Olá pessoal! Hoje vamos ver como é fácil colocar em nosso site um contador de usuários online. Esse é mais um script que não foi criado por mim, e como o utilizo a alguns meses em vários sites de minha autoria, decidi compartilhar ele com os interessados aqui no Mx Masters.
Na verdade esse script consiste em mostrar em seu site, quantos usuários estão acessando ele no exato momento, ou mais especificamente no nosso caso, para dar mais volume, quantos usuários acessaram nosso site nos últimos 60 segundos. É muito simples. Vamos lá!
As instruções e explicações sobre o script estão no próprio código abaixo através de comentários. Recomendo que utilize um editor de PHP, como por exemplo, o DreamWeaver, para que nossos comandos e comentários lhe apareçam com cores diferentes, o que lhe facilitaria muito no entendimento do script.
Você precisa ter um servidor com suporte a PHP e MySQL.
Primeiramente crie o seguinte tabela em seu banco de dados:
CREATE TABLE `usuarios_online` (
`timestamp` int(20) NOT NULL default '0',
`ip` varchar(25) NOT NULL default '',
`local` varchar(70) default NULL,
`nick` varchar(30) NOT NULL default ''
) TYPE=MyISAM;
RESUMINDO: Em seu banco de dados, crie uma tabela chamada “usuarios_online”, com as seguintes linhas “timestamp” [int(20)], “ip” [varchar(25)], “local” [varchar(70)], e “nick” [varchar(30)].
Em seguinda, cole o código abaixo em sua página php, no local onde quer que ele apareça.
// CONFIGURAÇÃO DO SEU BANCO DE DADOS - ALTERE SOMENTE ESTES DADOS
$host = "localhost";
$user = "usuario_do_banco";
$pass = "senha_do_usuario";
$db = "nome_do_banco_de_dados";
// CONECTANDO AO BANCO DE DADOS MYSQL
$connection = @mysql_connect($host, $user, $pass) or die("ERRO AO SE CONECTAR COM O BANCO DE DADOS!");
@mysql_select_db($db, $connection) or die("ERRO AO SE CONECTAR COM O BANCO DE DADOS");
// ******** IMPORTANTE ************
// NÃO ALTERE ESTES DADOS - É A CONFIGURAÇÃO DE NOSSO SCRIPT
// ******** IMPORTANTE ************
// PEGA O VALOR DA HORA EM SEGUNDOS
$ts = time();
// HORA ATUAL - E TAMBEM DEFINE-SE O TEMPO QUE USUÁRIO FICA SEM NAVEGAR PELO SITE - 60 SEGUNDOS
$to = time()-60;
// VERIFICA SE O USUÁRIO JÁ ESTÁ ON-LINE
$sql = @mysql_query("SELECT count(*) FROM usuarios_online WHERE ip='$REMOTE_ADDR'");
$sqlt = @mysql_result($sql,0,0);
// CASO O USUÁRIO ESTEJA ON-LINE - RENOVA SEUS DADOS
if ($sqlt) @mysql_query("UPDATE usuarios_online SET timestamp='$ts',local='$PHP_SELF',nick='$admin_nick' WHERE ip='$REMOTE_ADDR'");
// SE O USUÁRIO ESTÁ ACESSANDO O SITE PELA 1ª VEZ - INSERE SEUS DADOS NO BANCO
else @mysql_query("INSERT INTO usuarios_online (timestamp,ip,local,nick) VALUES ('$ts','$REMOTE_ADDR','$PHP_SELF','$admin_nick')");
// DELETA SE O USUÁRIO SE ELE ESTÁ A MAIS DE 60 SEGUNDOS INATIVO
$sql = @mysql_query("DELETE FROM usuarios_online WHERE timestamp<$to");
// AGORA SIM FAZ A CONTAGEM DE QUANTOS USUÁRIOS ESTÁ ON-LIN
$sql = @mysql_query("SELECT ip FROM usuarios_online");
$UOL = @mysql_num_rows($sql);
// VERIFICA SE TEM MAIS DE 1 USUÁRIO
$UOLS = ($UOL <= 1) ? "" : "s";
/* ABAIXO ESTÁ A LINHA EM QUE FAZ APARECER O NUMERO DE USUÁRIOS ON-OLINE EM SEU SITE.
COLOQUE NO LUGAR AONDE QUEIRA QUE APAREÇA.
UTILIZANDO HTML VOCÊ PODE ALTERAR A FONTE, COR E TAMANHO DO TEXTO.
EXEMPLO:
<span style="font-family: verdana; font-size: xx-small;"> $UOL usuário${UOLS} online </span> */
echo "$UOL usuário${UOLS} online";
?>
Bom pessoal, espero ter lhes ajudado.
Dúvidas ou sugestões, poste seu comentário.




Otimo script… vou utiliza-lo concerteza!!!
abraço
ta de parabéns ;]
Parábens
Na verdade o grande obstáculo para alimentarmos o site, é sempre o TEMPO.
O MX tem uma proposta diferente de outros sites, que apenas disponibilizam os scripts para downloads, sem explicar nada.
Aqui no MX, vamos tentar sempre, além de disponibilizar o script, explicar como se deve fazer para implantá-lo em seu site. Seja através de vídeo-aulas ou como foi feito neste artigo, já que no caso especifico de PHP, fica difícil para se fazer vídeo-aulas.
queria saber como fazer um mural igual a esse aqui
e depois pede: $host, $user, $pass.
q q eu coloko nesses campos?
vlw ae galera.
[]´s
Ahhh vc deveria fazer video aulas ensinado PHP/MySQL, muita gente tem duvidas sobre isso.
Obrigado
[]´s
http://www.phpbrasil.com
http://www.scriptbrasil.com.br
[]´s
http://www.adsaomarcos.v10.com.br
Abraço
Depois que você colocar os links e o conteúdo nos mande novamente para avaliarmos.
[]´s
Valeuuuuuuuuuuuuuuu Abraço
Muito obrigado.
Veja se estas vídeo aulas ajudam você:
http://www.mxmasters.com.br/macromedia-dreamweaver/dreamweaver-desenvolvendo-layout-para-qualquer-resolucao-de-tela/
http://www.mxmasters.com.br/macromedia-dreamweaver/dreamweaver-desenvolvendo-layout-para-qualquer-resolucao-de-tela-parte-2/
[]´s
porfavor! preciso muito desse script!!
http://www.radioexplosion.com.br
vlw!
Bom, vamos lá: estou dando os primeiros passos na programação PHP. Tenho lido diversos tutoriais e percebo que a grande maioria das pessoas usa os objetos do mysql diretamente (claro se o banco for esse). Pesquisei também sobre o ADODB que abstrai o banco. Já programo em outras linguagens a algum tempo e com certeza quanto mais abstração melhor. A dúvida é a seguinte: porquê o pessoal que programa em PHP não usa muito o ADODB? Ele possui alguma restrição, ou bug? Quando procuro sobre DB com PHP, vem muito mais resultados de código nativo do que com ADODB. Estou montando um pequeno framework de classes para poder reaproveitá-las nos meus projetos, aí na parte de banco estou na dúvida se monto nativo mysql (pois pretendo usar somente esse banco) ou monto com ADODB.
Se puder clarear essa duvida ficarei grato.
Obrigado
João.
joao.motondon@gmail.com
Estou desenvolvendo um site e preciso de um script.Aguardo retorno,um abraço.
VLWS
creio que essa seja duvidas de muitos tbm ne?
Tem como fazer enquetes em que somente quem é cadastrado pode votar?
tudo bom pessoal?
queria uma ajuda de vocês, eu tenho o easyphp 2.0b1 instalado na minha maquina…
ele roda e tudo mais só que eu salvo o banco de dados e o dreamweaver CS3 não reconhece.
queria que vocês me mande o link explicando como que eu configuro ambos.