Oppure

Loading
24/03/09 19:57
matteoiamma
Ciao a tutti ragazzi,
è abbastanza complesso quello che sto per chiedere.

Sto sviluppando un cms e nel sistema di registrazione e gestione utenti utilizzo le sessioni($_SESSION['user']=blabla),
funzione session_start(); all'inizio e session_destroy(); nella pagina di logout.

Ho un problemino banale ma che devo risolvere.

Nella tabella degli utenti ho fatto un campo "Status" che al momento del login viene settato su "Online",
il problema è il seguente,
il campo status viene settato poi su offline solo quando l'utente clicca su Logout,
ma non quando ad esempio la sessione termina automaticamente

Come faccio a controllare il momento in cui termina la sessione???

Inoltre ho riscontrato altri strani problemi,
ad esempio ho notato una cosa molto strana,
quando termina la sessione anzichè sloggarsi accedo come un altro utente!!

Come posso risolvere entrambe le questioni???

Voglio specificare che utilizzo
Questo codice:
ini_set('session.gc_maxlifetime','3600000');


Per stabilare la durata delle sessioni.In attesa di risposta.
Matteo.
Ultima modifica effettuata da matteoiamma 24/03/09 19:57
aaa
03/04/09 17:40
pierotofy
Per fare il conteggio degli utenti online io userei un approccio diverso... intanto non c'è modo di sapere quando un utente si allontana dal sito in maniera perfetta (si può mettere una chiamata ajax sull'evento onclose, ma questo dovrebbe essere fatto su ogni pagina e caricherebbe eccessivamente il server, inoltre non è affidabile, quindi da scartare come ipotesi), l'unica maniera è fare una stima. Ad esempio quando un utente entra nel sito lo registro in un apposta tabella "utenti_online" in cui metto l'ip e l'ora in cui ho registrato l'accesso. Ovviamente se un IP esiste già modifico l'ora in modo che rispecchi l'ultima pagina caricata. Allo stesso tempo nello stesso codice che fa queste operazioni eseguo una query che cancelli tutti i record nella tabella la quale differenza tra ora attuale e data registrata è superiore ai 3 minuti (e qui puoi decidere tu in base al contenuto del tuo sito, se è ricco di articoli puoi elevarlo anche a 5-7 minuti per fare la stima più accurata). Dopodichè conto quanti records ci sono nella tabella... e voilà. Quello è il numero degli utenti online (stimati).
Il mio blog: piero.dev
08/04/09 15:05
matteoiamma
Per quanto riguarda le sessioni ho risolto grazie per i consigli!


:k:


ecco come:



function session(){
global $prefix;
if ($_SESSION['status'] == "is_login"){
$username=$_SESSION['username'];
$sel_session = mysql_query("SELECT * FROM ".$prefix."_sessions WHERE username = '$username_session'");

while($sinfo=mysql_fetch_array($sel_session)){
$lastpage_visit=$sinfo['lastpage'];
}

$time_now = date("H:i:s");

if ($last_page_visit == $time_now){

} else {
mysql_query("UPDATE ".$prefix."_sessions SET lastpage = '$time_now'");
}

$time_total = $time_now - $lastpage_visit;

if ($time_total > mktime(0, 1, 0)) {

mysql_query("UPDATE ".$prefix."_users SET status = 'offline' WHERE username = '$username_session'");

session_destroy();
}

}
}
aaa