Hmm ciężka sprawa.
Najlepiej jest zrobić nową tabele np:
CREATE TABLE `zalogowani` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`login` text NOT NULL,
`czas` DATETIME NOT NULL,
PRIMARY KEY (`id`)
) TYPE=MyISAM;
I teraz podczas każdego (prawidłowego) logowania zapisujesz do tabeli zalogowani nowy wiersz z id, login zalogowanego, aktualny czas (00-00-0000 00:00:00 [dzien-miesiac-rok godzina:minuta:sekundy])
Przykład :
<?php
$zapisz = mysql_query("INSERT INTO zalogowani VALUES ('', '".$_SESSION['login']."', NOW() )"); ?>
No i później musisz (najlepiej w nowym pliku i później includować ten plik do każdej strony) wstawić kod który ustawia nowy czas jeżeli użytkownik jest nadal zalogowany, kasuje wpisy po jakimś czasie i na wszelki wypadek jak wpis wcześniej nie został dodany - dodaje:
np:
<?php
// Sprawdzenie czy użytkownik jest w tabeli zalogowani
//Jeżeli go niema to go dodajemy:
$wynik = mysql_query("SELECT * FROM zalogowani WHERE login='".$_SESSION['login']."'"); $zapisz = mysql_query("INSERT INTO zalogowani VALUES ('', '".$_SESSION['login']."', NOW() )"); }
//Ustawianie aktualnego czasu dla użytkowników którzy istnieją w tabeli zalogowani
:
$sprawdz = mysql_query("SELECT * FROM zalogowani WHERE login='".$_SESSION['login']."'"); $update = mysql_query("UPDATE zalogowani SET czas=NOW() WHERE login='".$_SESSION['login']."'"); }
//No i kasowanie użytkowników z tabeli zalogowani po np 3 minutach:
$usun = mysql_query("SELECT * FROM zalogowani WHERE login='".$_SESSION['login']."' AND czas < DATE_SUB(NOW(), INTERVAL 180 SECOND)"); $kasowanie = mysql_query("DELETE FROM zalogowani WHERE login='".$_SESSION['login']."' AND czas < DATE_SUB(NOW(), INTERVAL 180 SECOND)"); }
?>
Możesz też to skrócić :
<?php
$wynik = mysql_query("SELECT * FROM zalogowani WHERE login='".$_SESSION['login']."'"); $zapisz = mysql_query("INSERT INTO zalogowani VALUES ('', '".$_SESSION['login']."', NOW() )"); }
$update = mysql_query("UPDATE zalogowani SET czas=NOW() WHERE login='".$_SESSION['login']."'");
$kasowanie = mysql_query("DELETE FROM zalogowani WHERE login='".$_SESSION['login']."' AND czas < DATE_SUB(NOW(), INTERVAL 180 SECOND)"); ?>
Nie sprawdzałem tego, pisałem z głowy ale mam nadzieje że działa