Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php], Sposób na to, aby były widoczne wszystkie osoby zalogowane w serwisie?
qrcze_pieczone
post 23.05.2007, 22:52:36
Post #1





Grupa: Zarejestrowani
Postów: 59
Pomógł: 2
Dołączył: 13.04.2007

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


Witam
Chciałbym uzyskać taki efekt jak to ma miejsce w przypadku tego forum czyli na dole pokazuje się kto edytuje dany post bądź kto jest w danej chwili na forum.

Możliwe że ten temat był już poruszany na forum, ale jakoś mi się nie udało trafić na niego.
Oczywiście za podpowiedzi bądź linki do stron gdzie ta tematyka była poruszana z góry dziękuję.
pozdrawiam
Go to the top of the page
+Quote Post
b_chmura
post 24.05.2007, 00:06:05
Post #2





Grupa: Zarejestrowani
Postów: 813
Pomógł: 34
Dołączył: 18.03.2007
Skąd: o stamtąd

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


zliczasz ile osób jest on-line i sprawdzasz czy któraś z nich nie jest użytkownikiem Twojego serwisu
Go to the top of the page
+Quote Post
qrcze_pieczone
post 24.05.2007, 00:40:29
Post #3





Grupa: Zarejestrowani
Postów: 59
Pomógł: 2
Dołączył: 13.04.2007

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


no ok ale jak sprawdzić ile osób jest on-line? na serwerze

jak będę to wiedział to cała reszta jest już pestką

Ja myślałem nad takim rozwiązaniem że w tabeli użytkownicy zrobię jedno pole które domyślnie będzie miało wartość 0 i w przypadku jak się ktoś będzie logował to będzie się pojawiała wartość 1 jak sie wyloguje to znowu będzie 0 ale pojawia się wtedy problem gdy ktoś nie kliknie na wyloguj tylko np wpisze w oknie przeglądarki inny adres

Wydaje mi się, że na pewno jest jakieś lepsze rozwiązanie.
Go to the top of the page
+Quote Post
Darti
post 24.05.2007, 03:15:24
Post #4





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


Zapisuj sobie w bazie informacje o sesji i czasie, kiedy była odświeżana i do kiedy jest ważna (np 5 minut ważności - taki bazodanowy expire time).
Na każdej podstronie wywołujesz funkcję, klasę, która odświeży (update'uje) wpis dla danej sesji na aktualny czas i +5 minut czas.
Inna funkcja sprawdza bieżący czas i robi zapytanie do bazy, które sesje (a właściwie ile ich jest) mają czas ostatniego działania mniejszy i czas ważności większą niż czas bieżący i na tej podstawie określasz ilu masz zalogowanych/odwiedzających w danym momencie użytkowników.

edit:
Trochę namieszałem...
Zapisz sobie 3 pola w bazie: nr sesji, czas aktualny dla tej sesji, czas +5 minut dla tej sesji
Zliczaj ilość sesji aktualnych.

Ten post edytował Darti 24.05.2007, 03:18:52


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
=57=
post 24.05.2007, 12:47:18
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 24.05.2007

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


ponizej taka przykladowa klasa sprawdzajaca kto jest online smile.gif kod tragicznie lopatologiczny i amatorski ale coz poradzic gdy nie jest sie pr0-coderem smile.gif mysle ze sposob dzialania (i myslenia winksmiley.jpg ) jest jasno opisany w komentarzach smile.gif

(nie wiem po co ID sesji w tym kodzie bo bez tego chyba tez dziala ;o zamotalem sie piszac te linijki.. wystarczy poswiecic 30sec nad tym i podopoisywac co trzeba winksmiley.jpg wiem ze skrypt dziala, tragicznie, ale dziala:)))

  1. <?php
  2. class Onliner{
  3. function whos_online(){
  4. bd::connect();
  5.  
  6. //zapisujemy sobie id sesji :)
  7. $sid = session_id();
  8. //a teraz sobie czas aktualny zapisujemy
  9. $czas = date('G:i:s',time());
  10. //obliczamy do kiedy user bedzie uwazany za ONLINE (obecny czas + 10min)
  11. $vTo = time() + 60*10;
  12. //vTo zamieniamy na jakis ladny zapis, zeby czlowiek byl w stanie rozczytac godzin
    e
  13. $validTo = date('G:i:s',$vTo);
  14. //sprawdza czy juz jest taki user online
  15. $q = 'SELECT * FROM TOnline WHERE who = "'.$_SESSION['player'].'"';
  16. $r = mysql_query($q);
  17. $row = mysql_fetch_row($r);
  18. //jesli nie jest to tworzy nowy wpis w SQL pod warunkiem ze ktos jest zalogowany
  19. if($row == NULL){
  20. if(isset($_SESSION['player'])){ //jesli jest zalogowany
  21. $q = 'INSERT INTO TOnline VALUES("'.$sid.'","'.$validTo.'","'.$_SESSION['player'].'")';
  22. }else{//jesli nie jest zalogowany
  23. //jesli jest juz wpis to przedluza termin zalogowania o ile ktos sie zalogowal
  24. if(isset($_SESSION['player'])){
  25. $q = 'UPDATE TOnline SET validTo = "'.$validTo.'" WHERE who = "'.$_SESSION['player'].'"';
  26. }
  27. //kasuje graczy ktorzy sa offline
  28. $q = 'DELETE FROM TOnline WHERE validTo < "'.$czas.'"';
  29. mysql_query($q) or die("sraka");
  30. //wypisuje graczy online
  31. $q = 'SELECT * FROM TOnline';
  32. $r = mysql_query($q);
  33.  
  34. echo'<br>gracze online:<br>';
  35. while($uO = mysql_fetch_array($r)){
  36. $i++;
  37. <a href="index.php?m=playerInfo&a=show&w='.$uO['who'].'">'.$uO['who'].'</a><br>
  38. ';
  39. }
  40. }
  41. }
  42. ?>


Ten post edytował =57= 24.05.2007, 12:50:06
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: 16.06.2025 - 23:29