It permit the creation and the management online of websites with few and easy steps. It's completely customizable, expandable and suitable for all needs.
Well, once again I come to ask help ... I hope this time we get some response, albeit a NO!
I have a problem of users on my site that are taking advantage of using F5 refresh to increase the statistics and position of the site.
The site is separating the pages by Hits, people discovered that and are pressing F5 to go up in the standings.
How could I, without creating modules, to change the HITS count for IPs instead of prints? pelomenos pages in tabs, which is where it matters most is where the bands are competing for the site?
C'mon guys, this time I'm really completely lost, I am very much with your help ... Mem, Paulo, please!
Sincerely
Here in Brazil, the vast majority of IP's are dynamic, so there would be a big problem doing it that count for ip's. Problem being that dishonest people who can not compete fairly! I need to create a means to count hits HONESTLY and give the best positions ... but do not know how!
Viva Paulo... grande amigo...
O que está ocorrendo é o seguinte:
No site em que criei, é um site musical, onde bandas musicais são cadastradas e etc...
o site é http://www.projetomirc.com.br
Na primeira primeira página, há um TOP que mostra as bandas mais visitadas.
O problema que estou enfrentando é que, por ser ordenadas por HITS, alguns usuários sem honestidade estão dando F5 para aumentar o contador de HITs, fazendo com que subam nas estatísticas e acabem na primeira página!
O que estou querendo fazer, é fazer com que esse contador conte por IP, para que não seja possível o uso do F5 (Refresh) para subir nas estatísticas.
Especificamente, a página em que estou usando é GUIAS para separar essas Bandas.
Eu sei criar um sistema de contador de IPs, mas não sei como implementar ao MemHT nessa página.
Se possível, gostaria de usar o próprio MEMHT e o contador de IPs para essas GUIAS, para manter as primeiras posições do SITE fiéis!
Como eu poderia fazer com que esse contador só contasse 1 única vez, independente da quantidade de REFRESH?
A melhor solução será criar uma tabela de apoio à página guides.
Ex.:
- Tabela com 2 campos (ip,data).
- Na pagina guides fazes uma verificação se já existe o ip nessa tabela de apoio, se não existir então inseres 1 hit.
- Podes colocar na página guides uma query para apagar automáticamente os ips com mais de 60 minutos por exemplo,assim evitas carregar muito a base de dados e evitas que quem tenha o ip fixo nao possa mais contar.
Espero que tenha dado para perceberes a ideia.
Alguma coisa grita que eu te ajudo.
CREATE TABLE IF NOT EXISTS `visitas` (
`id` int(50) unsigned NOT NULL auto_increment,
`ip` varchar(11) NOT NULL,
`data` varchar(10) NOT NULLdefault'00/00/0000',
PRIMARY KEY(`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
o PHP
code
<?php class visita { /*
* variaveis
**/
//Dados necessarios para verificacao de visitantes var$ip; //armazena o ip do usuario var$data; //armazena a data atual //Dados necessarios para conexao com db var$hostdb = "localhost"; var$userdb = "marcio"; var$passdb = "******"; var$namedb = "******"; //Nome da tabela var$tabVisitas = "visitas"; /*
* construtor
**/ function visita($ip) { //armazena na variavel 'ip' o ip do visitante atual $this->ip=$ip; //Pega a data atual $this->data=date("d/m/Y"); } /*
* conexao com banco
**/ function conectar() { $link= mysql_connect($this->hostdb,$this->userdb,$this->passdb)or die(mysql_error()); mysql_select_db($this->namedb,$link)or die(mysql_error()); } /*
* verifica se o usuario ja visitou
**/ function verificaVisitante() { //Chama a funcao de conexao com db $this->conectar(); /* Seleciona por ip e data */ $sql = mysql_query("SELECT ip,data
FROM ".$this->tabVisitas."
WHERE ip='".$this->ip."' AND data='".$this->data."'")or die(mysql_error()); /* Verifica se a selecao feita existe, caso nao exista insere novo */ if(!mysql_num_rows($sql)>0) $insereVisita = mysql_query(" INSERT INTO ".$this->tabVisitas."
(id,ip,data)
VALUES
('','".$this->ip."','".$this->data."')"); //else print("Ja visitou"); } /*
* imprime numero de visitas
**/ function imprime() { //Chama conexao; $this->conectar(); //Seleciona todos $sql = mysql_query("SELECT * FROM ".$this->tabVisitas); //Conta quantos foram selecionados $total= mysql_num_rows($sql); //Imprime numero de visitas (registros na tabela) print("Visitas: ".$total); } } //'Chama' a classe visita e ja pega o ip do visitante $visita = new visita($_SERVER['REMOTE_ADDR']); //Chama a funcao verificaVisitante(); //Ela verifica se por ip e data se o usuario ja visitou $visita->verificaVisitante(); //Imprime o total de visitas (total de registros na tabela) $visita->imprime(); ?>
Até aqui, eu consigo fazer com que conte apenas 1 vez o IP, onde ele conta por IP e data, ou seja, o mesmo IP só é contado uma única vez por dia!
Aí foi que eu me perdi... Como implementar na Página Guias?
Edited: 25/08/2009 21:19 Reason: Dados da base dados (Edited by paulo89)
Logo abaixo dessa linha coloca este código: (ele está comentado para tu perceberes)
code
// Aqui vamos criar uma rotina para apagar os ips da tabela com mais de 60 minutos $dblink->query("DELETE FROM memht_guide_apoio WHERE (data + INTERVAL 60 MINUTE) < $tzNOW");
// Aqui vamos verificar se já existe o ip na tabela if($dblink->get_num("SELECT ip FROM memht_guide_apoio WHERE ip='".$visitorInfo['ip']."' AND id='$idg'")==0){ // Como verificamos o ip não existe então vamos adicionar, assim como o id da guide e data e hora. $dblink->query("INSERT INTO memht_guide_apoio VALUES ($idg,'".$visitorInfo['ip']."',$tzNOW)"); // Aqui como o homem não está tentando enganar, vamos lá contar o hit lol $dblink->query("UPDATE memht_guide SET hits=hits+1 WHERE id=$id OR nome='$title'"); }