Foros del Web » Programando para Internet » PHP »

Contador de visitas

Estas en el tema de Contador de visitas en el foro de PHP en Foros del Web. Hola: Quiero crear un contador de visitas que funcione con Bases de Datos y tenga la posibilidad de mostrarme las visitas por hora, dias y ...
  #1 (permalink)  
Antiguo 03/05/2004, 21:52
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Contador de visitas

Hola:
Quiero crear un contador de visitas que funcione con Bases de Datos y tenga la posibilidad de mostrarme las visitas por hora, dias y meses. Ademas tambien quiero que no me cuente la misma IP hasta que no halla pasado un dia. Orientenmme y diganme por donde empiezo.

Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 04/05/2004, 06:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Reynier (en confianza) ..

Debes empezar a pensar las aplicaciones que tienes que hacer.

Voy a intentar "sonsacarte" (para que lo pienses tu mismo) que es lo que necesitarias saber.

1) Si quires hacer estadísticas .. ¿que datos necesitarias guardar en tu BD?

2) ¿Sabes como obtener la IP de un cliente conectado a tu script?

3) ¿sabes hacer consultas SQL por fechas?

Lo primero es "modelar" tu Base de datos (tabla(s) implicadas)

Y si quires . .acude a sitios como www.hotscripts.com y toma cualquier código de ejemplo de su tema .. por qué ese tipo de aplicacioens ya están más que reinventadas (otra cosa es que lo tomes como "desafio" y empieces a ver como resolver un porblema desde cero).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 04/05/2004, 06:51
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Esa es la idea Cluster

Cluster esa es mi idea. Hacerlo yo mismo para aprender, sino me quedo bruto ... . Lo de la Base de Datos no me preocupa, pues la voy modelando según me vayan haciendo falta las cosas y luego la hago completa. Determinar la dirección IP del visitante, me parece que es con $REMOTE_ADDR y consultas SQL con fechas, no las se hacer pero estudiando un poco se logra todo. Mi principal duda, y que no he podido resolver, es contar la visita solo una vez al dia. Es decir, si el usuario con IP 158.126.25.23 entro a la pagina y esta se encargo de llevar el conteo de la visita, pero ahora ese mismo IP salio y volvio a entrar dos horas despues, hay esta mi problema, como hago para que no me cuente más esa dirección IP, al menos por el resto del día de hoy.

Salu2
__________________
Ing. Reynier Pérez Mira
  #4 (permalink)  
Antiguo 04/05/2004, 07:29
Avatar de Blag  
Fecha de Ingreso: septiembre-2003
Ubicación: Lima
Mensajes: 68
Antigüedad: 20 años, 7 meses
Puntos: 0
Podrías crear una tabla temporal o buffer, en donde guardes el número de la IP y la hora a la que entró. Así, cada vez que una nueva IP ingrese a tu página, harás una consulta para ver si es nueva o ya había ingresado. Si ya había ingresado, simplemente haces un cálculo para saber cuanto tiempo ha pasado entre la fecha actual y la fecha que tienes en la base de datos, si es menos de 24 horas, no la contabilizas. Si han pasado más de 24 horas, borras ese registro y vuelves a agregarlo con la nueva hora y fecha.

Saludos,

Blag
__________________
Alvaro Tejada Galindo
Consultor ABAP FI/HR
SinglePath's Experimental HomePage
Foro de ABAP en SoloCodigo.com
Revista "Código Latino"
  #5 (permalink)  
Antiguo 04/05/2004, 08:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si haces una consulta SQL a tu BD de registro de IP's por fecha y cuentas los registros que coincida con la IP de tu BD con la del cliente actual ('REMOTE ADDR') y si a su vez está fecha está dentro del rango que definas como ahora+tiempo ... podrías obtener un resultado de 1 o 0 resultados que puedes aplicar para tu condicional y hacer el INSERT nuevo o nada.

tabla_visitas
id_visita (autoincremental y único)
ip (CHAR de 15 caracteres al menos)
fecha_ingreso (DATETIME)

Código PHP:
<?
//conectas a tu BD . etc ...
$sql="SELECT COUNT(*) FROM tabla_visitas WHERE NOW() > DATE_ADD(fecha_ingreso,INTERVAL 1 DAY) AND ip='".$_SRVER['REMOTE_ADDR']."'";
$consulta=mysql_query($sql) or die (mysql_error());
$total=mysql_result($consulta,0);

if (
$total == 1){
$sql="INSERT INTO tabla_visitas (id_visita,ip,fecha_ingreso) VALUES ('','".$_SERVER['REMOTE_ADDR']."',NOW())";
mysql_query($sql);
}
?>
Presta al cálculo del rango de fechas usando DATE_ADD() y el INTERVAL (de Msyql ...) (no sé si me habré equivocado .. lo hice sin probarlo ..)

Pero ojo con las "ip's" .. en lugaras que usen IP compartida: Universidades, empresas y en general cualquier conexión que pase por un proxy .. sólo vas a contabilizar una visita y vas a discriminar a todos los demás que puedan entrar bajo esa misma IP.

por mi parte . .perfiero contabilizar por cookies y así identifico por lo menos "PC's" diferentes (no usuarios de ese PC como pasaría en sítios publicos como cibercafes y demas) pero para eso defines un tiempo de expiración de horas en las que consideraras como nueva visita.

Un saludo,

PD: Los "modelos de tus base de datos" se hacen mejor si te sientas a pensarlos antes de ir modificandolos según te salgan los problemas a resolver .. Date el tiempo de "pensar" tus aplicaciones antes de tocar una sóla tecla en tu PC.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 04/05/2004 a las 08:09
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 09:26.