Foros del Web » Programando para Internet » PHP »

TUTORIAL de un contador de visitas reales con MySQL by JALF

Estas en el tema de TUTORIAL de un contador de visitas reales con MySQL by JALF en el foro de PHP en Foros del Web. Hola muchachones!!! una clase más para que aprendamos como es que podemos hacer un contador de visitas reales!!!! Con ejemplo y todo el cuento!!! y ...
  #1 (permalink)  
Antiguo 11/05/2005, 17:41
Avatar de JALF  
Fecha de Ingreso: septiembre-2004
Ubicación: Cali - Colombia
Mensajes: 634
Antigüedad: 19 años, 7 meses
Puntos: 2
TUTORIAL de un contador de visitas reales con MySQL by JALF

Hola muchachones!!!
una clase más para que aprendamos como es que podemos hacer un contador de visitas reales!!!!

Con ejemplo y todo el cuento!!! y con el apoyo de una tablita en MySQL y cookies

Si tienen comentario, criticas, sugerencias y demás pos solo diganlo!!!!

Descargalo aquí y recuerda que está al fondo de la página!!!
__________________
Ubuntu User # 15554
http://dubaiphp.wordpress.com/ -Mi vida de desarrollo, juegos y algo más en un Blog-
  #2 (permalink)  
Antiguo 11/05/2005, 18:07
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 20 años, 3 meses
Puntos: 2
OK voy a descargarlo.
Una duda antes de verlo, asi q es a ciegas
si no acepto cookies?
Me cuenta siempre o directamente no me cuenta?
Saludos cuidate
__________________
Dios dira que esto no es justo, pero lo sera...
  #3 (permalink)  
Antiguo 11/05/2005, 21:12
Avatar de JALF  
Fecha de Ingreso: septiembre-2004
Ubicación: Cali - Colombia
Mensajes: 634
Antigüedad: 19 años, 7 meses
Puntos: 2
huy que pena se me olvido mencionar que trabaja con cookies???

pos la verdad si no aceptas cookies pos no te cuenta!!!

devido que se envia una cookie que dura 24horas y despues de ese tiempo, una ves que entres de nuevo al sitio pues vuelve y te cuenta!!!!

Saludos!!!
__________________
Ubuntu User # 15554
http://dubaiphp.wordpress.com/ -Mi vida de desarrollo, juegos y algo más en un Blog-
  #4 (permalink)  
Antiguo 11/05/2005, 23:06
 
Fecha de Ingreso: enero-2004
Ubicación: Salto
Mensajes: 484
Antigüedad: 20 años, 3 meses
Puntos: 2
OK gracias por responder, prometo probarlo, estoy necesitando algo así. Pensaba programarlo pero... a caballo regalado...
Saludos cuidate
__________________
Dios dira que esto no es justo, pero lo sera...
  #5 (permalink)  
Antiguo 12/05/2005, 10:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm Veo un problema con tu classe de contador ..

A tu classe le pasas todo para que se haga la conexión a la BD .. y las operaciones con la misma .. ¿que pasa si uso la BD para otras cosas en un mismo script? .. Creo que deberías separar el tema de la conexión .. sólo pasarle a tu classe a lo sumo el "link" de conexión o bien asumir el que esté en curso (aunque eso se presta a que se restaría funcionalidad si el contador está en otra BD (incluso servidor Mysql) y el resto en otro ...

Otro detalle ..

El "WHERE" .. para tu "UPDATE" realmente no entiendo .. a tu tabla SQL le falta un campo autonumérico y úníco ... el "famoso" ID que veras en muchos sitios .. Todo esto para que puedas tener N contadores que puedas trabajar .. a 1 contador por Registro de tu tabla "contador" .. o si no quieres eso (que realmente es útil para hacer versatil el sistema) ..

Te haces un lio con este cálculo para contar la visita no es nada óptmo (te explico por qué):
Código PHP:
/* consulta del total de visitas registradas */
    
$resultado mysql_query("SELECT numero_visitas FROM ".$this->tabla,$conex);

    
/* sacamos el resultado */
    
$fila mysql_fetch_row($resultado);

    
/* suma de visita */
    
$final $fila[0] + 1;

    
/* registro de la visita en la DB */
    
mysql_query("UPDATE contador SET numero_visitas=".$final." WHERE numero_visitas=".$fila[0],$conex); 
Se puede resumir en:
Código PHP:
mysql_query("UPDATE contador SET numero_visitas=numero_visitas+1 WHERE id_contador='".$id_contador."'",$conex); 
Eso sería para tener "multiples" contadores .. referenciados por su "IDentificador" único .. y sólo como "contador" .. Por qué sería intereante registrar "quien, de donde y en que fecha/hora se realizó la visita", registrar las visitas "únicas" y los "clicks" (accesos) ... y así sacar estadísticas por fecha .. por hora .. por "referido" (de donde) etc .. Pero bueno .. esto ya no es un "contador".

Si tu obtienes el total de registros de una consulta SQL y luego vía PHP los "cuentas" .. estás obteniendo el "total" de registros de dicho resultado que se pueda arrojar .. A lo sumo podrías usar: "SELECT COUNT(*) FROM tabla .. WHERE condicones si las necesitas".

Pero para tomar el valor de un campo e incrementarlo (u operar con el en resumen) .. con el "UPDATE" que te muestro sobra.

Un saludo,
  #6 (permalink)  
Antiguo 12/05/2005, 10:25
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 21 años, 8 meses
Puntos: 15
Un consejo, para ese tipo de contador la validacion debe ser por ip ya que si registro ese ip hoy ya no se registra mas, y mañana lo ingreso denuevo si entra, asi evitas el enviar datos a cookies ya que teniendo el ip como dato de la pc que entro, se que pueden decir bueno y que pasa cuando se conectan por proxy y 10 maquinas salen por un solo ip??
Entonces aqui se debera pensar un poco mas.
  #7 (permalink)  
Antiguo 12/05/2005, 10:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Se me olvidó ..

Según la definición de métodos públicos y privados que usas .. tu classe sólo funciona para PHP 5.x o superior . . avisalo en tu documentación o bien dejalo para PHP 4 .. (no usas nada de especial que así lo justifique ..)

En cuanto a la classe en si .. estaría bueno que creases un método para que te devuelva el valor de contador .. no un "parámetro" .. quedaría mas "entendible" la classe (su uso) ... y otro método para pasar los datos de conexión (en el "constructor" tal vez ..) En fin .. sólo detalle y comentarios ...

Un saludo,
  #8 (permalink)  
Antiguo 12/05/2005, 10:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por dwaks
Un consejo, para ese tipo de contador la validacion debe ser por ip ya que si registro ese ip hoy ya no se registra mas, y mañana lo ingreso denuevo si entra, asi evitas el enviar datos a cookies ya que teniendo el ip como dato de la pc que entro, se que pueden decir bueno y que pasa cuando se conectan por proxy y 10 maquinas salen por un solo ip??
Entonces aqui se debera pensar un poco mas.
Ese es el eterno dilena .. Si validas por IP .. descartas los que pasan por Proxy's y a los que usa IP dinámica ..

Si lo haces por cookies, .. llega el que las elimina o el que no las acepta ..

Si combinas ambos .. algo te llevas .. pero igualmente todo es "franqueable". Hay que considerar ese "margen de error" ..

Lo único válido sería tener un sistema de usuarios con su respectivo "login" .. pero para visitas "públicas" .. mm ahí tienes el problema.

Un saludo,
  #9 (permalink)  
Antiguo 12/05/2005, 12:54
Avatar de JALF  
Fecha de Ingreso: septiembre-2004
Ubicación: Cali - Colombia
Mensajes: 634
Antigüedad: 19 años, 7 meses
Puntos: 2
De acuerdo

dwaks
en realidad el contar por direcciones IP es algo bien dificil creo yo!!! pero no imposible!!!

Cluster
Pues tienes mucha razon en cuanto a la versión, pense que programar clases para PHP5 era lo mismo para PHP4 pero ya estoy corigiendo eso y teniendo en cuenta tus comentarios!!!

Pero en cuento a lo de las IP, por ahora solo prefiero dejarlo con cookies, más adelante veremos!!!

Bueno en cuanto a la correción que me hace Cluster por lo del codigo (compresión) pues entonces ahora comprimire al maximo los codigos tratando de sacarle el maximo probecho a cada variable!!!

PD: todo esto me ha servido para pulirme en mi codigo y mis forma de programar!! GRACIAS A TODOS LOS QUE ME AYUDAN!!!!!
__________________
Ubuntu User # 15554
http://dubaiphp.wordpress.com/ -Mi vida de desarrollo, juegos y algo más en un Blog-
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 16:33.