Jesteś tutaj: webmade.org >> porady >> php + mysql
autor: Andrzej Kretowicz, ostatnia modyfikacja: 2007-02-23
licznik
licznik on-line
skrypt PHP
PHP 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ż:
blog
porady
artykuły
recenzje
wiadomości
© 2004-2008 copyright by webmade.org