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

Contador de visitas


Rafael Rocha B.

Pergunta

E ai galera, tudo em paz?!

Tava tentando criar um contador de visitas aqui, mas estou me enrrolando todo, peguei trechos de código pronto, customizei, fiz e refiz mas nada.

O problema é o seguinte, toda vez que atualizo a página a visita é incrementada, mas queria que isso só acontecesse se o ip fosse diferente. Então

a lógica seria: capturar o ip do usuário, e verificar se o mesmo existe no banco de dados, se existir a visita não será incrementada, se não é incrementada....

O código segue logo abaixo, se alguém poder dar uma olhadinha agradeceria!

<?php

/*************************************

*@Author:

Eduardo Stuart - eduardo@eduardostuart.com

*@Web:

http://www.eduardostuart.com

*@Description: Simples contador de visitas

que utiliza db-mysql

*@E-mail:

eduardo@eduardostuart.com

*************************************/

//Class conexao com db.

class conexao

{

var $userdb = "rafaelda";

var $passdb = "aoc.ufc.rafa.87";

var $hostdb = "localhost";

var $namedb = "rafaelda_rafaelrocha";

function conecta()

{

$conecta = mysql_connect($this->hostdb,$this->userdb,$this->passdb)or

die(mysql_error());

mysql_select_db($this->namedb,$conecta)or

die(mysql_error());

}

}

//Class contador

class contador extends conexao

{

var $ip;

var $data;

var $tabela = "contador";

function criaConexao()

{

$conexao = new conexao;

$conexao->conecta();

}

function pegaData()

{

$this->data = date("d/m/Y");

}

function pegaIp()

{

$this->ip = $_SERVER['REMOTE_ADDR'];

}

function visitaHoje() //A dificuldade toda está aqui

{

$this->criaConexao();

$sql = mysql_query("SELECT ip,data FROM $this->tabela WHERE data='$this->data' AND ip='$this->ip'") or die(mysql_error());

if(mysql_num_rows($sql) > 0)

{

}

else

{

mysql_query("INSERT INTO $this->tabela (data,ip) VALUES ('$this->data','$this->ip')")or die(mysql_error());

}

}

function mostraVisitantes()

{

$this->criaConexao();

$sql = mysql_query("SELECT * FROM $this->tabela")or

die(mysql_error());

$total= mysql_num_rows($sql);

echo "<font style='color: white'><b>Total de visitas:.</b>$total</font>";

}

function mostraVisitantesHoje()

{

$this->criaConexao();

$sql = mysql_query("SELECT * FROM $this->tabela WHERE data='$this->data'")

or die(mysql_error());

$total =mysql_num_rows($sql);

echo "<font style='color: white'><b>Visitas hoje:.</b>$total</font>";

}

}

?>

Se alguél tiver alguma dica de como fazer tudo isso utilizando um arquivo txt, tb acharia interessante.

Desde já agradeço pela atenção1

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

tenta meter outro campo na base de dados com o tempo. depois metes a hora a k ele visitou o site ou pagina,

e fazes um script com a funcao if

vou fazer a mao rapido.

$data = data_da_bd

$agora = now()

se a data da bd +60 minutos for menos k a data actual

insere na base dados mais uma visita.

assim ele so conta aquele ip 1 vez por hora , é assim k a maioria funciona.

o codigo certo não sei bem mas a logica é essa

.

mais ou menos

if ($data+60 < $agora)

{

mysql_query("INSERT INTO $this->tabela (data,ip) VALUES ('$this->data','$this->ip')")or die(mysql_error());

}

a sintaxe voce tera de verificar pk esta mal, e como adicionar mais 60 minutos na data da bd é so procurar no google pk eu tb não sei de cor :D

Link para o comentário
Compartilhar em outros sites

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