Jesteś tutaj: webmade.org >> porady >> php + mysql
autor: Andrzej Kretowicz, ostatnia modyfikacja: 2007-02-23
Chyba każdy webmaster zauważył, że na stronach coraz częściej pojawiają się liczniki gości aktualnie oglądających stronę - jest to ciekawy "bajer". Jeśli ktoś próbował ściągać gotowe skrypty, to pewnie zauważył, że one bardzo często nie działają, a niektóre podają losową liczbę - to raczej kiepskie rozwiązanie, a kiedyś pisałem w PHP stronę szkolną i postanowiłem napisać licznik gości on-line, skrypt wyszedł bardzo dobrze, bo to tylko jedna krótka funkcja, która zwraca wynik. Oto kod wraz z komentarzami:
<?php if (!session_is_registered('count')) { session_start(); session_register('count'); $count = 0; } else { $count++; } /* Rozpocząłem sesje i zarejestrowałem zmienną $count. */ ?> <?php $conn = mysql_connect("localhost", "user", "password"); mysql_select_db("baza", $conn); // to było połączenie się z MySQL function stats($mojeip)// argumentem jest tutaj IP, ale możesz zmienić na identyfikator sesji { global $conn; global $count; // globalizacja zmiennych, aby ich wartość była dostępna w funkcji $teraz = time(); // pobiera czas if ($count == 0) // sprawdza, czy ma wstawić nowy rekord do tabeli { $res = mysql_query("INSERT INTO temp VALUES ('$mojeip', '$teraz')", $conn); // wstawienie nowego rekordu } $res = mysql_query("UPDATE `temp` SET `czas` = '".$teraz."' WHERE `ip` = '".$mojeip."' LIMIT 1'", $conn); // a teraz uaktualnienie naszego rekordu $res = mysql_query("SELECT * FROM temp", $conn); // wybieramy wszystko z tabeli temp for ($i=0; $myrow=mysql_fetch_assoc($res); $i++) { $ip = $myrow['ip']; $czass= $myrow['czas']; if ($czass < ($teraz - 600)) { $pyt=mysql_query("DELETE from temp where ip='$ip'", $conn); $i--; } /* W pętli sprawdziliśmy, czy czasy użytkowników są mniejsze niż 10 min (600 sek), jeśli nie to kasujemy go z tabeli */ } if ($i==0) { $res = mysql_query("INSERT INTO temp VALUES ('$mojeip', '$teraz')", $conn); // jeśli ktoś nas skasował, to musimy się dodać, bo liczba userów nie może być równa 0! $i++; } return $i; // zwracamy wartość } ?>
Aby wywołać tą funkcje wstaw na stronie ten kod:
<?php echo(stats($REMOTE_ADDR)); ?>
lub:
<?php echo(stats(SID)); ?>
W obydwu przypadkach powinno działać. To już koniec, tego skryptu możecie używać do woli oczywiście
Andrzej Kretowicz
szukaj: licznik licznik on-line skrypt PHP PHP
Osoby czytające tę publikację przeglądały również:
© 2004-2008 copyright by webmade.org