Aby stworzyć prosty skrypt do śledzenia liczby aktualnie online użytkowników przeglądających stronę, można wykorzystać technologię JavaScript oraz backend w PHP. W tej instrukcji pokażę, jak to zrobić.
1. Tworzenie tabeli w bazie danych
Najpierw musisz stworzyć tabelę w bazie danych, aby przechowywać informacje o aktywnych użytkownikach. Oto przykładowe zapytanie SQL do stworzenia takiej tabeli:
CREATE TABLE online_users (
id INT AUTO_INCREMENT PRIMARY KEY,
session_id VARCHAR(255) NOT NULL,
last_activity DATETIME NOT NULL
);
2. Skrypt PHP
Następnie utwórz plik PHP (np. track_online_users.php), który będzie odpowiedzialny za aktualizację tabeli oraz zwracanie liczby aktualnie online użytkowników.
<?php
$host = 'localhost'; // adres serwera
$db = 'nazwa_bazy'; // nazwa bazy danych
$user = 'użytkownik'; // użytkownik bazy danych
$pass = 'hasło'; // hasło do bazy danych
// Połączenie z bazą danych
$conn = new mysqli($host, $user, $pass, $db);
// Sprawdzenie połączenia
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Ustawienie strefy czasowej
date_default_timezone_set('Europe/Warsaw');
// Sprawdzanie i aktualizacja sesji
$session_id = session_id();
$current_time = date('Y-m-d H:i:s');
// Usunięcie użytkowników, którzy są offline dłużej niż 5 minut
$expire_time = date('Y-m-d H:i:s', strtotime('-5 minutes'));
$conn->query("DELETE FROM online_users WHERE last_activity < '$expire_time'");
// Dodanie/aktualizacja aktywnego użytkownika
$conn->query("INSERT INTO online_users (session_id, last_activity) VALUES ('$session_id', '$current_time')
ON DUPLICATE KEY UPDATE last_activity = '$current_time'");
// Liczenie aktualnie online użytkowników
$result = $conn->query("SELECT COUNT(*) as count FROM online_users");
$row = $result->fetch_assoc();
echo $row['count'];
$conn->close();
?>
3. Skrypt JavaScript
Aby zaktualizować liczbę użytkowników online bez przeładowania strony, możesz użyć JavaScript (np. z wykorzystaniem AJAX). Dodaj poniższy kod JavaScript do swojej strony HTML:
<script>
function updateOnlineUsers() {
fetch('track_online_users.php')
.then(response => response.text())
.then(data => {
document.getElementById('online-users-count').innerText = data;
})
.catch(error => console.error('Error:', error));
}
// Aktualizuj co 30 sekund
setInterval(updateOnlineUsers, 30000);
updateOnlineUsers(); // Pierwsze wywołanie
</script>
4. Wyświetlanie liczby użytkowników
Dodaj element HTML, w którym będziesz wyświetlać liczbę aktualnie online użytkowników:
<div>
Aktualnie online użytkowników: <span id="online-users-count">0</span>
</div>
5. Wymagania
- Upewnij się, że masz zainstalowany serwer PHP i bazę danych (np. MySQL).
- Skonfiguruj połączenie do bazy danych, podając odpowiednie dane w skrypcie PHP.
6. Testowanie
Po wykonaniu powyższych kroków otwórz stronę w przeglądarce. Liczba użytkowników online powinna być aktualizowana co 30 sekund.
To podejście jest podstawowe i można je rozwijać, na przykład dodając mechanizmy sesji czy bardziej zaawansowane zarządzanie użytkownikami.