Mostra Quantos Visitantes Estão Online

Com tanta interatividade no mercado, hoje em dia a maior preocupação de quem usa um web site é quanto ao retorno, isto é: quantidade de visitas e acessos que ele tem diário, semanal, quinzenal, etc.

Apesar de termos várias aplicações disponíveis no mercado, poucas são as que dão possibilidade do Programador customizar sua aplicação!

Na matéria de hoje vamos criar uma pequena solução com contador de visitas que poderá facilmente ser adaptada e melhorada, conforme suas necessidades.

Como de costume, disponibilizamos em anexo os ficheiros para teste.

stats

Criando As Tabelas Na Base De Dados MySQL

Antes de qualquer coisa, vamos criar as tabelas na base de dados!

Para configurar a base de dados através do script, abra o ficheiro script-sql.txt (disponível em anexo) e cole seu conteúdo no Programa utilizado para gerenciamento da base de dados.



----- Cria a Tabela Visitas -----

CREATE TABLE IF NOT EXISTS `visitas` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `data` date NOT NULL,
  `uniques` int(10) unsigned NOT NULL DEFAULT '0',
  `pageviews` int(10) unsigned NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `data` (`data`)
);

Após criar a tabela, vá ao ficheiro “conexao.php” e configure os dados de acesso à base de dados (conforme exemplo a seguir):


<?

$_CV['registraAuto'] = true;      // Registra as visitas automaticamente

$conectaMySQL = true;           // Abre uma conexão com o servidor MySQL?
$iniciaSessao = true;           // Inicia a sessão com um session_start()?

$servidor    = 'localhost';     // Servidor MySQL
$usuario     = 'root';          // Usuário MySQL
$senha       = '';              // Senha MySQL
$basededados = 'visitasonline'; // Banco de dados MySQL

// Verifica se precisa fazer a conexão com o MySQL
if ($conectaMySQL == true) {
    $conexao = mysql_connect($servidor, $usuario, $senha) or die("MySQL: Não foi possível conectar-se ao servidor $servidor");
    mysql_select_db($basededados, $conexao) or die("MySQL: Não foi possível conectar-se ao banco de dados $basededados");
}

// Verifica se precisa iniciar a sessão
if ($iniciaSessao == true) {
    session_start();
}
?>

Feita a configuração, vamos dar andamento às nossas atividades!

Monitorando Os Acessos

O script abaixo deverá monitorar todos os acessos à sua página.

Até para faciitar seu entendimento, estarei efetuando os comentários diretamente no código.


<?

// inclui o script de conexão ao código
include('conexao.php');

// Registra uma visita e/ou pageview para o visitante
function registraVisita() {
    global $_CV;

    $sql = "SELECT COUNT(*) FROM visitas WHERE `data` = CURDATE()";
    $query = mysql_query($sql);
    $resultado = mysql_fetch_row($query);

    // Verifica se é uma visita (do visitante)
    $nova = (!isset($_SESSION['ContadorVisitas'])) ? true : false;

    // Verifica se já existe registro para o dia
    if ($resultado[0] == 0) {
        $sql = "INSERT INTO visitas VALUES (NULL, CURDATE(), 1, 1)";
    } else {
        if ($nova == true) {
            $sql = "UPDATE visitas SET `uniques` = (`uniques` + 1), `pageviews` = (`pageviews` + 1) WHERE `data` = CURDATE()";
        } else {
            $sql = "UPDATE visitas SET `pageviews` = (`pageviews` + 1) WHERE `data` = CURDATE()";
        }
    }
    // Registra a visita
    mysql_query($sql);

    // Cria uma variavel na sessão
    $_SESSION['ContadorVisitas'] = md5(time());
}

function pegaVisitas($tipo = 'uniques', $periodo = 'hoje') {
    global $_CV;

    switch($tipo) {
        default:
        case 'uniques':
            $campo = 'uniques';
            break;
        case 'pageviews':
            $campo = 'pageviews';
            break;
    }

    switch($periodo) {
        default:
        case 'hoje':
            $busca = "`data` = CURDATE()";
            break;
        case 'mes':
            $busca = "`data` BETWEEN DATE_FORMAT(CURDATE(), '%Y-%m-01') AND LAST_DAY(CURDATE())";
            break;
        case 'ano':
            $busca = "`data` BETWEEN DATE_FORMAT(CURDATE(), '%Y-01-01') AND DATE_FORMAT(CURDATE(), '%Y-12-31')";
            break;
    }

    // Faz a consulta no MySQL em função dos argumentos
    $sql = "SELECT SUM(`".$campo."`) FROM visitas WHERE ".$busca;
    $query = mysql_query($sql);
    $resultado = mysql_fetch_row($query);

    // Retorna o valor encontrado ou zero
    return (!empty($resultado)) ? (int)$resultado[0] : 0;
}

if ($_CV['registraAuto'] == true) { registraVisita(); }

?>

Tendo o código que fará o monitoramento pronto, vamos agora verificar como ficaríam os resultados?

No script a seguir, estaremos incluindo o script que fará o monitoramento e abaixo, simulamos alguns resultados!


<?
// inclui o script de monitoramento
include('monitora.php');

// EXEMPLOS PRÁTICOS:

$total_visitas_unico_internauta = pegaVisitas();
echo "Total de visitas de hoje: $total_visitas_unico_internauta<br><br>";

$total_pageviewshoje = pegaVisitas('pageviews');
echo "Total de visualizações à página hoje: $total_pageviewshoje<br><br>";

$tota_visitas_del_internauta_anual = pegaVisitas('uniques', 'ano');
echo "Total de visitas desde o início do ano: $tota_visitas_del_internauta_anual<br><br>";

$total_visitas_desde_inicio_ano = pegaVisitas('pageviews', 'ano');
echo "Total de visualizações à página desde o início do ano: $total_visitas_desde_inicio_ano";

?>

Prático, não?

Bem… como você pode ver, o ficheiro acima é simples, mas, pode ser melhorado (de acordo com suas necessidades).

O que você pode fazer a partir deste script:

  • Estatísticas diárias, mensais e anuais de acesso e visita;
  • Listagem das páginas mais acessadas;
  • Listagem dos navegadores mais utilizados;
  • Você pode ainda exibir o contador de visita oculto.

Como você vê, há uma infinidade de recursos que você pode utilizar…

Caso haja interesse, poderemos mais a frente falar mais sobre este assunto!

Ficamos por aqui com mais uma matéria de PHP.

Espero que esse sistema lhe seja útil no dia a dia e que você dê andamento às atividades a partir dele.

Download do código usado neste tutorial: Mostra Quantos Visitantes Estão Online

Be Sociable, Share!

4 Comentários

  1. arthur

    Nossa mto bom…

    Obrigado isso msm q estava querenu

    Sensacional o sitee.. tah de parabenss

  2. Edmilson Britto de Almeida

    Muito bom, e muito obrigado por compartilhar!

  3. Kelvin Luan

    Olá pessoal, gostei muito do script, gostaria de saber como eu faço pra listar a quantidade de Visualizações de um determinado mês, por exemplo, quero que liste quantas visitas eu tive no mês de janeiro. Obrigado! 

Participa! Comenta...