Ho un piccolo problema. Sto cercando di mostrare agli utenti del sito tutti gli utenti (registrati) che sono loggati in quel momento.
Per farlo ho utilizzato una classe che si occupa di inserire l'id dell'utente appena loggato nella tabella e controlla se è inattivo oppure no tramite la funzione clearTable(). La classe funziona fino ad un certo punto: inserisce nella tabella gli utenti loggati e li mostra, ma nn controlla se sono attivi oppure no... e questo mi fa pensare ad un errore nella funzione clearTable(), ma nn lo trovo! Qualcuno di voi potrebbe aiutarmi?
Grazie infinite!
La classe in parte l'ho scritta io in parte no... l'ho trovata su un tutorial ma l'ho modificata perchè quella postata nel tutorial non mi funzionava proprio.
Per farlo ho utilizzato una classe che si occupa di inserire l'id dell'utente appena loggato nella tabella e controlla se è inattivo oppure no tramite la funzione clearTable(). La classe funziona fino ad un certo punto: inserisce nella tabella gli utenti loggati e li mostra, ma nn controlla se sono attivi oppure no... e questo mi fa pensare ad un errore nella funzione clearTable(), ma nn lo trovo! Qualcuno di voi potrebbe aiutarmi?
Grazie infinite!
PHP:
class OnlineUsers {
private $id;
private $conn;
private $host = "";
private $username = "";
private $password = "";
private $database = "";
public function __construct($id) {
$this->id = $id;
$this->clearTable();
$this->conn = mysql_connect($this->host, $this->username, $this->password);
mysql_select_db($this->database,$this->conn);
$query = "SELECT utente FROM online_users WHERE utente = $this->id";
$result = mysql_query($query,$this->conn);
if(mysql_num_rows($result) == 1) {
$this->update();
} else {
$this->insert();
}
}
private function insert() {
mysql_select_db($this->database,$this->conn);
$query = "INSERT INTO online_users (utente, data) VALUES ($this->id,NOW())";
if($result = mysql_query($query,$this->conn)) {
return true;
} else {
return false;
}
}
private function clearTable() {
mysql_select_db($this->database,$this->conn);
$query = "DELETE FROM online_users WHERE data < SUBDATE(NOW(), INTERVAL 11 MINUTE)";
if($result = mysql_query($query,$this->conn)) {
return true;
} else {
return false;
}
}
private function update() {
mysql_select_db($this->database,$this->conn);
$query = "UPDATE online_users SET data = NOW() WHERE utente = $this->id";
if($result = mysql_query($query,$this->conn)) {
return true;
} else {
return false;
}
}
public function getUsersName() {
mysql_select_db($this->database,$this->conn);
$query = "SELECT * FROM utenti, online_users WHERE utenti.id = online_users.utente";
$result = mysql_query($query) or die(mysql_error());
$users_online = array();
while($row = mysql_fetch_array($result)) {
$users_online[$row['id']] = $row['username'];
}
return $users_online;
}
public function countOnline() {
mysql_select_db($this->database,$this->conn);
$query = "SELECT COUNT(*) AS num_user FROM online_users ORDER BY data ASC";
$result = mysql_query($query) or die(mysql_error());
$fetch = mysql_fetch_array($result);
return $fetch['num_user'];
}
}
La classe in parte l'ho scritta io in parte no... l'ho trovata su un tutorial ma l'ho modificata perchè quella postata nel tutorial non mi funzionava proprio.