Foros del Web » Programando para Internet » PHP »

Contador de visitas en php no funciona como deberia

Estas en el tema de Contador de visitas en php no funciona como deberia en el foro de PHP en Foros del Web. Saludos amigos tengo un contador de visitas que consegui en internet pero no esta trabajando como deberia pues sigue contando las visitas al refrescar la ...
  #1 (permalink)  
Antiguo 02/11/2015, 18:52
 
Fecha de Ingreso: noviembre-2009
Ubicación: Puerto Ordaz
Mensajes: 7
Antigüedad: 14 años, 5 meses
Puntos: 0
Exclamación Contador de visitas en php no funciona como deberia

Saludos amigos tengo un contador de visitas que consegui en internet pero no esta trabajando como deberia pues sigue contando las visitas al refrescar la pagina.
Aqui les dejo tal cual como lo tengo funcionando:


TENGO TRES ARCHIVOS:

pagina1.html
pagina2.php
pagina3.php


pagina1.html

Código:
<html> 
<head></head> 
<body> 
<a href="pagina2.php">1 - Creación de la tabla.</a><br> 
<a href="pagina3.php">2 - Página que cuenta la visita</a> 
</body> 
</html>
pagina 2.php
Código:
<?php 
$conexion=mysql_connect("localhost","MI_USUARIO","MI_CLAVE") or 
  die("Problemas en la conexion"); 

mysql_select_db("MI_BASE_DE_DATOS",$conexion) or 
  die("Problemas en la selección de la base de datos"); 

$registros=mysql_query("drop table if exists visitas",$conexion) or 
  die("Problemas en el select:".mysql_error()); 

$registros=mysql_query("create table visitas ( 
                            ip varchar(12), 
                            fecha date, 
                            hora time 
                         )",$conexion) or 
  die("Problemas en el select:".mysql_error()); 

header("Location: pagina1.html"); 
?>
pagina3.php
Código:
<html> 
<head></head> 
<body> 

<?php 
$conexion=mysql_connect("localhost","MI_USUARIO","MI_CLAVE") or 
  die("Problemas en la conexion"); 

mysql_select_db("MI_BASE_DE_DATOS",$conexion) or 
  die("Problemas en la selección de la base de datos"); 

$ip=$_SERVER['REMOTE_ADDR']; 
$fecha=date("Y-m-d"); 
$hora=date("H:i:s"); 
$registro=mysql_query("select * from visitas where ip='$ip' and fecha='$fecha'",$conexion) or  
  die("Problemas en el select:".mysql_error()); 
if ($reg=mysql_fetch_array($registro)) 
{ 
  echo "Usted ya visitó hoy día el sitio.<br>"; 
} 
else 
{ 
  $registros=mysql_query("insert into visitas(ip,fecha,hora) values    ('$ip','$fecha','$hora')",$conexion) 
     or die("Problemas en el select:".mysql_error()); 
} 
$registro=mysql_query("select count(*) as cantidad from visitas",$conexion) or 
  die("Problemas en el select:".mysql_error()); 
$reg=mysql_fetch_array($registro); 
echo "Cantidad de visitas:".$reg['cantidad']; 
?> 
</body> 
</html>
TENGO UNA TABLA LLAMADA "visitas" que esta almacenando lo siguiente:

IP fecha hora
186.89.185.2 2015-11-03 00:34:40
186.89.185.2 2015-11-03 00:34:43
186.89.185.2 2015-11-03 00:34:45
186.89.185.2 2015-11-03 00:34:49

Como les dije cada entrada a pagina3.php esta sumando una visita sin ninguna restriccion.
  #2 (permalink)  
Antiguo 02/11/2015, 19:03
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: Contador de visitas en php no funciona como deberia

y si lo cambias asi:
Código PHP:
Ver original
  1. <html>
  2. <head></head>
  3. <body>
  4.  
  5. <?php
  6. $conexion=mysql_connect("localhost","MI_USUARIO","MI_CLAVE") or
  7.   die("Problemas en la conexion");
  8.  
  9. mysql_select_db("MI_BASE_DE_DATOS",$conexion) or
  10.   die("Problemas en la selección de la base de datos");
  11.  
  12. $ip=$_SERVER['REMOTE_ADDR'];
  13. $fecha=date("Y-m-d");
  14. $hora=date("H:i:s");
  15. $registro=mysql_query("select * from visitas where ip='$ip' and fecha='$fecha'",$conexion) or  
  16.   die("Problemas en el select:".mysql_error());
  17. //contamos los registros encontrados
  18. $total = mysql_num_rows($registro);
  19. //si existe mostramos el error
  20. if ($total >= 1)
  21. {
  22.   echo "Usted ya visitó hoy día el sitio.<br>";
  23. }
  24. //si no continuamos
  25. else
  26. {
  27.   $registros=mysql_query("insert into visitas(ip,fecha,hora) values    ('$ip','$fecha','$hora')",$conexion)
  28.      or die("Problemas en el select:".mysql_error());
  29. }
  30. $registro=mysql_query("select count(*) as cantidad from visitas",$conexion) or
  31.   die("Problemas en el select:".mysql_error());
  32. $reg=mysql_fetch_array($registro);
  33. echo "Cantidad de visitas:".$reg['cantidad'];
  34. ?>
  35. </body>
  36. </html>

otra cosa debes adaptar tu codigo a mysqli porque mysql esta sin soporte ya y puedes tener ciertos problemillas a futuro. Saludos
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 02/11/2015, 19:13
Avatar de AlejandraLara  
Fecha de Ingreso: octubre-2015
Mensajes: 115
Antigüedad: 8 años, 6 meses
Puntos: 19
Respuesta: Contador de visitas en php no funciona como deberia

Ignorando el hecho de que usas mysql y no alguna otra api:

Lo que pasa es que en ningún momento estás limitando que la ip solo la cuenta una vez cada cierto tiempo, antes de insertar los valores verifica que no exista la ip dentro de cierto rango de fechas. Algo así:

La query: SELECT ip FROM tabla WHERE fecha = '$hoy' AND ip = '$ip'
Código PHP:
Ver original
  1. $num = mysql_num_rows($ip);
  2. if( $num < 1 ){
  3.  //insertar
  4. }else{
  5.  //no se inserta porque ya hay un registro con la ip
  6.  echo 'Visitado hoy';
  7. }
  8.  

Y shalala.
  #4 (permalink)  
Antiguo 02/11/2015, 19:24
 
Fecha de Ingreso: noviembre-2009
Ubicación: Puerto Ordaz
Mensajes: 7
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Contador de visitas en php no funciona como deberia

Cita:
Iniciado por AlejandraLara Ver Mensaje
Ignorando el hecho de que usas mysql y no alguna otra api:

Lo que pasa es que en ningún momento estás limitando que la ip solo la cuenta una vez cada cierto tiempo, antes de insertar los valores verifica que no exista la ip dentro de cierto rango de fechas. Algo así:

La query: SELECT ip FROM tabla WHERE fecha = '$hoy' AND ip = '$ip'
Código PHP:
Ver original
  1. $num = mysql_num_rows($ip);
  2. if( $num < 1 ){
  3.  //insertar
  4. }else{
  5.  //no se inserta porque ya hay un registro con la ip
  6.  echo 'Visitado hoy';
  7. }
  8.  

Y shalala.
Que otras api se usan para este tipo de cosas? la verdad desconozco bastante del tema pero puedo buscar información al respecto.
  #5 (permalink)  
Antiguo 02/11/2015, 19:34
Avatar de AlejandraLara  
Fecha de Ingreso: octubre-2015
Mensajes: 115
Antigüedad: 8 años, 6 meses
Puntos: 19
Respuesta: Contador de visitas en php no funciona como deberia

Usa mysqli, mysql está obsoleta ya desde hace tiempo :c
__________________
Si le das el código hecho a alguien nunca va a aprender ni te dará las gracias, si le dices como hacerlo aprenderá y te dará las gracias (algún día).
  #6 (permalink)  
Antiguo 02/11/2015, 19:51
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Contador de visitas en php no funciona como deberia

Saludo

Con las sugerencias que te dieron, ya debe solventarse el tema.

En cuanto a mysql-mysqli.
Sí bien mysql está obsoleta, por ahora sigue funcionando,
y dudo mucho que la desactiven por ahora,
pues mysqli en temas de puertos,
aún sigue dependiendo de mysql.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Etiquetas: contador, fecha, html, mysql, registro, select, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:38.