Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   no me va usuarios activos con txt (http://www.forosdelweb.com/f18/no-usuarios-activos-con-txt-715251/)

kaninox 02/07/2009 17:34

no me va usuarios activos con txt
 
pues en todas partes esta este codigo para mostrar los usuarios que estan en linea, digamos 2 usuarios en linea, pero lo he probado desde mis tres pc diferentes ip pero siempre me muestra que hay solo 1.... alguna sugerencia...
le faltara algo :/

Código php:
Ver original
  1. <?php
  2. // Usuarios activos con PHP sin utilizar bases de datos
  3.  
  4. // Tiempo en segundos en que expira la sesión.
  5. $fin_session = 600; // esto en segundos
  6.  
  7. // En usuarios.dat guardaremos el IP y hora en que el usuario inicio la sesión
  8. $arr = file("usuarios.dat");
  9. $contenido = $REMOTE_ADDR.":".time()." ";
  10.  
  11. for ( $i = 0 ; $i < sizeof($arr) ; $i++ )
  12. {
  13. $tmp = explode(":",$arr[$i]);
  14. if (( $tmp[0] != $REMOTE_ADDR ) && (( time() - $tmp[1] ) < $fin_session ))
  15. {
  16. $contenido .= $REMOTE_ADDR.":".time()." ";
  17. }
  18. }
  19.  
  20. $fp = fopen("usuarios.dat","w");
  21. fputs($fp,$contenido);
  22. fclose($fp);
  23.  
  24. $array = file("usuarios.dat");
  25.  
  26. $USUARIOS_ACTIVOS = count($array);
  27.  
  28. // Imprimimos la cantiadad de usuarios activos
  29. echo "Hay ".$USUARIOS_ACTIVOS." usuarios activos";
  30. ?>

Ronruby 02/07/2009 17:51

Respuesta: no me va usuarios activos con txt
 
Cita:

pero lo he probado desde mis tres pc diferentes ip pero siempre me muestra que hay solo 1
Suponiendo que ya tienes el codigo subido en tu servidor de internet,
¿Esas 3 PC comparten el mismo Internet?

kaninox 02/07/2009 17:59

Respuesta: no me va usuarios activos con txt
 
si comparten el mismo internet, pero tengo otro código por ejemplo, que me guarda las visitas eso lo hago con mysql y agarro las ip, y me funciona en mis 3 pc, todos traen ip's diferentes.... entonces si funciona ese, este debería ir bien también, ahora que veo el archivo de texto que se crea, como que suprime las antiguas entradas por la nueva :/

acoevil 02/07/2009 19:53

Respuesta: no me va usuarios activos con txt
 
Q tal, si quieres puedes utilizar esta clase que permite hacer lo que quieres
http://www.forosdelweb.com/wiki/PHP:...con_un_.txt%3F

kaninox 02/07/2009 20:16

Respuesta: no me va usuarios activos con txt
 
me da error en php4 : Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in g:\proyect\web\usuarios.php on line 5

acoevil 02/07/2009 20:24

Respuesta: no me va usuarios activos con txt
 
En la que te pase?

kaninox 02/07/2009 20:28

Respuesta: no me va usuarios activos con txt
 
sep me da error...., pero pa mi que es por el private :/

acoevil 02/07/2009 20:30

Respuesta: no me va usuarios activos con txt
 
Ui que raro pegalo asi


<?php

class Activos
{
//creado por acoevil
private $nombre;
private $modo;
private $ip;
private $inactivo=300;
private $hora;
private $activos=0;

function Activos($nombre)
{
$this->nombre=$nombre;
$this->modo="r";
$this->ip=$_SERVER['REMOTE_ADDR'];
$this->hora=$tiempo=date("h:i:s");
################################
$apuntador=$this->abrir();
$usuarios=$this->leer($apuntador);
$this->escribimos($usuarios);
echo "Usuarios en linea: ".$this->activos;
}
function abrir()
{
$apuntador=fopen($this->nombre,$this->modo);
return $apuntador;
}
function leer($apuntador)
{
while(!feof($apuntador))
{
$linea=fgets($apuntador);
list($ip,$tiempo_t)=split(" ",$linea);
if($ip==$this->ip)
{
$mi_ip=$this->ip." ".$this->hora;
$this->activos++;
}
else
{
if(strtotime($this->hora)>strtotime($tiempo_t)){
$diferencia=strtotime($this->hora)-strtotime($tiempo_t);
}else{
$diferencia=strtotime($tiempo_t)-strtotime($this->hora);
}



if($diferencia<$this->inactivo)
{
$tx=$tx.$ip." ".$tiempo_t."\n";
$this->activos++;
}
}

}
if($mi_ip=="")
{
$mi_ip=$this->ip." ".$this->hora;
$this->activos++;
}
fclose($apuntador);
return $introduce=$tx.$mi_ip;

}
function escribimos($usuarios)
{
$fp=fopen($this->nombre,"w");
fwrite($fp,$usuarios);
fclose($fp);


}
}
$usuarios=new Activos("usuarios.txt");


?>

kaninox 02/07/2009 20:37

Respuesta: no me va usuarios activos con txt
 
nops me sigue dando error : linea 5
Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in g:\proyect\web\activos.php on line 5

private $nombre;

seguro que esta clase es para php5 yo tengo php4, no me reconoce private....

edito : cambie los private por var
y anda pero no se aun si funciona del todo, provare desde las otras maquinas y te cuento ;)

acoevil 02/07/2009 20:42

Respuesta: no me va usuarios activos con txt
 
Si es para php5

kaninox 02/07/2009 21:24

Respuesta: no me va usuarios activos con txt
 
te cuento que cambiando los private a var funciona tanto para php4 y 5 probado y hace bien la suma ;)

saludos y gracias....


La zona horaria es GMT -6. Ahora son las 10:56.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.