Foros del Web » Programando para Internet » PHP »

Usuarios online con php

Estas en el tema de Usuarios online con php en el foro de PHP en Foros del Web. buenas tardes, he logrado desarrollar un contador de usuarios que estan conectados a mi web por medio de la IP usando PHP, el problema es ...
  #1 (permalink)  
Antiguo 01/04/2011, 11:54
 
Fecha de Ingreso: enero-2010
Mensajes: 247
Antigüedad: 14 años, 2 meses
Puntos: 2
Usuarios online con php

buenas tardes, he logrado desarrollar un contador de usuarios que estan conectados a mi web por medio de la IP usando PHP, el problema es que hay mas de 2 usuarios conectados en una red Lan con la misma ip publica, y mi contador los cuenta como uno.

Como puedo lograr contar en realidad los usurios tengo online.
  #2 (permalink)  
Antiguo 01/04/2011, 12:04
Avatar de GAST0N  
Fecha de Ingreso: agosto-2010
Ubicación: Buenos Aires
Mensajes: 680
Antigüedad: 13 años, 8 meses
Puntos: 64
Respuesta: Usuarios online con php

Tendrias q trabajar con la variable $_SESSION
__________________
Twitter: @GastonArnedo

Muerte a los <tr> y <td>
  #3 (permalink)  
Antiguo 01/04/2011, 12:21
 
Fecha de Ingreso: enero-2010
Mensajes: 247
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Usuarios online con php

buenas, gracias por su respuesta.

En este caso como podria hacerlo, me puden dar un ejemplo.

mil gracias de nuevo
  #4 (permalink)  
Antiguo 01/04/2011, 12:23
Avatar de bUllan9ebrio  
Fecha de Ingreso: enero-2011
Ubicación: Chile
Mensajes: 1.128
Antigüedad: 13 años, 2 meses
Puntos: 128
Respuesta: Usuarios online con php

Mira te dejo algo para que leas y despues solo te faltarian los ejemplos y a soltar los dedos

Funciones de Sesiones
__________________
Si no vivimos como pensamos, pronto empezaremos a pensar como vivimos.
Más vale un Gracias sincero, que un número que aumente "popularidad" ¬¬°

Universidad de chile, campeón
  #5 (permalink)  
Antiguo 01/04/2011, 12:26
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Usuarios online con php

Jaime:

Decíme algo, lo que querés es que en una parte de tu página aparezca la cantidad de personas conectadas en ese momento con tu página?
Saludos.


Federico
  #6 (permalink)  
Antiguo 01/04/2011, 13:18
 
Fecha de Ingreso: enero-2010
Mensajes: 247
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Usuarios online con php

Cita:
Iniciado por fede1976 Ver Mensaje
Jaime:

Decíme algo, lo que querés es que en una parte de tu página aparezca la cantidad de personas conectadas en ese momento con tu página?
Saludos.


Federico
si justamente eso quiero, pero que cuente los usuarios online no teniendo en cuenta la IP (para evitar el problema antes mensionado), me dijeron que con sesiones pero no he podido lograrlo.

gracias.
  #7 (permalink)  
Antiguo 01/04/2011, 16:08
 
Fecha de Ingreso: enero-2010
Mensajes: 247
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Usuarios online con php

no he podido encontrar nada concreto, alguien sabe o me sugiere algo.
  #8 (permalink)  
Antiguo 01/04/2011, 17:29
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: Usuarios online con php

yo creo que no se puede xq tu no puedes entrar en una red local al menos que te lo permitan por supuesto.

yo tengo algo asi de los usuarios online pero como lo uso en una aplicacion facebook lo configuro segun el usuario que se a conectado y con un ajax cada 5 minutos refresco un div para que actualice la informacion
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #9 (permalink)  
Antiguo 01/04/2011, 22:06
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Usuarios online con php

Hola:

Tiene que existir alguna variable de servidor que guarde la cantidad de sesiones activas pero yo no he podido encontrar el dato.
Pero estuve pensando una alternativa, que hasta puede ser superior a la de las variables de sesión. Tal vez sea un poco rebuscada, pero creo que puede andar. La idea es que la página (el usuario, mediante JS) genere una variable al azar, que va a ser única para cada navegante. Esa variable se asigna a una matriz de sesión (o sea que tenés que usar sesiones de todas maneras). En la página está programado un post cada unos pocos segundos en los que se manda esa variable al azar. Estas variables al azar se cargan en una tabla con el dato de la hora. Las que tienen más de cierto tiempo, se eliminan. La pregunta es: ¿por qué sigue siendo necesario usar variables de sesión? Porque si el navegante sigue en tu sitio pero cambia de página, se le pasa la variable de sesión, que va a ser el número al azar generado por ese usuario, para que siga usando ese valor y no genere otro.
No sé si me equivoco, pero creo que este sistema te puede servir, si te parece bien la idea y necesitás código, me decís y te lo armo.
Saludos.


Federico
  #10 (permalink)  
Antiguo 02/04/2011, 08:21
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años
Puntos: 25
Respuesta: Usuarios online con php

Esto te servira:
http://www.google.com.ar/search?hl=e...=&oq=&gs_rfai=

Fijate, ya el primer resultado es simple y realmente funciona.. http://www.baluart.net/articulo/usua...-con-php-mysql

Y dentro del foro tambien debe haber muchas preguntas como esta, solo debes buscar bien:P

Saludos

Cita:
Iniciado por johhan16
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar"; ?>
...Error en linea: 1 o.O
Me costo encontrarlo, es lo que mas me olvido de poner jaja
  #11 (permalink)  
Antiguo 02/04/2011, 12:25
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Usuarios online con php

Almagro:

Lo que ocurre es que la persona que inició la conversación, quiere evitar el uso de la IP.
Saludos.


Federico
  #12 (permalink)  
Antiguo 02/04/2011, 12:53
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años
Puntos: 25
Respuesta: Usuarios online con php

Si es una web con registro, que sea el mismo sistema que el ip, pero usando la sesion del usuario, no seria dificil adaptarlo.. Yo en mi web tengo un contador de users online y pongo, cuantas personas en total(por ej. 8), users online(por ej.2), personas anonimas(por ej. 6).. Suerte
  #13 (permalink)  
Antiguo 02/04/2011, 16:53
 
Fecha de Ingreso: enero-2010
Mensajes: 247
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Usuarios online con php

Cita:
Iniciado por almagropaco_ Ver Mensaje
Si es una web con registro, que sea el mismo sistema que el ip, pero usando la sesion del usuario, no seria dificil adaptarlo.. Yo en mi web tengo un contador de users online y pongo, cuantas personas en total(por ej. 8), users online(por ej.2), personas anonimas(por ej. 6).. Suerte
Resumiendo, quiero que mi contador me registre el numero exacto de usuarios conectados incluyendo los usuarios que esten dentro de una red local.

por ejemplo.

Hay una red local con 10 equipos pero 8 usuarios de estos estan conectados a mi web, el contador que tengo actualmente me registra 1 usuario conectado debido que usan la misma ip publica pero necesito que muestre esos 8 usuarios que estan logeados.

almagropaco_ su contador hace lo que esto, si es asi como lo hago.

podria postear algo ?
gracias
  #14 (permalink)  
Antiguo 02/04/2011, 18:50
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Usuarios online con php

Jaime:

Mi método seguro que no te falla. Suena complicado pero es muy sencillo.
Tu sitio tiene muchas páginas o pocas páginas? Si querés te armo el código, pero me tenés que decir si pensás que te puede servir, yo estoy casi seguro de que si.
Saludos.


Federico
  #15 (permalink)  
Antiguo 02/04/2011, 19:04
Avatar de s00rk  
Fecha de Ingreso: octubre-2010
Ubicación: Mexico
Mensajes: 238
Antigüedad: 13 años, 5 meses
Puntos: 48
Respuesta: Usuarios online con php

Pues si son de la misma IP y ninguno de os 2 esta conectado, lo contara como 1 mismo.

Pero si uno esta conectado y el otro no pues ahi ya uno usando SESSION y el otro con la IP y ya obtendrias diferentes.

Es lo unico que se me ocurre.
  #16 (permalink)  
Antiguo 02/04/2011, 19:17
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años
Puntos: 25
Respuesta: Usuarios online con php

Podrias hacer sesiones que a su ves de tener el IP se les asigne un id, y asi contarlos diferente, o se podria tener en cuenta otros factores y no la IP, pero no se me ocurre algo viable facilmente
  #17 (permalink)  
Antiguo 03/04/2011, 11:03
 
Fecha de Ingreso: enero-2010
Mensajes: 247
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Usuarios online con php

Cita:
Iniciado por fede1976 Ver Mensaje
Jaime:

Mi método seguro que no te falla. Suena complicado pero es muy sencillo.
Tu sitio tiene muchas páginas o pocas páginas? Si querés te armo el código, pero me tenés que decir si pensás que te puede servir, yo estoy casi seguro de que si.
Saludos.


Federico

Al principio tiene unas 20-30 paginas pero iran aumentando amedida que se haga mas conocida.

quizas tu metodo me pueda servir, te agradezco si me posteas el codigo y su funcionamiento.

gracias
  #18 (permalink)  
Antiguo 03/04/2011, 11:46
Avatar de almagropaco_  
Fecha de Ingreso: marzo-2008
Ubicación: Mar del Plata
Mensajes: 854
Antigüedad: 16 años
Puntos: 25
Respuesta: Usuarios online con php

Cita:
Iniciado por JAI_ME Ver Mensaje
Al principio tiene unas 20-30 paginas pero iran aumentando amedida que se haga mas conocida.

quizas tu metodo me pueda servir, te agradezco si me posteas el codigo y su funcionamiento.

gracias
Pero no creo que vayas a poner el codigo que el te pase en todas las paginas mas vale haz un include..
  #19 (permalink)  
Antiguo 03/04/2011, 11:56
 
Fecha de Ingreso: enero-2010
Mensajes: 247
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Usuarios online con php

Cita:
Iniciado por almagropaco_ Ver Mensaje
Pero no creo que vayas a poner el codigo que el te pase en todas las paginas mas vale haz un include..

si claro es mucho mas eficiente.
  #20 (permalink)  
Antiguo 03/04/2011, 15:13
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Usuarios online con php

Jaime:

Armé todo el código y funciona perfectamente. No estoy seguro de que funcione en tu LAN conectada a internet, pero creo que si.
Desarrollé un archivo flash al que llamé pulsador.swf. Este archivo lo que hace es conectar con determinado archivo PHP (usuarios_online.php) cada cierto tiempo (3 segundos). Usuarios_online.php hace dos cosas, si esa sesión acaba de empezar, crea un numero al azar e inserta este dato junto con la fecha en una tabla. Si la sesión está activa, sólo actualiza la hora de la misma.
La idea es que insertes este flash en todas las página de tu sitio, le ponés los valores de ancho y alto en cero y ni siquiera se ve.
Los códigos son estos:

usuarios_online.php:

session_start();

mysql_connect("localhost","tu_servidor","tu_contra sena");
$tiempo_actual = time();



if ($_SESSION["activo"] == 'si')
{
$id = $_SESSION["id"];
$actualizacion_hora = mysql_db_query("tu_base", "UPDATE online SET hora ='$tiempo_actual' where id='$id'");
}
else
{
$_SESSION["activo"] = 'si';
$_SESSION["id"] = rand(1,1000000);
$id = $_SESSION["id"];
$inserta_id = mysql_db_query("tu_base", "insert online (id, hora) values ('$id', '$tiempo_actual')");
}


pulsador.fla:

System.security.allowDomain("http://localhost", "127.0.0.1");
var comunicacion_con_el_servidor = new LoadVars();

temporizador1 = setInterval(mostrarme_online, 3000);

function mostrarme_online()
{

comunicacion_con_el_servidor.sendAndLoad("usuarios _online.php", comunicacion_con_el_servidor, "Post");
}


además hice una index que muestra la cantidad de usuarios conectados, menos el que se acaba de conectar. Es decir, yo me centré en la generación de la tabla con los usuarios activos, fijáte vos como querés mostrar esos usuarios activos, haciendo otro FLA, usando el mismo o usando AJAX.

index.php:

mysql_connect("localhost","tu_servidor","tu_contra sena");
$tiempo_actual = time();
$ver_usuarios_online = mysql_db_query("tu_base", "SELECT * from online where hora > $tiempo_actual - 60");
$cantidad_de_usuarios = mysql_num_rows($ver_usuarios_online); // este valor no incluye al usuario que está entrando

$pagina = '<font size="20">'.$cantidad_de_usuarios.'</font><embed src="pulsador.swf" style="width:0; height:0">';
echo $pagina;


La tabla que uso tiene dos campos: id y hora.
Lo probé y funciona perfecto, incluso, en el pulsador podes cambiar ese 3000 o modificar la sentencia mysql en la que le resto 60 a $tiempo_actual y así definir como quieras los tiempos para decidir si un usuario está o no online.
Decíme si te sirve!
Saludos.



Federico
  #21 (permalink)  
Antiguo 03/04/2011, 15:56
 
Fecha de Ingreso: enero-2010
Mensajes: 247
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Usuarios online con php

muchas gracias, fede1976 voy a probar el codigo y adaptarlo a en mi web y te cuento.

mil gracias por tu ayuda.
  #22 (permalink)  
Antiguo 03/04/2011, 16:01
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Usuarios online con php

De nada Jaime!
Agregále en algún lugar, puede ser en el sistema de visualización de usuarios online, un DELETE, para eliminar los registros de usuarios inactivos.
Cualquier cosa me preguntás. Yo también voy a usar este código para mi sitio.
Saludos!


Federico
  #23 (permalink)  
Antiguo 09/04/2011, 22:48
 
Fecha de Ingreso: enero-2010
Mensajes: 247
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Usuarios online con php

Cita:
Iniciado por fede1976 Ver Mensaje
Jaime:

Armé todo el código y funciona perfectamente. No estoy seguro de que funcione en tu LAN conectada a internet, pero creo que si.
Desarrollé un archivo flash al que llamé pulsador.swf. Este archivo lo que hace es conectar con determinado archivo PHP (usuarios_online.php) cada cierto tiempo (3 segundos). Usuarios_online.php hace dos cosas, si esa sesión acaba de empezar, crea un numero al azar e inserta este dato junto con la fecha en una tabla. Si la sesión está activa, sólo actualiza la hora de la misma.
La idea es que insertes este flash en todas las página de tu sitio, le ponés los valores de ancho y alto en cero y ni siquiera se ve.
Los códigos son estos:

usuarios_online.php:

session_start();

mysql_connect("localhost","tu_servidor","tu_contra sena");
$tiempo_actual = time();



if ($_SESSION["activo"] == 'si')
{
$id = $_SESSION["id"];
$actualizacion_hora = mysql_db_query("tu_base", "UPDATE online SET hora ='$tiempo_actual' where id='$id'");
}
else
{
$_SESSION["activo"] = 'si';
$_SESSION["id"] = rand(1,1000000);
$id = $_SESSION["id"];
$inserta_id = mysql_db_query("tu_base", "insert online (id, hora) values ('$id', '$tiempo_actual')");
}


pulsador.fla:

System.security.allowDomain("http://localhost", "127.0.0.1");
var comunicacion_con_el_servidor = new LoadVars();

temporizador1 = setInterval(mostrarme_online, 3000);

function mostrarme_online()
{

comunicacion_con_el_servidor.sendAndLoad("usuarios _online.php", comunicacion_con_el_servidor, "Post");
}


además hice una index que muestra la cantidad de usuarios conectados, menos el que se acaba de conectar. Es decir, yo me centré en la generación de la tabla con los usuarios activos, fijáte vos como querés mostrar esos usuarios activos, haciendo otro FLA, usando el mismo o usando AJAX.

index.php:

mysql_connect("localhost","tu_servidor","tu_contra sena");
$tiempo_actual = time();
$ver_usuarios_online = mysql_db_query("tu_base", "SELECT * from online where hora > $tiempo_actual - 60");
$cantidad_de_usuarios = mysql_num_rows($ver_usuarios_online); // este valor no incluye al usuario que está entrando

$pagina = '<font size="20">'.$cantidad_de_usuarios.'</font><embed src="pulsador.swf" style="width:0; height:0">';
echo $pagina;


La tabla que uso tiene dos campos: id y hora.
Lo probé y funciona perfecto, incluso, en el pulsador podes cambiar ese 3000 o modificar la sentencia mysql en la que le resto 60 a $tiempo_actual y así definir como quieras los tiempos para decidir si un usuario está o no online.
Decíme si te sirve!
Saludos.



Federico


definitivamente es una buena alternativa, de nuevo gracias por compartir sus conocimientos.

Solo me quedan dos preguntas,

1. Si un usuario abandona el sitio, el script lo sigue contando como si estuviera online hasta que pase 1 hora (tiempo establecido en la consulta "where hora > $tiempo_actual - 60") ?

2. he verificado que el usuario cuando cierra el sitio no se elimina la sesion generada por php cuando entro, afecta en algo esto ?

de nuevo gracias.
  #24 (permalink)  
Antiguo 10/04/2011, 17:47
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Usuarios online con php

Jaime:

Me alegro de que te haya sido útil mi código!
Como te dije en mi mensaje anterior, el código se enfoca en generar una tabla con los usuarios. A cada usuario se le asigna un número al azar y se inserta este en una tabla junto con la hora. El pulsador se conecta con frecuencia al servidor y esto actualiza la hora de ese usuario. Lo que define si el usuario está activo, es decir, online, es el último valor de la hora. Ese 60 que vos mencionás son segundos, por lo tanto, a un usuario que no se lo actualiza por más de un minuto, se lo considera inactivo, es decir, offline.
En este ejemplo que te mandé, al ingresar un usuario, este recibe la cantidad de usuarios activos hasta ese momento, es decir, no se lo incluye a él mismo.
Yo hice una prueba con varios navegadores, entro con IE a index.php y me dice 0, espero un poco, actualizo IE y me dice 1. Si ingreso con Firefox, me dice 1, espero un poco, actualizo y dice 2. Por supuesto, en IE, seguirá diciendo 1, a menos que actualice en IE. Si salgo de Firefox, espero un minuto, actualizo en IE y ya me dice 1. Es decir, yo no diseñé el sistema para que el navegante vea en tiempo real la cantidad de usuarios online, a medida que los usuarios entran y salen. Pero tenemos armado toda la estructura de código necesaria para lograr eso! Es poco el esfuerzo que falta.
En esta situación se pueden hacer varias cosas: Que el mismo pulsador.swf muestre los usuarios online, que lo muestre otro .swf o que se muestre usando AJAX.
Dame una idea de esto y cómo es tu página, si la idea es tener un sector de la página en la que se muestran los usuarios online y de qué manera.
Ya casi lo tenemos!
Saludos.



Federico
  #25 (permalink)  
Antiguo 10/04/2011, 20:09
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 2 meses
Puntos: 13
Respuesta: Usuarios online con php

En ese caso, sería suficiente en inicializarlo en +1, no?

yo tengo un link por ahí, nose si es la misma o diferente solución, mañana lo busco (..)
__________________
¿ya conoces la red social de cocina? descubre y comparte recetas de cocina
TONIWEB, un programador web freelance
  #26 (permalink)  
Antiguo 10/04/2011, 21:13
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Usuarios online con php

Bam:

Lo que decís es correcto, pero eso no constituye el problema que estamos analizando en esta instancia. En realidad, lo importante ahora es saber dónde se quieren mostrar los usuarios online, de qué manera y usando qué tecnología (Flash o Javascript).
Saludos.


Federico

Etiquetas: usuarios
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:29.