Jak zrobic licznik osób online (pliki txt)
Wolverine
Do przykladu bedą potrzebne funkcje ze wskazówki z artykułu Zestaw pomocnych funkcji do operacji na plikach tekstowych.
Gdy juz dodamy do pliku odpowiedni kod dopiszemy cos takiego:
<?
function AddMe() {
$line = $_SERVER['REMOTE_ADDR'] . '`' . time() . '`';
file_InsertLineOnTop('online.txt', $line);
}
function UsersOnline() {
return file_LinesCount('online.txt');
}
function AmI () {
$online = file ('online.txt');
for ($q = 0; $q < count($online); $q++) {
$current = explode('`', $online[$q]);
if ($current[0] == $_SERVER['REMOTE_ADDR']) {
file_UpdateLine('online.txt', $q, $current[0] . '`' . time() . '`');
return true;
}
}
return false;
}
if (filesize('online.txt') > 0) {
$online = file ('online.txt');
for ($q = 0; $q < count($online); $q++) {
$current = explode('`', $online[$q]);
if ((time() - $current[1]) > (60 * 5)) {
$fp = fopen ('online.txt', "w");
flock($fp, LOCK_EX);
for( $w = 0; $w < count($online); $w++ ) {
if ($q <> $w)
fwrite ($fp, $online[$w]);
}
flock($fp, LOCK_UN);
fclose($fp);
}
}
}
if (!AmI()) {
AddMe();
}
Użycie:
<?php
$count = count($online);
echo "Aktualnie jest $count uzytkownikow na stronie";
Na koniec tworzymy w katalogu ze skryptem plik o nazwie online.txt
i ustawiamy mu odpowiednie prawa. Potem możemy po prostu includowac skrypt na naszej stronie i w odpowiednim miejscu wyświetlić zmienną $count
.
Jedna funkcja wyrzucająca liczbę gości online...
<?php function online_users() { $myip = $_SERVER['REMOTE_ADDR']; $timeout = 300; # czas w sekundach po jakim usuwany jest wpis uzutkownika $filename = 'online.dat'; # nazwa pliku lub sciezka dostepu do niego $file = file($filename); $count = count($file); $add = true; $online = 0; $fopen = fopen($filename, "w"); flock($fopen, LOCK_EX); for($i=0; $i<$count; $i++) { $data = explode('|', chop($file[$i])); if($data[0]==$myip) { fputs($fopen, $myip.'|'.time()."\\r\\n"); $add = false; $online++; } else { if($data[1]>=(time()-$timeout)) { fputs($fopen, $data[0].'|'.$data[1]."\\r\\n"); $online++; } } } if($add) { fputs($fopen, $myip.'|'.time()."\\r\\n"); $online++; } flock($fopen, LOCK_UN); fclose($fopen); return $online; } ?>aha, moglem o tym pomyslec wczesniej i zrobic choc mala konfiguracje do tego:
w nawiasie jest liczba sekund, po jakiej uzytkownik jest usuwany
Bardzo dobra wskazowka :-) Gdyby bylo ocenianie, dalbym 6 ;-) Ulala! :D Wreszcie znalazlem ;] Juz pedze zamieszczam to na homepage ;]
Świetne wolverine(chociaz sie PHP nie interesuje[diabeł])