Ciao a tutti, io ho creato un sito dedicato alla palestra di karate che frenquento, ed è ospite su uno dei più spazi che ho su altervista.
Ho un problemino però dovuto alla lista presenti.
La lista utenti ha un'icona che cambia a seconda se l'utente è presente o no.
Il problema di fatto è che quando l'utente chiude il sito malamente, l'utente
appare sempre loggato al sito.
Perchè? Perchè al momento del login in tabella utenti metto in un campo la data di ingresso dell'user. Per cui uscendo male quel campo resta pieno.
Come posso risolvere questo problema?? Mi venivano in mente le session, ma non so usarle granchè, qualcuno può darmi un'aiuto o una spiegazione su come risolvere il problema?
Potresti fare così...adesso ti spiego la struttura visto che sai la parte tecnica:
1.L'utente fa il log-in (o entra nella pagina) => Inserisci nel database il tempo di adesso più un'ora (time()+3600) per far si che se l'utente non fa niente per piu di un'ora allora verrà considerato come assente.
2.Ogni volta che l'utente in questione fa qualcosa, fai scrivere nel db ancora questo time più un'ora.(e questa volta il time sarà diverso da quello di log-in perchè time() ti dice i secondi di QUESTO MOMENTO)
3.In tutte le pagine potresti includere una pagina di controllo...Questa pagina sarà così: se il tempo nel db è minore a quello reale allora cancella l'utente dalla lista dei collegati.
in pratica, se pippo si logga e poi chiude male nel db resta il time + 3600
quando mi loggo io, la mia pagina controlla i log di tutti e quelli "inattivi" li toglie dall'elenco?
mi sorge un dubbio riguardo la TIME()
io non la uso, uso "$data = date('d/m/Y H:i:s');"
in cosa differisce la time da date??
Ultima modifica di araim : 30-04-2006 alle ore 15.05.54
Differisce in questo:
date('d/m/y H:i:s') sono i dati dell'orologio.
time() sono i secondi totali a partire da una certa data che non ricordo (anni 80?..) e quindi quelli sono fissi, mentre invece scrivere date("s") per vedere i secondi ti mostrerà i secondi dell'orologio...
time() e date() hanno due funzioni simili ma estremamente diverse!
Comunque ciò che hai detto è giusto. Quello che ti volevo far capire !
EDIT: dimenticavo...in un qualche modo puoi usare anche mktime() però io non so capace! :=D
Ultima modifica di Leo91 : 30-04-2006 alle ore 18.54.41
ho risolto la questione usando anche il DATE()
però è brutto dover attendere un'ora prima che chiuda l'utente.
ho provato ad usare date('s'); e a dargli 5 minuti ogni volta.
Ho messo un frame interno alla pagina utente che ogni 20 secondi
si aggiorna. Questo frame si deve aggiornare per controllare i bann utente e la posta.
Per cui ora ogni venti secondi aggiorno il db con secondi attuali + 300sec
e poi nell'elenco contro secondi attuali < secondi dell'utente :P