allora innanzitutto sarebbe opportuno salvare, sempre che tu ce l'abbia, un timstamp e la session_id nel db, poi fai un confronto del time depositato nel db con il time attuale.
dal db chiami il time corrispondente alla sessione in questione:
$sql = "SELECT time FROM $tabelle_db WHERE user = '$_SESSION[user]'";
e lo confronti, se è piu grande di 30 min... mandi l'utente in logout con un header, se invece e piu piccolo di 30 min fai semplicemente un update del time e risalvi il time attuale nel db.
Codice PHP:
$sql = "SELECT time FROM $tabelle_db WHERE user = '$_SESSION[user]'";
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result))
{
$time_alt=$row['time'];
}
$diff = $time - $time_alt;
if($diff >= $timeout) //manda in logout
{
//spiacente tempo scaduto...";
header("location:$redirect?logout=1&user={$_SESSION['user']}");
}
else //altrimenti sessione ancora valida aggiorna il time
{
$query = "UPDATE $tabelle_db SET time='$time' session='$_SESSION[id]' WHERE user = '$_SESSION[user]'";
$dummy = mysql_query($query) or die (mysql_error());
}