Er bruger aktiv mindre end 30 min gammel

Tags:    php mysql date function

EDITFjern gammel i titlen :P

Hej alle i kloge udviklere :)

Jeg har et login script og hver gang man går til en ny side opdatere ens værdi i databasen til det tidspunktet er da brugeren indlæste siden. Jeg laver så en side der hedder online brugere. Der skriver den hvem der er online via en værdi i databasen som bliver sat til "online" når man logger ind.

Hvis den tiden nu og tiden som en bruger sidst var aktiv er over 30 minutters forskel skal den skrive "Ikke aktiv" og er den under skal den skrive aktiv.

Har prøvet med en kode som jeg faktisk ikke selv ved hvordan virker :S Det er skud i tågen

Fold kodeboks ind/udPHP kode 


Den udskriver ved alle brugere "Aktiv" (Satte en af mine offline brugeres tid til 23:00 og status online, så det er ikke problemet :P



Indlæg senest redigeret d. 13.07.2011 22:01 af Bruger #16016
6 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Konverter dit timestamp i databasen til unix time.

Du kan bruge noget der ligner følgende:
Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 14.07.2011 10:23 af Bruger #10216
unix time? Har sat den til timestamp on update curret_timestamp.

Har så koden:
Fold kodeboks ind/udPHP kode 


Den siger jeg er inaktiv?
I databasen står der ved "aktiv" 2011-07-14 06:02:55. Passer ikke eftersom klokken er 13:03?




Indlæg senest redigeret d. 14.07.2011 13:03 af Bruger #16016
Erhm... 06:02:55 - 13:03:00 < 30min? Korrekt?

Så er du vel inaktiv?


Men opdaterer du så dit timestamp i databasen? Næh... ;) ON UPDATE sker kun når du skriver til databasen og derved opdaterer data i den pågældende række.
Intet sker automatisk :)



Altså.

Klokken var 13:03 på mit computer ur.

I databasen stod der så at den var 06:02:55.

Det er mere end 30 minutter forskel, men tiden passer overhovedet ikke?



Opdaterer du ikke tidspunktet i databasen?
Gemmer du det forkerte tidspunkt?
Er serverens dato og klokke sat rigtigt?
Er locale indstillinger sat rigtigt for php og/eller apache.
Hvad giver en date('d-m-Y H:i:s') som output?



Nu har jeg ændret i den kode du sendte og det virker. Det færdige resultat er:

Fold kodeboks ind/udPHP kode 


Opdater aktiv tids koden ser således ud:

Fold kodeboks ind/udPHP kode 


Tak for hjælpen :)





Indlæg senest redigeret d. 17.07.2011 19:30 af Bruger #16016
t