1. Utwórz w db/ pusty plik UsersOnline.bob 2. W core/common.php dodaj funkcje: function usersOnline(){ $sPlik='db/UsersOnline.bob'; $time=time(); $iOnline=$time-600; $ip=$_SERVER['REMOTE_ADDR']; $aCheckTime=@file($sPlik); while(list($line_num,$line)=@each($aCheckTime)){ $sCzas=explode('$',$line); if($sCzas[0]<=$iOnline){ $contents=file_get_contents($sPlik); $sPusty=null; $sZamien=str_replace($line,$sPusty,$contents); file_put_contents($sPlik,$sZamien,LOCK_EX); chmod($sPlik,0777); } } $aCheckIP=@file($sPlik); while(list($line_num,$line)=@each($aCheckIP)){ $aIP=explode('$',$line); if($aIP[1]==$ip){ $contents=file_get_contents($sPlik); $sPusty=null; $sZamien=str_replace($line,$sPusty,$contents); file_put_contents($sPlik,$sZamien,LOCK_EX); chmod($sPlik,0777); } } file_put_contents($sPlik,$time.'$'.$ip.'$'."\n", FILE_APPEND | LOCK_EX); $Zawartosc=file($sPlik); $iUserOnline=count($Zawartosc); return $iUserOnline; } function usersOnlineAdmin(){ $sPlik='db/UsersOnline.bob'; $sZawartosc=file($sPlik); $iUserOnline=count($sZawartosc); return $iUserOnline; } 3. W index.php NAD if(isset($aActions['f']... dodaj: $iUsersOnline=usersOnline(); 4. W admin.php NAD loginActions($p,.... dodaj: $iUsersOnlineAdmin=usersOnlineAdmin(); 5. W templates/container.tpl dodaj w odpowiednie dla wyglądu strony miejsce zmienną $iUsersOnline 6. Jeśli chcesz to oglądać też w panelu admina, wstaw w jakąś templatkę w templates/admin/xxx.tpl zmienną $iUsersOnlineAdmin
Punkt 1. nie jest konieczny, lecz jeśli nikt jeszcze nie wejdzie na stronę i tego pliku nie będzie, w panelu admina pojawi się meldunek o braku tego pliku. Liczba 600 w górnym przykładzie jest ilością sekund, przez jaką uznajemy jakiegoś usera, że jest online od momentu "dotknięcia" przez niego naszej strony.
Zasada działania: Plik UsersOnline.bob (jeśli nie jest pusty) ma strukturę: Czas$IP$ Bierzemy Czas i IP użytkownika. Przeszukujemy plik UsersOnline.bob po kryterium Czas - 600 sekund (czyli szukamy wpisów starszych niż 10 minut). Jeśli taki znajdujemy - kasacja tej linijki. To samo z IP, jeśli taki istnieje - kasacja tej linijki. Po czym wpisujemy świeży Czas i IP. To się dzieje tylko z poziomu strony gościa. Z panelu admina tylko odczytujemy ilość linijek (a co za tym idzie, userów online) z Pliku. Co oznacza, że login na stronie admina nie zwiększa liczby userów online.
Zabawę we wkładanie tych zmiennych w templatkach i ich "designowanie" zostawiam wam.
Bobo dzięki za przepis na licznik, jak możesz to napisz co mam jeszcze dodatkowo zrobić żeby był zintegrowany w plugin simplecounter, przykład pod linikiem: http://img821.imageshack.us/img821/4736/beztytuusgo.jpg