también hay varios sin usar bases de datos.
En esta ocasión no usaremos ninguna BD, usaremos un archivo llamado usuarios.dat Entonces, vamos a crear nuestro script PHP y lo llamamos activos.php
<?php
$tiempo_logout = 600; // segundos tras los cuales un usuario es marcado como inactivo
$arr = file("usuarios.dat");
$contenido = $REMOTE_ADDR.":".time()." ";
for ( $i = 0 ; $i < sizeof($arr) ; $i++ )
{
$tmp = explode(":",$arr[$i]);
if (( $tmp[0] != $REMOTE_ADDR ) && (( time() - $tmp[1] ) < $tiempo_logout ))
{
$contenido .= $REMOTE_ADDR.":".time()." ";
}
}
$fp = fopen("usuarios.dat","w");
fputs($fp,$contenido);
fclose($fp);
$array = file("usuarios.dat");
$USUARIOS_ACTIVOS = count($array);
?>
Bueno, explicamos paso a paso lo que hace el script:
1. Lo primero es sacamos el usuarios.dat a un array
2. Creamos el archivo de texto con las IP y la hora de visita de los que visitan nuestra web
3. "Borramos" de ese archivo los que llevan más de $tiempo_logout sin actividad
4. Escribimos el fichero
5. Declaramos una variable $USUARIOS_ACTIVOS que contiene el número de usuarios activos del momento
6. Jeje....así de sencillo

La forma de utilizar el Script, es muy sencilla, al principio de cualquier página de tu web, pones <?php include("activos.php") ?> y donde quieras mostrar el número de usuarios, usas la variable $USUARIOS_ACTIVOS.
Otro ejemplo:
activos.php
<?
// Usuarios activos con PHP sin utilizar bases de datos
// 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("usuarios.dat");
$contenido = $REMOTE_ADDR.":".time()." ";
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()." ";
}
}
$fp = fopen("usuarios.dat","w");
fputs($fp,$contenido);
fclose($fp);
$array = file("usuarios.dat");
$USUARIOS_ACTIVOS = count($array);
// Imprimimos la cantiadad de usuarios activos
echo "Hay ".$USUARIOS_ACTIVOS." usuarios activos";
?>
Para que el script funcione correctamente, tendremos que crear el archivo usuarios.dat sin incorporarle nada de contenido y darle permisos de escritura.
En ASP:
El codigo se debe usar en el archivo Global.asa. No debe ir encerrado entre <% y %> y debe ser lo unico que haya dentro del mismo. (Bueno, no lo unico, pero jugar con el Global.asa no lo recomiendo).
Aqui esta el codigo que va en el Global.asa
<script language=vbscript runat=server>
Sub Application_OnStart
Application("Activos") = 0
End Sub
Sub Application_OnEnd
End Sub
Sub Session_OnStart
Application.Lock
Application("Activos") = Application("Activos") + 1
Application.Unlock
End Sub
Sub Session_OnEnd
Application.Lock
Application("Activos") = Application("Activos") - 1
Application.Unlock
End Sub
</script>
Y para mostrar la informacion que recoge el Global.asa, o sea para mostrar los usuarios activos como lo hice yo en mi ejemplo, deben poner lo siguiente en la pagina que muestran el dato:
<P>En este momento hay <%=Application("Activos")%> usuario/s en nuestro sitio</P>