Membuat Dashboard Notifikasi Keamanan (Login, Ganti Email, & Token Kadaluarsa) Real-Time di PHP + AJAX

By | 28 October 2025

Dalam sistem web modern, keamanan akun pengguna menjadi prioritas utama. Bukan hanya soal mencegah login ilegal, tetapi juga memberikan transparansi dan kontrol kepada pengguna terhadap setiap aktivitas yang terjadi di akun mereka. Salah satu cara efektif untuk meningkatkan keamanan sekaligus kenyamanan pengguna adalah dengan menghadirkan Dashboard Notifikasi Keamanan.

Fitur ini memungkinkan pengguna untuk melihat notifikasi secara real-time setiap kali terjadi aktivitas penting, seperti login baru, perubahan email, atau token kadaluarsa. Dengan bantuan PHP dan AJAX, kita dapat membangun sistem yang responsif dan dinamis tanpa perlu melakukan refresh halaman setiap kali notifikasi baru muncul.

Artikel ini akan membahas cara membuat Dashboard Notifikasi Keamanan menggunakan kombinasi PHP, MySQL, dan AJAX agar setiap peristiwa penting dapat terpantau secara otomatis dan langsung terlihat di panel pengguna.

Konsep Umum Dashboard Notifikasi Keamanan

Dashboard ini berfungsi menampilkan aktivitas keamanan dari akun pengguna dalam bentuk notifikasi, seperti:

  • Login Baru: Menampilkan waktu, IP address, dan device.

  • Perubahan Email: Memberi tahu jika pengguna mengganti alamat email utama.

  • Token Kadaluarsa: Memberi peringatan jika token verifikasi atau 2FA hampir kedaluwarsa.

Semua notifikasi tersebut disimpan dalam tabel log di database, kemudian diambil dan ditampilkan secara real-time menggunakan AJAX.

Struktur Tabel Database

Berikut contoh struktur tabel yang dapat digunakan:

CREATE TABLE security_logs (
  id INT AUTO_INCREMENT PRIMARY KEY,
  user_id INT NOT NULL,
  event_type VARCHAR(50),
  message TEXT,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
  is_read TINYINT(1) DEFAULT 0
);

Contoh nilai kolom event_type:

  • login

  • change_email

  • token_expired

Menyimpan Log Keamanan

Setiap kali terjadi aktivitas penting, kita bisa menambahkan data ke tabel security_logs.
Misalnya, ketika pengguna login:

$user_id = $_SESSION['user_id'];
$ip = $_SERVER['REMOTE_ADDR'];
$device = $_SERVER['HTTP_USER_AGENT'];

$message = "Login baru dari IP $ip menggunakan perangkat $device.";
mysqli_query($conn, "INSERT INTO security_logs (user_id, event_type, message) 
                     VALUES ('$user_id', 'login', '$message')");

Demikian juga untuk aktivitas ganti email atau token kadaluarsa, cukup ubah event_type dan message sesuai konteks.

Menampilkan Notifikasi Real-Time dengan AJAX

Di sisi front-end, kita buat AJAX yang mengambil notifikasi terbaru dari server tanpa reload halaman.

setInterval(function() {
  $.ajax({
    url: 'ajax_get_notifications.php',
    type: 'GET',
    success: function(data) {
      $('#notificationList').html(data);
    }
  });
}, 5000); // setiap 5 detik

Kemudian file ajax_get_notifications.php menampilkan data terbaru:

session_start();
include 'db.php';
$user_id = $_SESSION['user_id'];

$result = mysqli_query($conn, "SELECT * FROM security_logs 
                               WHERE user_id='$user_id' 
                               ORDER BY created_at DESC LIMIT 10");

while($row = mysqli_fetch_assoc($result)) {
  echo "<div class='notification-item'>
          <strong>{$row['event_type']}</strong><br>
          {$row['message']}<br>
          <small>{$row['created_at']}</small>
        </div>";
}

Menandai Notifikasi sebagai Dibaca

Agar dashboard lebih rapi, pengguna bisa menandai notifikasi tertentu sebagai “dibaca”:

if(isset($_POST['id'])){
  $id = $_POST['id'];
  mysqli_query($conn, "UPDATE security_logs SET is_read=1 WHERE id='$id'");
}

Kemudian tambahkan tombol “Tandai Dibaca” di setiap notifikasi.

Fitur Tambahan: Filter & Log Aktivitas Detail

Tambahkan fitur untuk:

  • Filter notifikasi berdasarkan jenis (login, email, token).

  • Lihat detail aktivitas (misal IP, browser, dan lokasi).

  • Export log ke file CSV untuk keperluan audit keamanan.

Keuntungan Implementasi Dashboard Notifikasi Keamanan

Meningkatkan transparansi pengguna: Pengguna tahu setiap aktivitas akun mereka.
Mempercepat deteksi aktivitas mencurigakan: Misalnya login dari lokasi tidak biasa.
Meningkatkan kepercayaan: Sistem terlihat profesional dan aman.
Mudah dikembangkan: Bisa diperluas untuk log OTP, perubahan password, atau 2FA.

Kesimpulan

Dengan kombinasi PHP, MySQL, dan AJAX, kita dapat membuat Dashboard Notifikasi Keamanan yang menampilkan aktivitas penting seperti login, perubahan email, dan token kadaluarsa secara real-time. Fitur ini tidak hanya menambah keamanan tetapi juga memberikan pengalaman pengguna yang lebih profesional dan interaktif.

Langkah berikutnya, Anda bisa mengintegrasikan dashboard ini dengan sistem Two-Factor Authentication (2FA) atau log aktivitas admin, menjadikannya fondasi utama keamanan aplikasi web modern Anda.

Category: PHP