Do przykladu bedą potrzebne funkcje ze wskazówki "Jak łatwo wykonać jakąś operace na pliku txt?". Gdy juz dodamy do pliku odpowiedni kod dopiszemy cos takiego:
<?
function AddMe() {
$line = $_SERVER['REMOTE_ADDR'] . '`' . time() . '`';
file_InsertLineOnTop('online.txt', $line);
}
function UsersOnline() {
$now = file_LinesCount('online.txt');
return $now;
}
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() == false) {
AddMe();
}
$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 mozemy po prostu includowac skrypt na naszej stronie i w odpowiednim miejscu wyswietlic zmienna $count.
Moze istnieje lepsza metoda, ale mnie niestety na taka nie stac
Świetne wolverine(chociaz sie PHP nie interesuje[diabeł])
Bardzo dobra wskazowka :-) Gdyby bylo ocenianie, dalbym 6 ;-) Ulala! :D Wreszcie znalazlem ;] Juz pedze zamieszczam to na homepage ;]
aha, moglem o tym pomyslec wczesniej i zrobic choc mala konfiguracje do tego:
w nawiasie jest liczba sekund, po jakiej uzytkownik jest usuwany
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;
}
?>