Foros del Web » Programando para Internet » PHP »

Contador de visitas on Line

Estas en el tema de Contador de visitas on Line en el foro de PHP en Foros del Web. Saludos amigos No necesito un contador de visitas totales, eso ya lo sé muy bien, lo que necesito es un contador de visitantes en el ...
  #1 (permalink)  
Antiguo 05/03/2007, 17:17
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Contador de visitas on Line

Saludos amigos

No necesito un contador de visitas totales, eso ya lo sé muy bien, lo que necesito es un contador de visitantes en el preciso momento. Si alguien supiera que no se puede, por favor me lo dice también.

Creo que no me expresado bien. Necesito hacer un contador que diga algo asi:

Visitantes en linea:
23 invitados
2 registrados

Este contador tiene que cambiar cada vez que alguien entra o sale de la pagina web.

En cuanto a lo "registrados", no hay problema, eso si puedo hacer, pero en cuanto a las visitas de personas que no han iniciado sesión, eso si no sé.

Yo domino PHP así que sería agradable que alguien me enviara ese codigo en ese lenguage, si lo hacen en cualquier otro, no hay problema.

Gracias de antemano.
  #2 (permalink)  
Antiguo 05/03/2007, 21:57
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Contador de visitas on Line

El metodo que puedes utilizar es el siguiente.
Una tabla con los siguientes datos

id | ip | ultima_visita | registrado |
id : tiene que index y autoincrementable
ip : varchar
ultima_visita : int ( va a ser un timestamp)
registrado : int ( 0 si es visita, 1 si esta registrado)

Entonces el algoritmo en pseucodigo seria :

En cada Ejecucion del Script
1.- Limpiamos la Tabla ( es decir, borrar todos los registros que cumpla la condicion hora actual - 2 minutos ).
Código:
$hora_local=time();
$sql="DELETE from `estadistica` WHERE hora<".($hora_local-2592000)."";
2.- Consultamos si Existe algun Registro con la IP del Visitante, Si existe la IP , Actualizamos la ultima_visita con la $hora_actual , si no existe, agregamos un nuevo registros donde guardamos la ip, la hora y si esta registrado (lo puedes saber por la cookie).

Entonces simplemente para consultar, cuantos usuarios estan contectados,
Tiene ques realizar un count con la condicion ( usuarios registrados registrado = 1, visitantes registrado = 0 , y el total la suma de los 2) (ve la funcion COUNT de Mysql).

Saludos
  #3 (permalink)  
Antiguo 05/03/2007, 22:09
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: Contador de visitas on Line

Genial, pero dime, como hago para obtener si existe un IP de visitante? con que funcion o mètodo?
  #4 (permalink)  
Antiguo 05/03/2007, 22:55
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Contador de visitas on Line

mm es algo basico

La ip del Visitante se guarda en el array $_SERVER Aqui tengo un tips

Pero basta con un
Código PHP:
<?
$ip
=$_SERVER['REMOTE_ADDR'];
echo 
$ip;
?>
Ya tienes la IP en la $variable $ip


-----

De todas forma, esta IP la pueden cambiar si estan bajo un proxy no tan anonimo, de todas formas, la mayoria de las aplicaciones acceden directamente a $_SERVER['REMOTE_ADDR'] para obtener la IP
  #5 (permalink)  
Antiguo 06/03/2007, 10:13
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: Contador de visitas on Line

Tienes razón, es algo básico, pero a veces nos saltamos algunas cosas básicas para hacer algo mas complejo y cuando nos enfrentamos a alguna necesidad diferente, ahi se presentan los problemas.
  #6 (permalink)  
Antiguo 06/03/2007, 11:15
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 20 años, 3 meses
Puntos: 5
Re: Contador de visitas on Line

Hola Javista, bueno aqui tengo un ejemplo comentado...
Código PHP:
<?php
// Estructura de la tabla
// --> * ip varchar(15) 
// --> * fecha int(14) 



 
function usuarios_activos()
 {
//permitimos el uso de la variable portadora del numero ip en nuestra funcion
    
global $REMOTE_ADDR;

//asignamos un nombre memotecnico a la variable
    
$ip $REMOTE_ADDR;
//definimos el momento actual
    
$ahora time();

//conectamos a la base de datos

    
$dbh=mysql_connect ("localhost""user""pass") ;
    
mysql_select_db ("db"); 


    
//actualizamos la tabla
    //borrando los registros de las ip inactivas (este ejemplo a 5 minutos)
    
$limite $ahora-5*60;
    
$ssql "delete from UsersOnLine where fecha < ".$limite;
    
mysql_query($ssql);

    
//miramos si el ip del visitante existe en nuestra tabla
    
$ssql "select ip, fecha from UsersOnLine where ip = '$ip'";
    
$result mysql_query($ssql);

    
//si existe actualizamos el campo fecha
    
if (mysql_num_rows($result) != 0$ssql "update UsersOnLine set fecha = ".$ahora." where ip = '$ip'";
    
//si no existe insertamos el registro correspondiente a la nueva sesion
    
else $ssql "insert into UsersOnLine (ip, fecha) values ('$ip', $ahora)";

    
//ejecutamos la sentencia sql
    
mysql_query($ssql);

    
//calculamos el numero de sesiones
    
$ssql "select ip from UsersOnLine";
    
$result mysql_query($ssql);
    
$usuarios mysql_num_rows($result);

    
//liberamos memoria
    
mysql_free_result($result);

    
//devolvemos el resultado
    
return $usuarios;
 }
 
$numusu=usuarios_activos();
?>
Espero te funcione .-

Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #7 (permalink)  
Antiguo 06/03/2007, 11:17
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: Contador de visitas on Line

Gracias, lo pondré a prueba.
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 17:25.