![reklama](http://www.programosy.pl/images/reklama_forum1.png)
Dzisiaj chciałbym omówić skrypt, który ma za zadanie wyświetlać aktualnie z ostatnich 60 sekund ilość osób oglądających stronę.
Pierwszym krokiem jest utworzenie tabeli o kolumnach ip oraz czas .
Przykładowe zapytanie :
- Kod: Zaznacz wszystko
CREATE TABLE "online"(
"czas" int(11),
"ip" varchar(32)
);
Tak więc na początku łączymy się z bazą danych poprzez funkcję mysql_connect() wpisując:
- adres bazy danych, np. sql.onet.pl ,
- użytkownika,
- oraz hasło .
Później wybieramy, z której bazy chcemy korzystać, funkcją mysql_select_db().
Ustawiamy limit ( w jakim odstępie czasu chcemy sprawdzać, czy użytkownik nadal przebywa na stronie ) oraz zapisujemy ip użytkownika
- Kod: Zaznacz wszystko
$ip_aktualny = $_SERVER['REMOTE_ADDR'];
$czas_aktualny = time();
$czas_sprawdzany = time()-60;
Następnie tworzymy zapytanie, które kontroluje, by jedna osoba nie była naliczana kilka razy. Wygląda ono tak : ( jeżeli dana osoba jest pierwszy raz na stronie, tworzy nowy rekord, jeżeli była już w ciągu ustalonego limitu nie dodaje nic. Limit czasu mija i tworzy dalej nowy rekord)
- Kod: Zaznacz wszystko
$zapytanie = "SELECT * FROM online WHERE czas BETWEEN $czas_sprawdzany AND $czas_aktualny AND ip LIKE '$ip_aktualny'";
$query = mysql_query($zapytanie);
$czy = mysql_num_rows($query);
if($czy <= 0)
{
$zapytanie1 = "INSERT INTO online SET czas='$czas_aktualny', ip='$ip_aktualny'";
$query1 = mysql_query($zapytanie1);
}
Ta opisana część zapisuje, ewentualnie uaktualnia statystyki.
Teraz wyświetlamy zapytaniem ile osób był z ostatnich 60 sekund
- Kod: Zaznacz wszystko
$zapytanie2 = "SELECT * FROM online WHERE czas > $czas_sprawdzany AND czas < $czas_aktualny";
$query2 = mysql_query($zapytanie2);
$ile = mysql_num_rows($query2);
Zmienna $ile wyświetlany naszą liczbę aktualnie podłączonych* użytkowników do strony, na której jest skrypt.
Oczywiście można jeszcze udoskonalać skrypt dowolnie, według własnych wymagań.
* - skrypt pokazuje ilość osób, które w ciągu ostatnich 60 sekund wykonały jakiś ruch na stronie. Takim sposobem najczęściej sprawdza się ile osób było lub jest na stronie w ciągu 60 sekund.
A całość, która zapisuje i wyświetla ( najlepiej by skrypt był zaincludowany do każdej podstrony ) dane :
- Kod: Zaznacz wszystko
<?php
$polaczenie = mysql_connect('adres_bazy_dancyh', 'uzytkownik', 'haslo');
$db = mysql_select_db('baza_danych');
$ip_aktualny = $_SERVER['REMOTE_ADDR'];
$czas_aktualny = time();
$czas_sprawdzany = time()-60;
$zapytanie = "SELECT * FROM online WHERE czas BETWEEN $czas_sprawdzany AND $czas_aktualny AND ip LIKE '$ip_aktualny'";
$query = mysql_query($zapytanie);
$czy = mysql_num_rows($query);
if($czy <= 0)
{
$zapytanie1 = "INSERT INTO online SET czas='$czas_aktualny', ip='$ip_aktualny'";
$query1 = mysql_query($zapytanie1);
}
$zapytanie2 = "SELECT * FROM online WHERE czas > $czas_sprawdzany AND czas < $czas_aktualny";
$query2 = mysql_query($zapytanie2);
$ile = mysql_num_rows($query2);
echo $ile;
?>
Pochwały przyznane za posta: 6