Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: licznik online
Forum PHP.pl > Forum > PHP
Apo
Witam
Napisałem sobie licznik online (1 w karierze tongue.gif)

kod:
  1. <?php
  2.  
  3. function online() {
  4. define('PLIK', 'dane.php');
  5. $online = 0;
  6. $czas = time();
  7. $zwloka = 300; /// 30*5 = 5 minut
  8.  
  9. include('./dane.php');
  10.  
  11. if(defined('WPISY'))
  12. {
  13. $tablica = unserialize(WPISY);
  14.  
  15. for($i=0;$i<count($tablica);$i++)
  16. {
  17. if($tablica[$i]['ip'] == $_SERVER['REMOTE_ADDR'])
  18. {
  19. unset($tablica[$i]);
  20. }
  21.  
  22. if($tablica[$i]['data'] < $czas-$zwloka)
  23. {
  24. unset($tablica[$i]);
  25. }
  26. $tablica[] = array('ip' => $_SERVER['REMOTE_ADDR'], 'data' => $czas);
  27. }
  28. $cnt = count($tablica);
  29.  
  30. $hand = fopen(PLIK, 'w');
  31. flock($hand, LOCK_EX);
  32. fwrite($hand, "<?php define('WPISY', '".serialize($tablica)."'); ?>");
  33. flock($hand, LOCK_UN);
  34. fclose($hand);
  35. return $cnt;
  36. }
  37. else
  38. {
  39. $tablica[] = array('ip' => $_SERVER['REMOTE_ADDR'], 'data' => $czas);
  40.  
  41. $hand = fopen(PLIK, 'w');
  42. flock($hand, LOCK_EX);
  43. fwrite($hand, "<?php define('WPISY', '".serialize($tablica)."'); ?>");
  44. flock($hand, LOCK_UN);
  45. fclose($hand);
  46. return 1;
  47. }
  48. }
  49.  
  50. echo online();
  51.  
  52. ?>


No ale jest problem. Bo skrypt cały czas zapisuje mi pustą tablice to pliku i wychodzi że jest 0 użytkowników online :/
vieri_pl
Przeanalizuj to:

plik useronline.php (includujesz go tam gdzie mają być pokazywani userzy online) :

  1. <?php
  2.  
  3. //Konfiguracja
  4.  
  5. include ("./config.php");
  6.  
  7. // Pliczek od którego wszystko zależy...
  8.  
  9. if (!$datei) $datei = dirname(__FILE__)."/$filename";
  10. $time = @time();
  11. $ip = $REMOTE_ADDR;
  12. $string = "$ip|$timen";
  13. $a = fopen("$filename", "a+");
  14. fputs($a, $string);
  15. fclose($a);
  16.  
  17. $timeout = time()-(60*$timer);
  18.  
  19. $all = "";
  20. $i = 0;
  21. $datei = file($filename);
  22. for ($num = 0; $num < count($datei); $num++) {
  23. $pieces = explode("|",$datei[$num]);
  24.  
  25. if ($pieces[1] > $timeout) {
  26. $all .= $pieces[0];
  27. $all .= ",";
  28. }
  29. $i++;
  30. }
  31.  
  32. $all = substr($all,0,strlen($all)-1);
  33. $arraypieces = explode(",",$all);
  34. $useronline = count(array_flip(array_flip($arraypieces)));
  35.  
  36. // pokazujey ilu ludzi online...
  37. echo $useronline;
  38.  
  39. // kasujemy :)
  40. $dell = "";
  41. for ($numm = 0; $numm < count($datei); $numm++) {
  42. $tiles = explode("|",$datei[$numm]);
  43. if ($tiles[1] > $timeout) {
  44. $dell .= "$tiles[0]|$tiles[1]";
  45. }
  46. }
  47.  
  48. if (!$datei) $datei = dirname(__FILE__)."/$filename";
  49. $time = @time();
  50. $ip = $REMOTE_ADDR;
  51. $string = "$dell";
  52. $a = fopen("$filename", "w+");
  53. fputs($a, $string);
  54. fclose($a);
  55.  
  56. ?>


no i plik z konfiguracją config.php:

  1. <?php
  2. // Po jakim czasie kasujemy informacje 
  3. // (w minutach)
  4. $timer = 100;
  5.  
  6. // Œcieżka do pliku gdzie będš...
  7. // ...zapisywane informacje o userach online
  8. $filename = "$DOCUMENT_ROOT/log.txt";
  9.  
  10. ?>


Twój kod jest dziwnie napisany... Myślę że tprzykłąd który ja Tobie pokazałem jest lepszy... biggrin.gif

Pozdro !
Apo
Ale mi chodzi o poprawienie mojego kodu. Nie wiem co tam takiego dziwnego. Najpierw plik jest includowany (zapis w bazie: <?php define('WPISY', 'TABLICA PO SERIALIZACJI');
no i potem jest unseriazlizacja ip i data.
isia
Do vieri_pl

Próbuje skorzystać z Twojego skryptu ale cały czas pokazuje mi 1 gościa ?
Co może być przyczyną?
phpion
Bo moze jako jedyna osoba jestes na stronie smile.gif ot takie moje przypuszczenie smile.gif
isia
Cytat(phpion.com @ 2006-05-05 16:43:17)
Bo moze jako jedyna osoba jestes na stronie smile.gif ot takie moje przypuszczenie smile.gif

muszę sprawdzić z koleżanką.

c.d.
OK ... na pliku txt trzeba ustawić uprawnienia 666 ...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.