How to Build an Activity Log System in PHP (Track User Actions)
📌 Thumbnail Text
“Track Everything”
“User Activity Log”
“Who Did What?”
📌 Content
📌 What is an Activity Log?
An activity log records user actions such as:
login
upload
delete
update
👉 This helps with:
debugging
security
monitoring
1️⃣ Create activity_logs table
Run this SQL:
CREATE TABLE activity_logs (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
action VARCHAR(255),
target_id INT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
2️⃣ Create logging function
Create log.php:
<?php
require_once 'db.php';
function logActivity($user_id, $action, $target_id = null) {
global $conn;
$stmt = $conn->prepare("INSERT INTO activity_logs (user_id, action, target_id) VALUES (?, ?, ?)");
$stmt->bind_param("isi", $user_id, $action, $target_id);
$stmt->execute();
}
?>
3️⃣ Log user actions
✔ Example: upload
require_once 'log.php';
logActivity($_SESSION['user_id'], 'upload_image', $image_id);
✔ Example: delete
logActivity($_SESSION['user_id'], 'delete_image', $id);
✔ Example: login
logActivity($user['id'], 'login');
4️⃣ View logs (admin only)
Create:
/hosting/foliocraft/html/activity_logs.php
<?php
require_once 'auth_role.php';
requireRole('admin');
require_once 'db.php';
$result = $conn->query("
SELECT a.*, u.username
FROM activity_logs a
LEFT JOIN users u ON a.user_id = u.id
ORDER BY a.id DESC
");
while ($row = $result->fetch_assoc()):
?>
<div>
[<?= $row['created_at'] ?>]
<?= $row['username'] ?> → <?= $row['action'] ?> (ID: <?= $row['target_id'] ?>)
</div>
<?php endwhile; ?>
🔥 Key Features
track all important actions
admin monitoring
debugging support
🔐 Security Tips
log sensitive actions only
do not log passwords
restrict logs to admin only
✅ Summary
To build activity log:
Create log table
Create logging function
Track user actions
Build admin viewer
🚀 Next Step
You can extend this by:
filter logs (by user / action)
search logs
export logs (CSV)
real-time monitoring
Hope this helps 🚀
Login with Google