Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá estou usando um código php mysql que conta as visitas de cada página, porém sempre que a página é atualizada ele adiciona mais uma visita, gostaria de ajuda com meu código para que ele salve o cookie por um determinado tempo antes do contar uma nova visita.
PS: cada página está salva no BD e tem visualizações distintas
Código das paginas:
<?php
//Aqui pegamos o id da página
$idDaPagina = $explode[1];
//Busca na tabela o numero de vezes que a página ja foi visitada
$busca = "SELECT * FROM contador WHERE idPagina = '$idDaPagina'";
$exe = mysqli_query($conectar,$busca);
$resultado_vist = (mysqli_fetch_array($exe));
//Pega o numero de visistas que consta na tabela, adiciona mais um e atualiza
$visitantes = $resultado_vist['visitas'] + 1;
$altera = "UPDATE contador SET visitas = '$visitantes' WHERE idPagina = '$idDaPagina'";
$exe1 = mysqli_query($conectar,$altera);
//Faz uma nova busca e retorna o numero de visitas depois da atualização
$exe = mysqli_query($conectar,$busca);
$total = (mysqli_fetch_array($exe));
$visitas = $total['visitas'];
?>
No espaço do conteudo dou um <?php echo $visitas; ?>
Desde já Obrigado.>
19 minutos atrás, Electronic disse:
com cookie
http://php.net/manual/pt_BR/function.setcookie.php
ai antes de fazer o update veja se tem o cookie
if(!isset($_COOKIE['nomequalquer']){
# nao tem cookie entao faz o update
# e cria um cookie
}
e nao precisa fazer uma consulta so pra fazer o incremento no update
SET visitas = visitas + 1
Ficaria assim ?
(...)
if (!isset($_COOKIE['nomequalquer'])) {
$visitantes = $resultado['visitas'] + 1;
$altera = "UPDATE contador SET visitas = '$visitantes' WHERE idPagina = '$idDaPagina'";
$exe1 = mysql_query($altera);
}
setcookie('counte', 1, mktime().time()+60*60*24);
(...)
ele salvaria o cookie de cada página visualizada pelo usuário?quase
nao precisa disso: $visitantes = $resultado['visitas'] + 1;
nem do select antes. só isso
"UPDATE contador SET visitas = visitas + 1 WHERE idPagina = '$idDaPagina'";
faz o testeele salvaria o cookie de cada página visualizada pelo usuário?
dá sim
no valor do cookie salva as paginas visitadas
ele apresentou o erro Warning: Cannot modify header information - headers already sent by... no setcookie('visitante', 1, time()+606024);
o cookie tem que ser definido antes de qualquer html
>
1 hora atrás, Electronic disse:
o cookie tem que ser definido antes de qualquer html
como eu posso arrumar isso?
ai entra outro problema, não posso usar o setcookie nas minhas páginas contando as visitas individualmente porque uso url amigável, minha index tem o cabeçalho e rodapé e só recebe os conteúdos que estão nas outras páginas, e como eu tenho que usar o cookie antes de qualquer html ele registra uma unica visita.
ta usando framework?
com cookie
http://php.net/manual/pt_BR/function.setcookie.php