Hola,
Estaria bien que usases $_SERVER, por los temas de register_globals. Y creo que
Código PHP:
for ( $i = 0 ; $i < sizeof($arr) ; $i++ )
{
$tmp = explode(":",$arr[$i]);
if (( $tmp[0] != $REMOTE_ADDR ) && (( time() - $tmp[1] ) < $fin_session ))
{
$contenido .= $REMOTE_ADDR.":".time()." ";
}
}
tendria que ser
Código PHP:
for ( $i = 0 ; $i < sizeof($arr) ; $i++ )
{
$tmp = explode(":",$arr[$i]);
if (( $tmp[0] != $REMOTE_ADDR ) && (( time() - $tmp[1] ) < $fin_session ))
{
$contenido .= $tmp[0].":".$tmp[1]."\n";
}
}
porque si lo entiendo bien quieres reescribir solo las entradas anteriores que no correspondan con esa IP, manteniendo el tiempo original. Tal como lo tenias, pisabas las IPs viejas y actualizabas los tiempos de conexion.
Tambien haria $contenido una array, igual que lo lees del fichero. Luego lo grabas con un implode, pero no vuelves a leer una segunda vez el fichero, puedes hacer el count de $contenido.
Tambien usaria un foreach en lugar de un for normal, no llamaria a time() dentro del bucle, lo llamaria antes metiendo su valor dentro de una variable y usaria esa variable en el bucle (manias, llamar a una funcion es mas "costoso" que consultar una variable).
Y luego habria que testear los problemas de concurrencia. ¿Que pasa en el hipotetico caso que 2 usuarios a la vez llamaen a esa funcion? ¿Como se comporta?
Saludos.
PD: Son criticas con intencion de ayudarte a mejorar (en mi opinion) el script.