- Home
- Categorie
- Coding e Sistemistica
- PHP
- Problema sessioni utenti
-
il sistema è più o meno questo:
una pagina che fai girare ogni TOT, che modifica gli user collegati, aggiornando il timestamp nel DB, e cancella quelli fuori dal timeout.
esempio:
[PHP]
$timeout = time()-60;//Timeout di 1 minuto$query = "UPDATE utenti_collegati SET timeout='".time()."' WHERE id=1";
mysql_query($query);$query = "DELETE FROM utenti_collegati WHERE timeout < '".$timeout."''";
mysql_query($query);$query = "SELECT * FROM utenti_collegati";
$rsq = mysql_query($query);
while($rwq = mysql_fetch_assoc($rsq))
{
echo $rwq['user];
}[/PHP]
l'ho fatta al volo, ma più o meno è così!
fammi sapere!
-
si ma in questo modo non mi cancellerebbe anche quegli che hanno la pagina aperta per più di un minuto senza aggiornare???
-
se fai un ajax o un iframe, fai aggiornare ogni TOT secondi!
con ajax, magari usando jquery, ti viene molto facile, e fai una chiamata al DB ogni utente, il ke, con molti utenti contemporaneamente, può essere una rottura, ma se il timeout va ogni 5 minuti....i danni collaterali diminuiscono!
-
ho un pò modificato il tuo codice
[PHP]
$timeout = time() -60; //Timeout di 1 minuto$query_timeout = "UPDATE sessioni SET timeout='".time()."' WHERE id='".$_COOKIE["sessioni"]."'";
$result_timeout = mysql_query($query_timeout) OR DIE (mysql_error());$query_timeout_set = "UPDATE sessioni SET online='0' WHERE timeout < '".$timeout."''";
$result_timeout_set = mysql_query($query_timeout_set) OR DIE (mysql_error());
[/PHP]non so il perchè quando lo carico mi da questo errore:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''1212142592''' at line 1
-
< '".$timeout."''"
doppia chiusura apice....sorry!
-
ora va , però c'è un'altro problema appena mi connetto mi setta direttamente online = '0' senza aspettare 1 minuto
-
in che senso?
ti connetti, hai il cookie attivo e ti setta sempre a 0???
-
si , setta il timeout anche
-
time() +60
prova così!
-
uguale
-
mi raccomando......il timeout, dovrebbe essere il doppio del tempo di chiamata della pagina con ajax o iframe....
es:
ajax: timeout 1 minuto
php: timeou 2 min
-
ho provato qualsiasi variazione di tempo, appena mi connetto mi da direttamente il set a 0
-
fai l'echo di tutte le query, e postale
-
1
[PHP] UPDATE sessioni SET timeout= '1212147255' WHERE id='14'[/PHP]2
[PHP] UPDATE sessioni SET online= '0' WHERE timeout < '1212147043'[/PHP]
-
caspita......non avevo calcolato la variabile online.....
nella query prima, setta anche quella!!!
UPDATE sessioni SET timeout= '1212147255', online = '1' WHERE id='14'
-
no non centra quella perchè già sopra in unaltro script me la setta a ogni riaggiornamento
-
le query fanno il loro dovere, fagli fare delle select e fagli restituire il risultato prima durante e dopo