Detto da boomboom69
QUI
http://forum.html.it/forum/showthrea...hlight=%24user
a grandi linee...
io direi di fare due tabelle, 1 per gli utenti registrati, un'altra per vedere chi è online (registrati e non)
nella tabella degli utenti registrati mettete quello che volete ma è importante che ci sia un campo identificativo univoco (generalmente id primary key auto_increment)
si presuppone che quando un utente si logga, viene creata una sessione in cui viene registrato l'id dell'utente
nella tabella online mettete tre campi
code:
CREATE TABLE online (
id int(10) NOT NULL,
session varchar(50) NOT NULL,
time int(14) NOT NULL
KEY id (id)
) TYPE=MyISAM;
in ogni file includete queste righe
code:
session_start();
// prendo l'id di sessione
$session = session_id();
// verifico se esiste la sessione con l'id registrato altrimenti imposto l'id = -1
$user_id = isset($_SESSION['id']) ? $_SESSION['id'] : -1;
$_SESSION['id'] = $user_id;
// ora attuale in secondi
$the_time = time();
// imposto il timeout in minuti
$useronline_timeout = 5; // timeout dopo 5 minuti
$online_timeout = $the_time - ($useronline_timeout * 60);
// connessione db
// selezione
// elimino dalla tabella tutti i record che sono in timeout
mysql_query("DELETE FROM online WHERE time < $online_timeout");
// effettuo una query per verificare se esiste o meno la sessione nella tabella
$result = mysql_query("SELECT 1 FROM online WHERE session='$session'");
if(mysql_num_rows($result) > 0) {
// la sessione esiste, aggiorno il record
mysql_query("UPDATE online SET id='$user_id', time='$the_time' WHERE session='$session'");
} else {
// la sessione non esiste, creo il record
mysql_query("INSERT INTO online (id, session, time) VALUES ('$user_id', '$session', '$the_time')");
}
i campi con id = -1 saranno utenti non registrati, quelli con id diverso saranno i registrati
spero vi sia di aiuto