Jak wykryć i pokazać liczbę osób oglądających aktualnie stronę WWW, PHP Skrypty


[PHP] Jak wykryć i pokazać liczbę osób oglądających aktualnie stronę WWW?

0x01 graphic

Chcesz pokazać na swojej stronie liczbę osób, które aktualnie przeglądają serwis WWW.

0x01 graphic

Komponent, pokazujący ile osób przegląda aktualnie Twoje strony WWW, przydaje się aby sprawdzić czy w określonym czasie liczba użytkowników przebywających online jest duża. Za pomocą prostego skryptu możesz poinformować innych użytkowników, jak kształtuje się odwiedzalność serwisu w określonych godzinach.

Ponieważ liczbę osób przebywających w serwisie można szacować na wiele sposobów, musimy wybrać taki, który będzie pokazywał wynik najbliższy prawdzie. Proponuję ustalić liczbę odwiedzających na podstawie ich adresów IP.

Możnaby wykorzystać również cookies, albo technikę mieszaną (cookies i IP), jednak komplikuje to nieco skrypt. W praktyce numer IP dosyć wiernie oddaje faktyczną (choć zawsze tylko przybliżoną) ilość odwiedzających aktualnie serwis i w zupełności wystarczy do naszych zastosowań. W przeciwieństwie do cookies numer IP zawsze jest dostępny, nawet jak użytkownik ma ciasteczka wyłączone.

Oto kod programu do zliczania i pokazywania liczby osób przebywających aktualnie na stronie:

<?

$minut=20;

$teraz=time()+60*$minut;

$bazaip = file("ip.txt");

$ile=count($bazaip);

$ip = $_SERVER["REMOTE_ADDR"];

for ($i=0;$i<$ile;$i++) {

$pol = explode("`",$bazaip[$i]);

if ($pol[2]<time()) {$bazaip[$i]="";}

if ($pol[1]==$ip) {

$bazaip[$i]="`$ip`$teraz`\n"; $jest=1;

}

}

if ($jest<>1) $bazaip[]="`$ip`$teraz`\n";

$f = fopen("ip.txt","w");flock($f,2);

for ($i=0;$i<$ile+1;$i++) {

if ($bazaip[$i]<>"") { fwrite($f, $bazaip[$i]); $ileip++;}

}

flock($f,3); fclose($f);

echo $ileip;

?>

Zliczanie numerów IP musi odbywać się w określonym czasie. Nie może on być ani zbyt krótki, ani zbyt długi. Zakładam, że średnio użytkownik przebywa w serwisie ok. 20 minut (zmienna $minut). Oznacza to, że jeżeli po 20 minutach użytkownik nie przeładuje strony, nie jest już zliczany jako będący online na naszej stronie. Wartość tą trzeba dobrać eksperymentalnie. Jeżeli ustawisz ją na godzinę, znacznie zawyżysz ilość odwiedzających ponieważ będziesz zliczać osoby, które nie są aktywne od 59 minut.

W pliku ip.txt będą przechowywane adresy IP użytkowników. Musi on mieć prawa do zapisywania dla każdego (chmod 666). Jeżeli skrypt ma być wykorzystany na wielu stronach, ścieżka do tego pliku musi być bezwzględna, np. /home/httpd/www/pliki/ip.txt

Pierwsza pętla for() odczytuje wszystkie numery IP z pliku, umieszcza je w tabeli $bazaip[] i sprawdza czy IP użytkownika (pobrane wcześniej ze zmiennej $_SERVER["REMOTE_ADDR"]) jest już w tabeli. Jeżeli jest, dla tego IP ustawiony zostaje czas powiększony o 20 minut, przez które użytkownik będzie brany pod uwagę przy zliczaniu IP.

Jeżeli jakieś IP przekroczyło limit minut zostaje skasowane z tabeli, a dokładniej - komórkę tabeli wypełnia pusta wartość. Jeżeli IP aktualnego użytkownika nie występuje w tabeli zostaje dodane zaraz za pętlą, po sprawdzeniu warunku $jest<<1.

Następnie plik z numerami IP otwierany jest do zapisu i umieszczane są w nim wszystkie numery IP, które nie przekroczyły założonego limitu czasu. Plik ma zakładaną blokadę zapisu funkcją flock(), aby kilka osób w tym samym czasie nie mogło do niego zapisywać.

Po dopisaniu aktywnych numerów IP ich liczba zostaje wypisana na ekran. W ten sposób można pokazać ile numerów IP (teoretycznych osób) było aktywnych na stronie przez ostatnie 20 minut.

Pamiętaj, że jedno IP nie musi oznaczać jednej osoby. Ten sam użytkownik modemu gdy połączy się dwa razy z numerem dostępowym, może za każdym razem otrzymać inny numer IP. Jeżeli w ciągu 20 minut coś go rozłączy i ponownie wejdzie na stronę, będzie odnotowany pod dwoma numerami IP. Z kolei niektóre firmy lub uczelnie mają jeden numer IP, którym posługuje się wiele osób...

Jak widzisz, nie można dokładnie określić liczby osób, jednak w praktyce okazuje się, że liczba IP prawie zawsze odpowiada liczbie osób na niewielkich witrynach. Bardziej zaawansowany skrypt mógłby dodatkowo wykorzystywać cookies, aby jeszcze dokładniej wyliczyć faktyczną liczbę użytkowników przebywających aktualnie na stronie, ale wciąż nie byłby to wynik w 100 proc. dokładny.



Wyszukiwarka

Podobne podstrony:
Jak sprawdzić czy w bazie danych istnieje aktualnie dodawana treść, PHP Skrypty
Jak stworzyć losowe porady wyświetlające się na stronie WWW, PHP Skrypty
Jak stworzyć prostą wyszukiwarkę dla własnych stron WWW, PHP Skrypty
Jak stworzyć indeks pierwszych liter dla wybranej kolumny z tabeli, PHP Skrypty
Jak pobrać i zapisać na dysk wskazane strony WWW, PHP Skrypty
jak pobrac zdalny plik na lokalny server raz dziennie, PHP Skrypty
Jak wypisać w tabeli zawartość pliku tekstowego z polami oddzielonymi separatorem, PHP Skrypty
Jak wysłać mailem w formacie HTML zawartość tabeli z bazy danych, PHP Skrypty
jak zmienic liczby na kod BCD dinary coded decimal, PHP Skrypty
Jak uzyskać IP lub domenę z jakiej łączy się użytkownik, PHP Skrypty
Jak sprawdzić typy i atrybuty ustawione dla każdej z kolumn tabeli, PHP Skrypty
Jak stworzyć koszyk zamówień do sklepu internetowego z wykorzystaniem cookies, PHP Skrypty
Jak stworzyć formularz do przesyłania informacji na podany email, PHP Skrypty
Jak wysłać e-mail korzystając z gniazd (socket) zamiast funkcji mail, PHP Skrypty
Jak stworzyć prostą wyszukiwarkę dla własnych stron WWW, PHP Skrypty
Jak pokazać i skąd wziąć imieniny przypadające na aktualny dzień, PHP Skrypty
Jak zapisywać do pliku numery IP osób odwiedzających stronę, PHP Skrypty
Jak pobrać i pokazać aktualne notowania średnich kursów walut z NBP, PHP Skrypty
Jak wyliczyć i pokazać datę godzinę powiększoną lub pomniejszoną o dowolną ilość dni godzin względem

więcej podobnych podstron