Ya se ha tratado varias veces la forma de mantener una lista de usuarios conectados y, según recuerdo, casi siempre se ha llegado a la misma conclusión:
1. Guarda la hora de la última actividad del usuario, eso ya lo tienes.
2. No es necesario detectar en qué momento se desconecta, porque no hay una forma eficiente de lograrlo.
3. Establece un tiempo límite para "decidir" si el usuario está conectado.
4. Realiza una consulta a la base de datos para obtener la lista de usuarios conectados de acuerdo al tiempo límite.
Ejemplo en pseudocódigo:
Código:
// Ya tienes el paso uno - lo saltamos
// El paso dos no tiene caso ni mencionarlo
// Paso 3: Tiempo límite para decidir si el usuario está conectado
$limite = time() - (2 * 60); // Dos minutos... aunque me parece poco.
// Paso 4: Consulta la base de datos para ver quienes están en línea
$sql = "SELECT * FROM usuario WHERE uconexion >= $limite";
$res = mysqli_query($conect, $sql);
Ahora, si insistes en asignar NULL a los usuarios desconectados, cuéntanos un poco de tu proyecto, en qué momento planeas ejecutar esa consulta y tal vez podamos ayudarte a que funcione.