Witam. Mam stronę na której umieściłem kod zliczający liczbę zalogowanych użytkowników. Wszystko działa prawie dobrze. Kiedy użytkownik się zaloguje jest wyświetlana jego nazwa oraz innych użytkowników, którzy są zalogowani. Kiedy się wyloguje, odejmuje mnie w liczniku.
Natomiast gdy jestem zalogowany, a wejdę z innego komputera na stronę, to licznik się zeruje. Zmienia statusy wszystkich userów w bazie danych z "zalogowany" na "wylogowany" i zeruje tym samym licznik. Jak to mogę naprawić ? Poniżej podaję cały ten kod.
session_start();
if (isset($_SESSION['username'])) {
// Użytkownik jest zalogowany
// Aktualizacja statusu użytkownika na "zalogowany"
$username = $_SESSION['username'];
$sql = "UPDATE users SET status = 'zalogowany' WHERE username = '$username'";
$result = $conn->query($sql);
// Sprawdzenie czy aktualizacja się powiodła
if ($result) {
// Pobranie liczby zalogowanych użytkowników z bazy danych
$sql = "SELECT COUNT(*) AS liczba_zalogowanych FROM users WHERE status = 'zalogowany'";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$liczba_zalogowanych = $row['liczba_zalogowanych'];
echo "Liczba zalogowanych użytkowników: " . $liczba_zalogowanych;
echo "<br><br>";
// Pobranie listy zalogowanych użytkowników z bazy danych
$sql = "SELECT username FROM users WHERE status = 'zalogowany'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "Zalogowani użytkownicy: ";
while ($row = $result->fetch_assoc()) {
echo '<span style="color: #5F9EA0;">' . $row['username'] . '</span>, ';
}
} else {
echo "Brak zalogowanych użytkowników.";
}
} else {
echo "Błąd aktualizacji statusu użytkownika.";
}
} else {
// Użytkownik niezalogowany
// Aktualizacja statusu użytkowników na "wylogowany"
$sql = "UPDATE users SET status = 'wylogowany' WHERE username != 'guest' AND status = 'zalogowany'";
$result = $conn->query($sql);
// Sprawdzenie czy aktualizacja się powiodła
if ($result) {
// Pobranie liczby zalogowanych użytkowników z bazy danych (dla niezalogowanych)
$sql = "SELECT COUNT(*) AS liczba_zalogowanych FROM users WHERE status = 'zalogowany'";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
$liczba_zalogowanych = $row['liczba_zalogowanych'];
echo "Liczba zalogowanych użytkowników: " . $liczba_zalogowanych;
} else {
echo "Błąd aktualizacji statusu użytkowników.";
}
}
$conn->close();