Onlinesystem mit PHP
von pathologicalplay am
Mit dem PHP-Skript könnt ihr überprüfen, ob ein Nutzer online oder offline ist.
CREATE TABLE `users` (
`user_id` int(10) NOT NULL AUTO_INCREMENT,
`username` varchar(30) NOT NULL,
`user_password` char(255) NOT NULL,
`user_level` varchar(50) NOT NULL,
`last_activity` datetime NOT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `username_unique` (`username`),
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci
Aktualisieren der DATETIME.
function update_last_activity($db) {
if (isset($_SESSION['logged_in']['user_level'])) {
if (isset($_SESSION['logged_in']['user_id'])) {
$user_id = (INT) $_SESSION['logged_in']['user_id'];
} else {
return false;
}
$update_last_activity = $db->prepare("UPDATE users SET last_activity = NOW() WHERE user_id = ? LIMIT 1");
$update_last_activity->bind_param('i', $user_id);
if ($update_last_activity->execute()) {
return true;
} else {
return false;
}
} else {
return false;
}
}
Ausgabe der Nutzer, die online oder offline sind.
$get_online_users = $db->query("SELECT user_id, username, last_activity
FROM users WHERE TIMESTAMPDIFF(MINUTE,last_activity,NOW()) <= 5 LIMIT 10");
while ($online_users = $get_online_users->fetch_object()) {
echo htmlentities($online_users->username);
}
$get_users = $db->query("SELECT user_id, username, last_activity,
TIMESTAMPDIFF(MINUTE,last_activity,NOW()) AS last_activity_minutes FROM users");
while ($users = $get_users->fetch_object()) {
if ($users->last_activity_minutes < 5) {
echo "online";
} else {
echo "offline";
}
}
Aufrufen der Funktion in anderen Dateien.
require_once 'includes/functions.php';
update_last_activity($db);