Contador de visitas e usuários online com PHP e MySQL 22.09.13 9:56
Encontrei um script em PHP utilizando banco de dados MySQL que faz a contagem de visitas no site e total de usuários online.
Você pode definir no script qual será o tempo (em minutos) de expiração da sessão do usuário no site quando inativo.
Tabelas Mysql:
Você pode definir no script qual será o tempo (em minutos) de expiração da sessão do usuário no site quando inativo.
Tabelas Mysql:
- Código:
CREATE TABLE contador (
id int(11) NOT NULL AUTO_INCREMENT,
visitas int(10) DEFAULT NULL,
PRIMARY KEY (id)
);
CREATE TABLE usuarios_online (
id int(10) NOT NULL AUTO_INCREMENT,
sessao text NOT NULL,
tempo timestamp NOT NULL,
ip varchar(15) NOT NULL,
PRIMARY KEY (id)
);
- Código:
<?php
session_start();
$expira_em = 5; //DEFINE EM MINUTOS A EXPIRAÇÃO DO ACESSO DO USUARIO
$sessao = session_id();
$ip = $_SERVER['REMOTE_ADDR'];
$tempo_on = date('Y-m-d H:i:s');
$tempo_fim = date('Y-m-d H:i:s',mktime(date('H'),date('i') - $expira_em,date('s'),date('m'),date('d'),date('Y')));
$conexao = mysql_connect('localhost','root','') or die("Erro ao conectar");
$db = mysql_select_db('contador') or die("Erro ao selecionar o DB");
//EXCLUI USUARIOS QUE ESTEJAM INATIVOS NO TEMPO DEFINIDO COMO EXPIRAÇÃO
mysql_query("DELETE FROM usuarios_online WHERE tempo <= '$tempo_fim'");
//SELECIONA USUARIO
$sql = mysql_query("SELECT id FROM usuarios_online WHERE sessao='$sessao'");
$total = mysql_num_rows($sql);
if($total){
mysql_query("UPDATE usuarios_online SET tempo='$tempo_on' WHERE sessao='$sessao'");
}else{
mysql_query("INSERT INTO usuarios_online(sessao,tempo,ip)VALUES('$sessao','$tempo_on','$ip')");
$sql_c = mysql_query("SELECT id FROM contador");
$total_c = mysql_num_rows($sql_c);
if($total_c){
mysql_query("UPDATE contador SET visitas=visitas+1");
}else{
mysql_query("INSERT INTO contador(visitas)VALUES(1)");
}
}
//ONLINES
$sql_o = mysql_query("SELECT id FROM usuarios_online");
$total_online = mysql_num_rows($sql_o);
//VISITAS
$sql_v = mysql_query("SELECT visitas FROM contador LIMIT 1");
$d_v = mysql_fetch_object($sql_v);
$total_visitas = $d_v->visitas;
echo "Total de Visitas: ".$total_visitas."<br>";
echo "Online Agora: ".$total_online;
?>