Ajuda - Busca - Membros - Calendário
Versão Completa: Contador De Usuários Online Baseado No Ip
Fórum Script Brasil > Programação & Desenvolvimento > PHP > Repositório de Scripts - PHP
ESerra
Script postado por Vampyro

Contador de usuários online baseado no IP

Contador simples de usuários online, guarda o IP do usuário e vai atualizando o timeout, até remover o usuário de vez do banco de dados dos ativos.

Primeiro a tabela do banco de dados:
CODE
#
# Nome da Tabela 'useronline'
#

CREATE TABLE useronline (
   timestamp int(15) DEFAULT '0' NOT NULL,
   ip varchar(40) NOT NULL,
   file varchar(100) NOT NULL,
   PRIMARY KEY (timestamp),
   KEY ip (ip),
   KEY file (file));


Agora o script em si:
CODE
<?php

//Efetua a conexão
mysql_connect("localhost","xxx","xxx");
mysql_select_db(xxx);

//Tempo em segundos que irá apagar os ips inativos
$timeoutseconds = 300;
$timestamp=time();
$timeout=$timestamp-$timeoutseconds;

//Pega o ip
$ip = $_SERVER['REMOTE_ADDR'];

//Pega a o url da página que o uuário entro
$self = $_SERVER['PHP_SELF'];

//Verifica se o ip do usuário já se encontra
$verif = mysql_query ("SELECT ip FROM useronline WHERE ip = '$ip'");
$evo = mysql_num_rows($verif);

//Se for encontrado, faz a atualização do url e do segundos que a pessoa entrou
if ($evo > "0"){
mysql_query("UPDATE useronline SET file='$self',timestamp='$timestamp' WHERE ip='$ip'") or die("Database UPDATE Error");

//Caso não sejá encontrado ele insere o ip a url e o tempo
} else {
mysql_query("INSERT INTO useronline VALUES ('$timestamp','$ip','$self')") or die("Database INSERT Error");
}

//Deleta os ips que já passaram dos 300 segundos
mysql_query("DELETE FROM useronline WHERE timestamp<$timeout") or die("Database DELETE Error");
$result=mysql_query("SELECT DISTINCT ip FROM useronline WHERE file='$self'") or die("Database SELECT Error");

//Exibe o resultado
$user  =mysql_num_rows($result);                                                                              
if ($user==1) {echo"$user Total on-line";} else {echo"$user Total on-line";}

?>
Vampyro
hehe meu script aqui.. xD
vlw ESerra..
Unrealmanel
Porque é que aparece o seguinte erro?

Notice: Use of undefined constant xp - assumed 'xp' in C:\Program Files\EasyPHP5.3.0\www\upssss\teste.php on line 13
1 Total on-line
marcosfj1
Opa valeu deu certo aqui este codigo fiz um teste e ele pega de acordo com o IP quem esta online

Minha duvida é a seguinte:

Como eu faço para mostrar o IP do cara, no caso eu to pegando o numero de pessoas que estou no site no momento, e como eu faço para alem disso tambem mostrar o IP do cara?

Valeu
Cláudio Souza
Funcionou de primeira, sem erros.
Obrigado
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.