Salve eccoci di nuovo qui per un altro consiglio. Uso un script che gestisce gli utenti che devono accedere con password, usa sia le sessioni che i permessi ed ha questo db

CREATE TABLE sessioni (
uid CHAR(32) NOT NULL,
user_id INT UNSIGNED NOT NULL,
creation_date INT UNSIGNED NOT NULL,
INDEX(uid));

CREATE TABLE utenti (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(30) NOT NULL,
surname VARCHAR(30) NOT NULL,
username VARCHAR(30) NOT NULL,
password CHAR(32) NOT NULL,
PRIMARY KEY(id),
INDEX(username,password));
Veniamo al dunque della persona che accede al sito devo sapere il nominativo dell'utente (gia registrato sul db) la data, l'ora e la pagina che sta visualizzando. Il tutto deve essere registrato su db.

Sul forum ho trovato questo

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
Mi puo essere utile? se si come ampliarlo alle mie esigenze?


Grazie