Gestione utenti presenza online & co.

Ho la necessità di gestire un database utenti i quali hanno accesso a dei file personali, mentre l'amministratore deve essere in grado di controllare se questi utenti sono online e se hanno già scaricato i file personali messigli a disposizione dall'amministratore stesso.

1. Il login avviene tramite cookie anche perchè per quello che devo fare mi sembrava la soluzione più appropriata, ma forse mi sbaglio...

2. Non so proprio come fare... avevo pensato di inserire nel database un campo timestamp che si aggiornasse ogni qual volta l'utente facesse il login. Ovviamente il cookie aveva una durata di 5 minuti, per cui se l'admin poteva sapere se un utente era online in linea di massima perchè attraverso una query prelevavo il nome degli utenti che avevano effettuato il login negli ultimi 5 minuti... tutto questo mi pare però troppo dispendioso... sai quante query??? idee???

3. Come posso verificare se un utente ha scaricato o no quel file???

Un grazie anticipatamente!!!  :bye:

inviato 10 anni fa
p3e2
p3e2
1
X 0 X

I punti 1 e 2 si risolvono con un'unica tecnica: login con le sessioni salvate su DB.

La gestione alternativa delle sessioni è spiegata qui:

http://www.phpnews.it/articoli/php/le-sessioni/4/

ma l'esempio non contiene il codice necessario al salvataggio dei dati in un DB.

Il principio è il seguente: quando l'utente effettua il log-in devi avviare una sessione. La gestione delle sessioni su DB comporta la scrittura di un record nella tabella delle sessioni. Quindi ad ogni utente loggato corrisponde un record nella tabella.

Ovviamente per contare gli utenti online basta contare i record della tabella nella sessione.

Per il terzo punto devi fare in modo che il download di un file passi per uno script PHP. In pratica l'utente non clicca su un link che punta direttamente al file ma ad uno script PHP che legge il file richiesto e lo invia all'utente.

Comunque entrambe le tecniche non sono banali, ti conviene affrontare un problema alla volta.

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Grazie 1000 per la risposta e complimenti per il forum, gli articoli e il sito in generale.  :D

Premetto che non me ne intendo molto visto che lavoro principalmente poco e raramente mi capita di dover programmare per cui c'è molto ingegno ma al contempo molti errori.  Per le sessioni già mi sono documentato e ho letto qui e là ma la questione che mi lascia perplesso è l'enorme quantità di query, o sbaglio??? Avevo pensato addirittura di utilizzare un file di testo, un xml che tracciasse la cronologia a mo' di programmi di messagistica istantanea. Se però mi confermi che è questo il miglior metodo, mi metto all'opera. Mi interesserebbe sapere come lavorano i vari forum board come vbullettin, invision... pure "loro" si affidano alle sessioni???

Per il terzo punto l'utente preleva il file da database per cui pensavo di poter fare qualcosina con javascript tuttavia mi sembra improbabile... Se ho capito bene potrei fare in modo che al click l'utente venga reindirizzato ad una pagina che oltre a memorizzare su database, aun file di testo o inviare una mail interna all'admin fa partire il download dopo un tot di secondi come si vede anche su altri siti...???

Grazie ancora, credo che diventerò un assiduo (nei miei momenti di lavoro  ::) ) utente...

risposto 10 anni fa
p3e2
p3e2
1
X 0 X

Le sessioni su DB sono praticamente l'unica soluzione usata dai forum, CMS e parenti. Basta vedere i nomi delle tabelle create da questi software per rendersene conto, c'è sempre qualcosa che si chiama "session". E' vero, per ogni pagina visitata servono 2 query (una per prelevare i dati di sessione e l'altra per salvarne le variazioni) ma queste query vengono eseguite su una tabella che contiene pochi record (dell'ordine di grandezza degli utenti online) quindi il problema è relativo. Sono delle INSERT, SELECT, UPDATE molto semplici e quindi molto veloci. Il vantaggio di questa tecnica rispetto all'utilizzo di un file di testo (o XML che è la stessa cosa) è la gestione concorrente degli accessi ai dati, che un DB sa gestire alla perfezione.

Nelle applicazioni "mission critical" la tabella delle sessioni vive solo nella RAM del server e non sul disco per cui una query è più veloce della lettura/scrittura di un file.

Se l'utente preleva il file dal database allora il gioco è fatto! Nello script che invia il file basta effettuare una ulteriore query per memorizzare che l'utente l'ha scaricato.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Grazie mille!!! Adesso mi metto all'opera.  :)

risposto 10 anni fa
p3e2
p3e2
1
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda