Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Status Online/Offline użytkownika
Bitkosa
post 10.02.2010, 19:49:31
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 21.10.2009

Ostrzeżenie: (0%)
-----


Jak zrobić taki skrypt, który będzie wyświetlał status Online/Offline użytkownika o danym ID. Proszę o pomoc.
Go to the top of the page
+Quote Post
lukaszgolder
post 10.02.2010, 19:57:52
Post #2





Grupa: Zarejestrowani
Postów: 141
Pomógł: 17
Dołączył: 2.04.2008
Skąd: z Zabrza

Ostrzeżenie: (0%)
-----


Możesz np stworzyć bazę danych z użytkownikami online, no i dodawać / aktualizować tam rekordy na bieżąco. Po aktualizacji zawsze usuwać wpisy o czasie < time() - 60 * 15 (powiedzmy 15 minut). No i sprawdzasz czy użytkownik znajduje się w tabeli.
Go to the top of the page
+Quote Post
Bitkosa
post 11.02.2010, 13:18:23
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 21.10.2009

Ostrzeżenie: (0%)
-----


Tak właśnie chciałem zrobić tylko gorzej z wykonaniem. tongue.gif
Go to the top of the page
+Quote Post
PawelC
post 11.02.2010, 13:22:59
Post #4





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Jeszcze lepiej mieć w tabeli z użytkownikami, kolumne online, i podczas logowania zrobić update tej kolumny na tak, jak się wyloguje to, zmienić na nie smile.gif A jak będziesz chciał pobrać wszystkich online, to bez problemu to zrobisz.  
Go to the top of the page
+Quote Post
ZuyPan
post 11.02.2010, 13:30:44
Post #5





Grupa: Zarejestrowani
Postów: 116
Pomógł: 4
Dołączył: 4.02.2010

Ostrzeżenie: (0%)
-----


@ExPlOiT
a co jeśli użytkownik wyłączy przeglądarkę bez wylogowania? pole się nie zmieni i nadal będzie widoczny jako zalogowany...


--------------------
Blog
Go to the top of the page
+Quote Post
PawelC
post 11.02.2010, 14:44:26
Post #6





Grupa: Zarejestrowani
Postów: 1 173
Pomógł: 121
Dołączył: 24.09.2007
Skąd: Toruń

Ostrzeżenie: (0%)
-----


Cytat(ZuyPan @ 11.02.2010, 13:30:44 ) *
@ExPlOiT
a co jeśli użytkownik wyłączy przeglądarkę bez wylogowania? pole się nie zmieni i nadal będzie widoczny jako zalogowany...
Np ustawiać czas zycia sesji

  1. ini_set ( 'session.gc_maxlifetime', 7200);



Go to the top of the page
+Quote Post
webdice
post 11.02.2010, 16:52:49
Post #7


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Po każdej akcji użytkownika powinno być aktualizowane pole z datą ostatniej aktywności. Teraz przykładowo dane aktualizowane są co 15 minut, jeśli czas jest ostatniej aktywności jest mniejszy od aktualnego czasu o co najmniej 15 minut, możesz uznać takiego użytkownika za wylogowanego. Oczywiście po kliknięciu w przycisk wyloguj możesz oznaczyć użytkownika jako wylogowanego.
Go to the top of the page
+Quote Post
Bitkosa
post 18.02.2010, 17:40:11
Post #8





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 21.10.2009

Ostrzeżenie: (0%)
-----


A mógłby ktoś pomóc przy skrypcie?questionmark.gif


--------------------
CYKLINOWANIE PODŁÓG
Go to the top of the page
+Quote Post
webdice
post 18.02.2010, 19:20:39
Post #9


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Tak
Go to the top of the page
+Quote Post
Bitkosa
post 20.02.2010, 09:44:52
Post #10





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 21.10.2009

Ostrzeżenie: (0%)
-----


Mam takie coś ale nie wiem czy będzie dobrze
  1. if($login_check > 0){
  2. mysql_query("UPDATE ava_users SET status='online' WHERE id='".$id."'");
  3. }
  4.  
  5. else if ($_GET[action] == logout) {
  6. mysql_query("UPDATE ava_users SET status='offline' WHERE id='".$id."'");
  7. }


--------------------
CYKLINOWANIE PODŁÓG
Go to the top of the page
+Quote Post
Rysh
post 20.02.2010, 11:35:52
Post #11





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

Ostrzeżenie: (0%)
-----


Ja bym to zrobił tak.
W mysql kolumna DATATIME.
I raz na 5 minut aktualizował profil uzytkownika.

  1. <?php
  2. if ($_SESSION['zalogowany'] == true) {
  3. if (time() > (time() - 5*60)) {
  4. mysql_query("UPDATE `player` SET `data`=NOW() WHERE `id`='". $_SESSION['id'] ."'");
  5. }
  6. //reszta strony
  7. }
  8. ?>


A na koniec sobie sprawdzasz czy player jest online jeśli 1-online jeśli 0-offline:
  1. $online = mysql_num_rows(mysql_query("SELECT `id` FROM `player` WHERE `id`='$id_playera' AND data BETWEEN DATE_SUB( NOW( ) , INTERVAL 15 MINUTE ) AND NOW()"));


--------------------
Go to the top of the page
+Quote Post
Bitkosa
post 20.02.2010, 16:16:41
Post #12





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 21.10.2009

Ostrzeżenie: (0%)
-----


Wszystko ładnie ale aktualizuje mi tylko użytkowników online natomiast gdy użytkownik się wyloguje status pozostaje na online mad.gif


--------------------
CYKLINOWANIE PODŁÓG
Go to the top of the page
+Quote Post
Rysh
post 20.02.2010, 16:25:09
Post #13





Grupa: Zarejestrowani
Postów: 821
Pomógł: 111
Dołączył: 11.09.2006
Skąd: Biała Podlaska

Ostrzeżenie: (0%)
-----


Możesz dodać przy wylogowywaniu datatime NOW()-3 minuty, wtedy zostanie uznany za offline odrazu po wylogowaniu. Proste.

EDIT:
Źle napisałem dwa posty wyżej.
  1. <?php
  2. if ($_SESSION['zalogowany'] == true) {
  3. if ($_SESSION['czas'] < (time() - 60)) {
  4. $_SESSION['czas'] = time();
  5. mysql_query("UPDATE `player` SET `data`=NOW() WHERE `id`='". $_SESSION['id'] ."'");
  6. }
  7. //reszta strony
  8. }
  9. ?>


Ten post edytował Rysh 20.02.2010, 16:31:51


--------------------
Go to the top of the page
+Quote Post
Bitkosa
post 25.02.2010, 18:24:17
Post #14





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 21.10.2009

Ostrzeżenie: (0%)
-----


Dzięki za pomoc
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2024 - 10:17