Witam ! Chciałbym się dowiedzieć jak zrobić takie coś że przy linku do czatu np. w nawiasie jest pokazana ilość ludzi siedzących na czasie. Przykład ? http://www.komforum.net
Możesz wykorzystać poniższy skrypt do zliczania ilości osób online…
(wymaga obsługi mysql)
Tylko jak mam go teraz “zainstalować” ?? Lazikar może wie?
Hmm… bez urazy …ale głupie pytanie
No ja sądze, że lazikar jest inteligentnym i domyślnym człowikiem
…takim, który z pewnością nie przegapił by w powyższym pliku fragmentu:
…i w czym problem?
Tu masz kilka liczników, niektóre są do on-line : http://pliki.webhelp.pl/index.php?actio … =php&id=10
Używam coś takiego :
<?php
/**
* Plik zawiera kod licznika osób online
* @author Łukasz Janicki
* @copyright copyLeft
* @link http://strefaphp.net
* @version 1.0
*/
/**
* Stała zawiera nazwę pliku, w którym znajdują się dane o gościach online.
*/
define('FILE_NAME','on.line.php');
/**
* Zwraca liczbę sekund, które odpowiadają w czasie liczbie minut podanej w
* argumencie w funkcji.
*
* @param integer $minutes
* @return integer
*/
function gsf_minutes($minutes)
{
return 60 * $minutes;
} #end function gsf_minutes()
/**
* Zwraca liczbę sekund, które odpowiadają w czasie liczbie godzin podanej w
* argumencie w funkcji.
*
* @param integer $hours
* @return integer
*/
function gsf_hours($hours)
{
return 3600 * $hours;
} #end function gsf_hours()
/**
* Zwraca liczbę sekund, które odpowiadają w czasie liczbie dni podanej w
* argumencie w funkcji.
*
* @param integer $days
* @return integer
*/
function gsf_days($days)
{
return 86400 * $days;
} #end function gsf_days()
/**
* Zwraca liczbę osób online. Liczba ta musi być większa od 0 gdyż ktoś musi
* przeglądać stronę skoro skrypt jest wykonywany ;]
*
* @param void
* @return integer
*/
function visitors()
{
global $online2;
$online = count($online2);
if($online == 0)
return 1;
else
return $online;
} #end function visitors()
if(file_exists(FILE_NAME)) #sprawdzamy czy plik istnieje
{
/**
zapisujemy wszystkie linie pliku jako osobne elementy w tablicy $online
*/
$online = file(FILE_NAME);
foreach($online as $on) # każdy element tablicy...
{
$part = explode("\t",$on); # dzielimy na nową tablicę
/**
tworzymy nową tablicę typu: [IP_GOSCIA] = DATA_PRZELADOWANIA
*/
$online2[rtrim($part[0])] = $part[1];
}
/**
usuwamy z tablicy element o IP takim jak IP odwiedzającego
*/
unset($online2[$_SERVER['REMOTE_ADDR']]);
/**
tworzymy nowy element w tablicy o IP takim jak IP odwiedzajacego
*/
$online2[$_SERVER['REMOTE_ADDR']] = time();
$time = time(); #zapisujemy aktualny czas, by nie wywoływać funkcji time(), w pętli
foreach(array_keys($online2) as $on) # dla każdego klucza z tablicy
{
/**
sprawdzamy czy element o danym kluczu, ma czas przeładowania strony mniejszy
niż (aktualny czas - przedział czasu ludzi online)
* jeśli tak usuwamy element, jeśli chcemy zamiast przedziału w minutach, mieć
przedział w godzinach lub dniach zmieniamy nazwę funckji na gfs_hours lub
gfs_days.
* jeśli nie, dopisujemy do zmniennej wpis typu: [ADRESS_IP] \t
[DATA_PRZELADOWANIA] \n - gdzie \n to znak nowej lini, a \t inny separator
*/
if($online2[$on] < ($time - gsf_minutes('5')))
unset($online2[$on]);
else
$file_ .= "$on \t $online2[$on] \n";
}
}
/**
jeśli plik z goścmi onlinie nie istnieje, tworzymy zmienną z wpis typu:
[ADRESS_IP] \t [DATA_PRZELADOWANIA] \n - gdzie \n to znak nowej lini, a \t
biały znak
*/
else
$file_ = $_SERVER['REMOTE_ADDR']."\t".time()."\n";
echo 'Osób online: '.visitors(); # wyświetlamy liczbę osób online
/**
tworzymy nowy plik do zapisu,jeśli plik istnieje jego poprzednia zawartość
zostaje skasowana
*/
$file = fopen(FILE_NAME,'w');
flock($file, LOCK_EX); # blokujemy plik do odczytu
fwrite($file,$file_); # zapisujemy dane o gościach online(ze zmniennej $file_) do pliku
flock($file, LOCK_UN); # odblokowywujemy plik
fclose($file); # zamykamy plik
?>
ps. plikowi on.line.php nadaj chmod 666