Sin conocer la estructura de su base de datos, es una suposición.
if ($time >= $loggedtime)
Está comparando una cadena como '2012-11-01 10:10:10' con cualquier $time
está en su base de datos. Este parece ser el problema aquí. Podría/debería usar marcas de tiempo UNIX. Se pueden comparar fácilmente.
Si $time
fuera una marca de tiempo UNIX que podrías hacer:
if ($time >= time()-300)
EDITAR:
Cambie su consulta para obtener una marca de tiempo UNIX para online
$query = 'SELECT userid, handle, UNIX_TIMESTAMP(online) as online FROM ^users ORDER BY userid ASC';
EDIT2: Para que quede más claro:en su primera versión estaba comparando dos fechas en el formulario '2012-11-01 10:10:10'
if ('2012-11-01 10:10:10' < '2012-11-02 10:10:10')
Esto no puede funcionar en PHP, es como hacer:
if ('apples' < 'bananas')
Tienes que comparar números. Por lo tanto, sugerí usar marcas de tiempo de Unix que se pueden comparar fácilmente.