você precisará de uma base de dados... você grava a hora que ele fez o login e grava a hora que ele fará logout, pela função date(); (veja o manual no www.php.net) se ele fechar o brownser, você pode por em cron uma verificação dos usuários logados, ou verificar sempre em todas as páginas se a sessão ainda existe... Vale lembrar que saber o tempo precisamente é quase impossível!!!!