Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Licznik online
Ember
post
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 13.04.2006

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


Witam. Wiem, że było już tysiące takich tematów, jednak nifgdzie nie znalazłem tego co potrzebuję. Jeżeli gdzieś taki był to sorry, usńcie temat.
Otóż napisałem skrypt na logowanie oparty na sesjach. I chciałbym teraz, abty wyświetlało mi ilość niezalogowanych użytkowników przebywających na stronie, oraz loginy tych zalogowanych. Zupełnie nie wiem, jak się za to zabrać. Będe wdzięczzny, jeżeli jakoś mi pomożecie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
TomASS
post
Post #2





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Może zacznij od:
ype=topics&highlite=online' target='_blank
tego
oraz tego

Polecam skrytp: Creating a “Who’s Online” script with php
Go to the top of the page
+Quote Post
Ember
post
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 13.04.2006

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


Tak, tylko ze one wszystkie są na MySQL, a ja bym potrzebował coś bez bazy... o ile to mozliwe... żeby np. zapisywało użytkowników i ilość osób online do plików txt...
Go to the top of the page
+Quote Post
TomASS
post
Post #4





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Kolega Hwao kiedyś popełniłbył coś takiego. Jak przetesujesz to proszę Cię napisz czy (jak) działa.
Go to the top of the page
+Quote Post
Ember
post
Post #5





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 13.04.2006

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


Szczerze mówiąc to jestem dopiero początkujący w php, więc nie znam wszystkich komend, przez co nie mogę poprawić... Tak, wiem... manual, ale nei wszsytko kapuję...
Tak więc skrypt mógłby być oparty na czymś takim, że z wszsytkich otwartych sesji była by pobierana jakaś zmienna, i byłyby one wyświetlane... O ile to możliwe....
Go to the top of the page
+Quote Post
angerthor
post
Post #6





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 13.02.2006
Skąd: Warszawa

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


Sam niedawno robilem taki skrypt i musze powiedzec ze w bazie danych jest xrazy prosciej cos takiego zrobic (jezeli chcesz moge podac Ci moj skrypt). Jezeli chodzi o pliki tekstowe to powinno pomoc przy zrozumieniu ogolnych zasad "jak to ma wygladac" http://www.strefaphp.net/topic144.html .

Jezeli chcesz dodatkowo wyswietlac ilosc gosci i nicki zarejestrowanych, to zapisujesz do pliku txt taki trojczlonowy wpis : ip_usera | nick_usera (jezeli jest zalogowany, jezeli nie to np. gosc) | czas -> dzieki funkcji time ( ) . Pozniej po prostu rozbijasz to explode, i liczysz wpisy gdzie nick_usera=gosc, a jezeli nick_usera!=gosc to wyswietlasz wartosc.

Pozdrawiam !
Go to the top of the page
+Quote Post
Ember
post
Post #7





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 13.04.2006

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


No więc zaczołem to robić tak, jak mi radziłeś angerthor, ale niestety zapisuje mi nawet, gdy już jestem zapisany... Oto kod:
  1. <?php
  2. session_start("ember");
  3. $plik = fopen('goscie.txt', 'r+');
  4. $dlugosc = filesize("goscie.txt");
  5. fread($plik, $dlugosc);
  6. $ip = $_SERVER['REMOTE_ADDR'];
  7. if (isset($online['$ip']))
  8.  {
  9. echo 'asdasd';
  10.  }
  11. else
  12.  {
  13. $czas = time() + (60 * 5);
  14. if (isset($_SESSION['status']))
  15.  {
  16. $gosc2 = $_SESSION['login'];
  17. $gosc = "\$online['$ip'] = $czas\n
  18. \$gosc2['$ip'] = $gosc2\n\n";
  19.  }
  20. else
  21.  {
  22. $gosc2 = "niezalogowany";
  23. $gosc = "\$online['$ip'] = $czas\n
  24. \$gosc2['$ip'] = $gosc2\n\n";
  25.  }
  26. fwrite($plik, $gosc);
  27.  }
  28. fclose($plik);
  29. ?>

I niestety zawsze mi dopisuje, niezależenie od tego, czy już jestem dodany czy nie. Jakieś propozycje?
Go to the top of the page
+Quote Post
angerthor
post
Post #8





Grupa: Zarejestrowani
Postów: 73
Pomógł: 0
Dołączył: 13.02.2006
Skąd: Warszawa

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


Po pierwsze dodawaj jakieś chociaż drobne komentarze do skryptu bo tak jest on bardzo nieczytelny.

Spójrz na mój stary skrypt dotyczący tego samego (ten skrypt "na początku" nawet jest dobry, tylko psuje sie przy wiekszej ilosc userow on-line, przez to, ze ma jakis blad przy zapisywaniu do pliku; dlatego nie chcialo mi sie juz go poprawiac i przerzucilem sie na sql, ) , ale mysle, ze zasada jak to ma wygladac jest jasno przedstawiona

  1. <?php
  2.  
  3. $nazwaPliku="katalog/log.txt";
  4. $minutnik=5; // Ilosc minut, przez ktore user bedzie wpisany
  5. $minutnik=$minutnik*60;
  6. $ip=$_SERVER['REMOTE_ADDR'];  // Ip usera
  7. $czas=time();
  8.  
  9. $numerWpisu=0;
  10.  
  11. // Badanie czy uzytkownik jest zalogowany czy nie
  12. if(isset($_SESSION['user'])) {
  13. $nick=$_SESSION['user'];
  14. }
  15. else $nick="gosc";
  16.  
  17.  
  18.  
  19.  
  20. $plik=file("$nazwaPliku");
  21.  
  22. $liczbaWpisow=count($plik);
  23.  
  24. // Jeżeli wpisów jest 0 to odrazu dodaje usera
  25.  if ($liczbaWpisow==0) { $wpis=$ip.":||:".$nick.":||:".$czas; }
  26.  
  27. // Jeżeli jednak plik log.txt nie jest pusty
  28.  else {
  29.  #sprawdzam czy w pliku jest juz user o takim ip
  30. for ($i=0;$i<$liczbaWpisow;$i++)
  31. {
  32. $tabela=explode(":||:",$plik[$i]);
  33.  $czasWejscia=$tabela[2];
  34.  $numerWpisu++;
  35. if ($ip==$tabela[0]) {
  36. $wpis=$tabela[0].":||:".$nick.":||:".$czas;
  37.  $poziom="jest";
  38. break;}
  39. }
  40. if ($poziom!=='jest') { $wpis=$ip.":||:".$nick.":||:".$czas; }
  41.  
  42.  
  43.  
  44.  #sprawdzam aktualnosc wszystkich spisow
  45. if ($poziom!=='jest') {
  46.  
  47.  for ($i=0;$i<$liczbaWpisow;$i++)
  48. {
  49.  $tabela=explode(":||:",$plik[$i]);
  50.  $plik[$i]=trim($plik[$i]);
  51.  $czasWejscia=$tabela[2];
  52. if ($czas-$czasWejscia < $minutnik ) {
  53. $wpisy[$i]=$tabela[0].":||:".$tabela[1].":||:".$tabela[2];
  54. $wpis = $wpis."\n".$wpisy[$i];}
  55. }
  56. }
  57.  
  58. elseif ($poziom=='jest') {
  59. for ($i=0;$i<$liczbaWpisow;$i++)
  60. {
  61.  $tabela=explode(":||:",$plik[$i]);
  62.  $plik[$i]=trim($plik[$i]);
  63.  $czasWejscia=$tabela[2];
  64. if ($czas-$czasWejscia < $minutnik AND $numerWpisu!==$i ) {
  65. $wpisy[$i]=$tabela[0].":||:".$tabela[1].":||:".$tabela[2];
  66.  $wpis = $wpis."\n".$wpisy[$i];}
  67. }
  68. }
  69.  
  70.  
  71. }
  72.  
  73.  
  74. $otworz=fopen("$nazwaPliku","r+");
  75. flock($otworz,2);
  76. fwrite($otworz,$wpis);
  77. flock($otworz, 3);
  78. fclose($otworz);
  79. ?>
Go to the top of the page
+Quote Post
Ember
post
Post #9





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 13.04.2006

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


Wielkie dzięki angerthor. Jeżeli pozwolisz to troche poprzerabiam skrypt i umieszce u siebie;d
EDIT
Dobra, poprzerabiałem i wszystko jest jak trzeba. Wielkie dzięki, p0zDr0

Ten post edytował Ember 15.04.2006, 16:34:07
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 8.10.2025 - 19:09