| Linux premium274.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64 Path : /home/whagcoha/ledger.mwagalwaservices.com/ |
| Current File : /home/whagcoha/ledger.mwagalwaservices.com/dash.php |
<?php
if ((!isset($_SESSION['gen256'])) ) {
echo "<script>
window.open('login.php','_self');
</script>";
}
?>
<?php
// ------------------- QUERIES ------------------- //
// 1. Total Users
$totalUsers = $conn->query("SELECT COUNT(*) AS count FROM users")->fetch_assoc()['count'];
// 2. Total logins today
$totalLoginsToday = $conn->query("
SELECT COUNT(*) AS count
FROM user_logs
WHERE DATE(created_at) = CURDATE() AND action='login'
")->fetch_assoc()['count'];
// 3. Active users today (unique users who logged in)
$activeUsersToday = $conn->query("
SELECT COUNT(DISTINCT user_id) AS count
FROM user_logs
WHERE DATE(created_at) = CURDATE() AND action='login'
")->fetch_assoc()['count'];
// 4. Last 10 logins
$lastLogins = $conn->query("
SELECT u.fname, u.oname, l.ip_address, l.user_agent, l.created_at
FROM user_logs l
JOIN users u ON u.id = l.user_id
WHERE l.action='login'
ORDER BY l.created_at DESC
LIMIT 10
");
// 5. Daily login stats for chart
$loginStats = $conn->query("
SELECT DATE(created_at) AS day, COUNT(*) AS logins
FROM user_logs
WHERE action='login'
GROUP BY DATE(created_at)
ORDER BY day DESC
LIMIT 7
");
$chartLabels = [];
$chartData = [];
while ($row = $loginStats->fetch_assoc()) {
$chartLabels[] = $row['day'];
$chartData[] = $row['logins'];
}
$chartLabels = json_encode(array_reverse($chartLabels));
$chartData = json_encode(array_reverse($chartData));
?>
<div class="container mt-4">
<h2 class="mb-4">📊 User Dashboard</h2>
<!-- Stats Cards -->
<div class="row text-center mb-4">
<div class="col-md-4">
<div class="card shadow-sm p-3">
<h4>Total Users</h4>
<p class="fs-3 text-primary"><?= $totalUsers ?></p>
</div>
</div>
<div class="col-md-4">
<div class="card shadow-sm p-3">
<h4>Logins Today</h4>
<p class="fs-3 text-success"><?= $totalLoginsToday ?></p>
</div>
</div>
<div class="col-md-4">
<div class="card shadow-sm p-3">
<h4>Active Users Today</h4>
<p class="fs-3 text-warning"><?= $activeUsersToday ?></p>
</div>
</div>
</div>
<!-- Chart -->
<div class="card shadow-sm p-3 mb-4">
<h5>Logins (Last 7 Days)</h5>
<canvas id="loginsChart"></canvas>
</div>
<!-- Last 10 Logins -->
<div class="card shadow-sm p-3">
<h5>Last 10 Logins</h5>
<table class="table table-striped">
<thead>
<tr>
<th>User</th>
<th>IP</th>
<th>Device</th>
<th>Date</th>
</tr>
</thead>
<tbody>
<?php while ($row = $lastLogins->fetch_assoc()): ?>
<tr>
<td><?= htmlspecialchars($row['fname'] . " " . $row['oname']) ?></td>
<td><?= htmlspecialchars($row['ip_address']) ?></td>
<td><?= substr(htmlspecialchars($row['user_agent']), 0, 30) ?>...</td>
<td><?= $row['created_at'] ?></td>
</tr>
<?php endwhile; ?>
</tbody>
</table>
</div>
</div>
<script>
const ctx = document.getElementById('loginsChart').getContext('2d');
new Chart(ctx, {
type: 'line',
data: {
labels: <?= $chartLabels ?>,
datasets: [{
label: 'Logins',
data: <?= $chartData ?>,
borderColor: 'blue',
fill: false,
tension: 0.3
}]
}
});
</script>