Foros del Web » Programando para Internet » PHP »

Trabajando con Usuarios Activos

Estas en el tema de Trabajando con Usuarios Activos en el foro de PHP en Foros del Web. Hola a Todos. Tengo un script que me cuenta los usuarios activos en mi web, pero no me esta funcionando, siempre me bota el valor ...
  #1 (permalink)  
Antiguo 21/05/2005, 21:30
 
Fecha de Ingreso: julio-2001
Ubicación: Bogota
Mensajes: 87
Antigüedad: 22 años, 9 meses
Puntos: 0
Trabajando con Usuarios Activos

Hola a Todos. Tengo un script que me cuenta los usuarios activos en mi web, pero no me esta funcionando, siempre me bota el valor de un usuario activo, cuando hay mas de uno en el sitio. Lo meti en una funcion, para luego imprimirlo en otro lado. el codigo es el siguiente.

<?
function mostrar_usuarios_activos() {
$archivo=RUTA_ABSOLUTA."includes/usuarios.dat"; //archivo donde almacenarán los usuarios activos

// Tiempo en segundos en que expira la sesión.
$fin_session = 600;

// En usuarios.dat guardaremos el IP y hora en que el usuario inicio la sesión
$arr = file($archivo);
$contenido = $_SERVER['REMOTE_ADDR'].":".time()." ";

for ( $i = 0 ; $i < sizeof($arr) ; $i++ )
{
$tmp = explode(":",$arr[$i]);
if (( $tmp[0] != $_SERVER['REMOTE_ADDR'] ) && (( time() - $tmp[1] ) < $fin_session ))
{
$contenido .= $_SERVER['REMOTE_ADDR'].":".time()." ";
}
}

$fp = fopen($archivo,"w");
fputs($fp,$contenido);
fclose($fp);

$array = file($archivo);

$contar = count($array);
///////////
//Ahora damos formato a la salida, modifica esto a tu gusto
//Ten en cuenta que la variable $contar contiene el nº de usuarios activos
if ($contar==1){$contar="1 usuario activo";}else{$contar="$contar usuarios activos";}
echo $contar; //Lo mostramos por pantalla


}
?>

Espero me puedan colaborar.

De antemano muchas gracias!!

atte.


JLC
  #2 (permalink)  
Antiguo 22/05/2005, 02:28
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Aquí te dejo otra versión:

<?php

$archivo="usuarios.txt"; //archivo donde almacenarán los usuarios activos
$inactivo=600; //tiempo en segundos en que un usuario estará inactivo
$contar=0;

$fp=fopen($archivo,"r");

$tiempo=time();
/*Cuando el tamaño del archivo es 0 casca, ponemos la @ delante de la funcion para que no muestre el error en pantalla*/
$contenido=@fread($fp,filesize($archivo));
fclose($fp);

$lineas=split("\n",$contenido);

$filas=file($archivo);

$res=NULL;
for ($a=0; $a < sizeof($filas); $a++) {
$datos=split(':',$lineas[$a]);
$descontar=$tiempo-$inactivo;
if ($datos[0] != $_SERVER['REMOTE_ADDR'] && $datos[1] > ($descontar)) {
$res.= $datos[0].":".$datos[1]."\n";
$contar++;
}
}

$res.=$_SERVER['REMOTE_ADDR'].":$tiempo\n";
$contar++; // Ya tenemos el total de usuarios activos
$fp=fopen($archivo,"w");
fwrite ($fp,$res);
fclose($fp);

//Ahora damos formato a la salida, modifica esto a tu gusto
//Ten en cuenta que la variable $contar contiene el nº de usuarios activos

if ($contar==1) echo "1 usuario online";
else echo "$contar usuarios online";
?>

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #3 (permalink)  
Antiguo 22/05/2005, 04:07
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
DjNelson: ¿No es la FAQ de este foro???

joseluiscs: ¿esto se presentó al manejarlo como función??... osease que si manejas el código directo sí funciona?? .. deberías mencionarlo para ver el error, entonces sería igual importante incluyeras la forma en que llamas a la función.. aunque no debería haber mayor problema.

Ambos: Les invito cordialmente a que hagan uso de los recursos que ofrece el foro. Básicamente la posibilidad de colorear el código... resulta más fácil leerlo, ocupa menos espacio, no "destruye" la estructura de la página...

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #4 (permalink)  
Antiguo 22/05/2005, 04:47
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
jam1138, seguramente quité el script de estos foros.

Cuando respondo a un mensaje ('Respuesta rápida') no apaceren los botones para insertar las etiquetas...

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #5 (permalink)  
Antiguo 22/05/2005, 05:02
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Puedes insertarlas directamente: [ PHP] y [ /PHP]... a mí me resulta más práctico.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 22/05/2005, 16:08
 
Fecha de Ingreso: julio-2001
Ubicación: Bogota
Mensajes: 87
Antigüedad: 22 años, 9 meses
Puntos: 0
Hola.

Yo lo uso dentro de una funcion, y me sale solo 1 usuario activo...lo saque de la funcion y tampoco sirve...quien sabe que sera....use el codigo que mostre y el de faqq......y ninguno de los dos me ha funcionado. Si me pueden colaborar seria genial y les agradeceria en el alma!!!
__________________
=============
JLC
  #7 (permalink)  
Antiguo 22/05/2005, 16:18
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por joseluiscs
Yo lo uso dentro de una funcion, y me sale solo 1 usuario activo...lo saque de la funcion y tampoco sirve...quien sabe que sera....use el codigo que mostre y el de faqq......y ninguno de los dos me ha funcionado. Si me pueden colaborar seria genial y les agradeceria en el alma!!!
... perdona pero le FAQ sirve.. la he provado.

Quizá tu error está en que intentas hacerlo funcionar en la misma PC... dicho sistema te devuelve los "VISITANTES REALES" no las páginas abiertas... par ello optiene la IP de dicho visitante y solo agrega como nueva visita si es diferente... por lo que, así tengas mil páginas abiertas, si la visualizas en la misma PC será el mismo visitante...

Otra cosa, los usuarios con proxy manejan la misma IP por lo que igual puede haber varias PC pero si tienen la misma IP será contado como el mismo visitante... ¿no viene comentado eso en la FAQ?..

Espero sea "tu error", de lo contrario coméntalo...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 22/05/2005, 16:24
 
Fecha de Ingreso: julio-2001
Ubicación: Bogota
Mensajes: 87
Antigüedad: 22 años, 9 meses
Puntos: 0
No no no....lo tengo montado en la website.....y tengo en el momento que hago la prueba, tengo tres amigos, en tres computadores distintos, con tres ip's distintas y sigue botando 1 usuario activo. Porfavor colaborenme

Gracias!
__________________
=============
JLC
  #9 (permalink)  
Antiguo 22/05/2005, 16:35
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Es difícil ayudarte así... te digo que el script funciona, ignoro qué hayas hecho ( sin culpar) para que no funcione... pero trata de buscar el error... yo empezaría por ver el archivo en el que guarda los datos... abrelo y vé qué IP te guarda, a quién corresponde... imprime los datos... ¿quién entra? ¿cuándo? ¿por qué?... ... incisto, ayudarte así es un poco complicado.

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #10 (permalink)  
Antiguo 23/05/2005, 11:20
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
yo también te puedo asegurar que el script que dejé funciona...
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
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 11:56.