• Tentang Kami
  • Portofolio
  • Paket Web
  • Promosi
    • Hosting Terbaik Unlimited
  • Tutorial Website
  • GRATISAN
  • Lokasi
  • Artikel
Menu
  • Tentang Kami
  • Portofolio
  • Paket Web
  • Promosi
    • Hosting Terbaik Unlimited
  • Tutorial Website
  • GRATISAN
  • Lokasi
  • Artikel

Cara Membuat Log Aktivitas di Aplikasi Web Menggunakan PHP

Categoriessource code gratis / tutorial website

Yudith Hentreisa

Juli 18, 2024

0 0

Share this post

Cara Membuat Log Aktivitas di Aplikasi Web Menggunakan PHP – Dalam tutorial ini, kita akan mengeksplorasi pembuatan fitur log aktivitas dalam aplikasi web menggunakan bahasa PHP. Tujuannya adalah untuk menawarkan referensi atau panduan kepada siswa dan mereka yang baru mengenal bahasa PHP untuk meningkatkan pengetahuan dan kemampuan mereka dalam mengembangkan aplikasi web yang efisien dan efektif.

Saya akan menjelaskan proses langkah demi langkah untuk membuat Kelas PHP yang dapat digunakan kembali yang mengimplementasikan fitur Log Aktivitas ke dalam proyek PHP. Selain itu, saya akan menyediakan file zip kode sumber lengkap untuk aplikasi web contoh yang menunjukkan penggunaan Kelas PHP yang disebutkan.

Apa manfaat menerapkan Log Aktivitas dalam Aplikasi Web?

Menerapkan Log Aktivitas dalam aplikasi web memberikan keuntungan khusus untuk sifat dinamis dari platform online. Pertimbangan yang cermat terhadap informasi yang akan dicatat sangat penting, menyeimbangkan kebutuhan untuk catatan yang terperinci dengan kekhawatiran tentang privasi data dan kinerja. Ketika diterapkan secara efektif, log aktivitas dapat secara signifikan berkontribusi pada keamanan, kinerja, dan kegunaan aplikasi web.

Bagaimana cara membuat Kelas Logger Aktivitas yang dapat digunakan kembali dalam PHP?

Berikut adalah langkah-langkah untuk membuat Kelas Logger Aktivitas dalam PHP:

Langkah 1: Membuat Kelas

Dengan asumsi bahwa kita telah membuat file PHP baru bernama activity-log.class.php, buka file tersebut di editor kode pilihan Anda, seperti Sublime Text, MS VS Code, atau Notepad++. Kemudian, strukturkan kelas PHP sebagai berikut:

<?php 
class ActivityLog{
 
}
?>

Langkah 2: Membuat Koneksi Basis Data

Selanjutnya, kita perlu membuat metode atau fungsi kelas yang memungkinkan kita untuk terhubung ke Basis Data. Kita dapat mencapai ini dengan menambahkan koneksi basis data dalam fungsi __construct dari kelas dan menutupnya dalam fungsi __destruct. Untuk melakukan ini, lihat cuplikan berikut:

<?php 
class ActivityLog{
    // DB Connection object
    private $db;  
    function __construct($dbhost="", $dbuser = "", $dbpassword = "", $dbname = "", $db_prefix =""){
        // Check if DB credentials is empty
        if(empty($dbhost) || empty($dbuser) || empty($dbname)){
            throw new ErrorException("Database Credentials cannot be empty!");
            exit;
        }
 
        // Connect to the database
        try{
            $this->db = new MySQLi($dbhost, $dbuser, $dbpassword, $dbname);
        }catch(Exception $e){
            throw new ErrorException($e->getMessage());
            exit;
        }
 
    }
   function __destruct()
    {
        if($this->db){
            $this->db->close();
        }
    }
}
?>

Langkah 3: Membuat Tabel Log di Basis Data

Selanjutnya, mari kita buat fungsi yang memeriksa apakah Tabel Log Aktivitas sudah dibuat; jika tidak, fungsi tersebut akan membuat tabel basis data baru untuk ini. Lihat cuplikan berikut:

<?php 
class ActivityLog{
 
    // DB Connection
    private $db;    
    // Log Table Name
    private $dbTbl = "site_activity_log_automation_tbl";
    // DB Prefix
    private $db_prefix;
 
    function __construct($dbhost="", $dbuser = "", $dbpassword = "", $dbname = "", $db_prefix =""){
        // Check if DB credentials is empty
        if(empty($dbhost) || empty($dbuser) || empty($dbname)){
            throw new ErrorException("Database Credentials cannot be empty!");
            exit;
        }
        // Connect to the database
        try{
            $this->db = new MySQLi($dbhost, $dbuser, $dbpassword, $dbname);
        }catch(Exception $e){
            throw new ErrorException($e->getMessage());
            exit;
        }
 
        // SEt DB Prefix to log db table
        $this->db_prefix = $db_prefix;
        if(!empty($this->db_prefix)){
            $this->db_prefix .= "_";
        }
        $this->dbTbl = $this->db_prefix . $this->dbTbl;
 
 
        // Check if Log Table already exists, otherwise, create table
        try{
            $tbl_described =  $this->db->query("DESCRIBE `{$this->db_prefix}`");
        }catch(Exception $e){
            $this->create_tbl();
        }
 
    }
 
    /**
     * Log Table Creation
     */
    function create_tbl(){
        $sql = "CREATE TABLE IF NOT EXISTS `{$this->dbTbl}`
            (
                `id` bigint(30) PRIMARY KEY AUTO_INCREMENT,
                `user_id` bigint(30) NOT NULL,        
                `ip` varchar(25) NOT NULL,        
                `url` text NOT NULL,        
                `action` text NOT NULL,        
                `created_at` datetime NOT NULL DEFAULT current_timestamp()        
            )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
        ";
        try{
            $table_create = $this->db->query($sql);
        }catch(Exception $e){
            throw new ErrorException($e->getMessage());
            exit;
        }
    }
    function __destruct()
    {
        if($this->db){
            $this->db->close();
        }
    }
}
?>

Cuplikan di atas menunjukkan pembuatan Tabel Log Aktivitas jika tabel tersebut belum ada dan saat kelas dipanggil.

Langkah 4: Membuat Fungsi Log

Selanjutnya, mari kita buat fungsi yang memasukkan data log ke dalam basis data. Untuk melakukan itu, kita dapat menulisnya sebagai berikut:

<?php 
/**
* Sanitize values
* @param mixed any
*/
function sanitize_value($value){
    if(!is_numeric($value) && empty($value)){
        if( is_object($value) && is_array($value) ){
            $value = json_encode($value);
        }else{
            $value = addslashes(htmlspecialchars($value));
        }
    }
    return $value;
}
 
/**
    * Insert Activity Log
    * @param array [user_id, ip, url, action] 
    *  
    */
public function log( $data = [] ){
    if(empty($data)){
        throw new ErrorException("Log data are required!");
        exit;
    }
 
 
    $params_values = [];
    $params_format = [];
    $query_values  = [];
 
    foreach($data as $k => $v){
        $v = $this->sanitize_value($v);
        if(!empty($v)){
            if(is_numeric($v)){
                $fmt = "d";
            }else{
                $fmt = "s";
            }
            $query_values[] = "`{$k}`";
            $params_values[] = $v;
            $params_format[] = $fmt;
        }
    }
 
    if(empty($query_values)){
        throw new ErrorException("All Log data provided are empty or invalid!");
        exit;
    }
 
    $sql = "INSERT INTO `{$this->dbTbl}` (".implode(",", $query_values).") VALUES (".( implode( ",", str_split( str_repeat( "?", count( $query_values ) ) ) ) ).")";
 
    $stmt = $this->db->prepare($sql);
 
    $fmts = implode("", $params_format);
 
    $stmt->bind_param($fmts, ...$params_values);
 
    $executed = $stmt->execute();
 
    if($executed){
 
        $resp = [
            "status" => "success"
        ];
 
    }else{
 
        $resp = [
            "status" => "error",
            "sql" => $sql,
            "queries" => $query_values,
            "formats" => $fmts,
            "values" => $params_values,
        ];
 
    }
    return $resp;
}
?>

Berikut adalah skrip lengkap dari kelas Log Aktivitas yang dapat digunakan kembali dalam PHP. Saya juga menyertakan fungsi yang mengambil semua log aktivitas dari basis data.

<?php
/** 
 * Class Required Parameters
 * @param str DB Host Name
 * @param str DB User Name
 * @param str DB Password
 * @param str DB Name
 * @param str DB Prefix
*/
class ActivityLog{
 
    // DB Connection
    private $db;    
    // Log Table Name
    private $dbTbl = "site_activity_log_automation_tbl";
    // DB Prefix
    private $db_prefix;
 
    function __construct($dbhost="", $dbuser = "", $dbpassword = "", $dbname = "", $db_prefix =""){
        // Check if DB credentials is empty
        if(empty($dbhost) || empty($dbuser) || empty($dbname)){
            throw new ErrorException("Database Credentials cannot be empty!");
            exit;
        }
        // Connect to the database
        try{
            $this->db = new MySQLi($dbhost, $dbuser, $dbpassword, $dbname);
        }catch(Exception $e){
            throw new ErrorException($e->getMessage());
            exit;
        }
 
        // SEt DB Prefix to log db table
        $this->db_prefix = $db_prefix;
        if(!empty($this->db_prefix)){
            $this->db_prefix .= "_";
        }
        $this->dbTbl = $this->db_prefix . $this->dbTbl;
 
 
        // Check if Log Table already exists, otherwise, create table
        try{
            $tbl_described =  $this->db->query("DESCRIBE `{$this->db_prefix}`");
        }catch(Exception $e){
            $this->create_tbl();
        }
 
    }
 
    /**
     * Log Table Creation
     */
    function create_tbl(){
        $sql = "CREATE TABLE IF NOT EXISTS `{$this->dbTbl}`
            (
                `id` bigint(30) PRIMARY KEY AUTO_INCREMENT,
                `user_id` bigint(30) NOT NULL,        
                `ip` varchar(25) NOT NULL,        
                `url` text NOT NULL,        
                `action` text NOT NULL,        
                `created_at` datetime NOT NULL DEFAULT current_timestamp()        
            )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci
        ";
        try{
            $table_create = $this->db->query($sql);
        }catch(Exception $e){
            throw new ErrorException($e->getMessage());
            exit;
        }
    }
 
    /**
     * Sanitize values
     * @param mixed any
     */
    function sanitize_value($value){
        if(!is_numeric($value) && empty($value)){
            if( is_object($value) && is_array($value) ){
                $value = json_encode($value);
            }else{
                $value = addslashes(htmlspecialchars($value));
            }
        }
        return $value;
    }
 
    /**
     * Insert Activity Log
     * @param array [user_id, ip, url, action] 
     *  
     */
    public function log( $data = [] ){
        if(empty($data)){
            throw new ErrorException("Log data are required!");
            exit;
        }
 
 
        $params_values = [];
        $params_format = [];
        $query_values  = [];
 
        foreach($data as $k => $v){
            $v = $this->sanitize_value($v);
            if(!empty($v)){
                if(is_numeric($v)){
                    $fmt = "d";
                }else{
                    $fmt = "s";
                }
                $query_values[] = "`{$k}`";
                $params_values[] = $v;
                $params_format[] = $fmt;
            }
        }
 
        if(empty($query_values)){
            throw new ErrorException("All Log data provided are empty or invalid!");
            exit;
        }
 
        $sql = "INSERT INTO `{$this->dbTbl}` (".implode(",", $query_values).") VALUES (".( implode( ",", str_split( str_repeat( "?", count( $query_values ) ) ) ) ).")";
 
        $stmt = $this->db->prepare($sql);
 
        $fmts = implode("", $params_format);
 
        $stmt->bind_param($fmts, ...$params_values);
 
        $executed = $stmt->execute();
 
        if($executed){
 
           $resp = [
                "status" => "success"
           ];
 
        }else{
 
            $resp = [
                "status" => "error",
                "sql" => $sql,
                "queries" => $query_values,
                "formats" => $fmts,
                "values" => $params_values,
           ];
 
        }
        return $resp;
    }
 
    /**
     * Log Data 
     * @param $user_id mixed|int User ID
     * @param $action  str       Action Data
     */
    public function setAction($user_id= "", $action = ""){
        $data = [];
 
        extract($_SERVER);
        $data['ip'] = $REMOTE_ADDR;
        $data['url'] = (empty($HTTPS) ? 'http' : 'https') . "://{$HTTP_HOST}{$REQUEST_URI}";
        $data["user_id"] = $user_id;
        $data["action"] = addslashes(htmlspecialchars($action));
 
        return $this->log($data);
    }
 
    /**
     * Get All Logs
     */
    public function getLogs(){
 
        $query = $this->db->query("SELECT * FROM `{$this->dbTbl}` order by `id` desc");
        $result = $query->fetch_all(MYSQLI_ASSOC);
 
        return $result;
    }
 
    function __destruct()
    {
        if($this->db){
            $this->db->close();
        }
    }
}
?>

Dengan menggunakan Kelas PHP yang disediakan di atas, kita sekarang dapat mencatat tindakan atau aktivitas apa pun dari pengguna di situs web dengan cukup mengimplementasikan skrip seperti berikut:

<?php 
$dbData = [
    "localhost", // Hostname
    "root",      // Username
    "",          // Password
    "dummy_db"  // DBName
];
$activityLog = new ActivityLog(...$dbData);
$activityLog->setAction($_SESSION['user_id'], "accessed the home page");
?>

Untuk mendapatkan pemahaman yang lebih baik tentang penggunaan Kelas Logger Aktivitas PHP yang disediakan di atas, saya telah mengembangkan aplikasi web sederhana dengan fungsionalitas CRUD (Create, Read, Update, dan Delete).

Dalam aplikasi web ini, aktivitas pengguna dicatat dalam basis data, seperti login yang berhasil, menambahkan data baru, memperbarui data, dan menghapus data. File zip kode sumber lengkap dari aplikasi web yang saya buat tersedia dan dapat diunduh secara gratis di situs web ini. Tombol unduh terletak di bawah konten tutorial ini.

Berikut Beberapa Screenshot Aplikasi ini :

User Cara Membuat Log Aktivitas di Aplikasi Web Menggunakan PHP Cara Membuat Log Aktivitas di Aplikasi Web Menggunakan PHP

Dan itulah semuanya! Saya percaya Tutorial Pembuatan Kelas Logger Aktivitas PHP ini akan bermanfaat bagi kebutuhan Anda dan memberikan nilai tambah untuk proyek PHP Anda saat ini dan di masa depan. Jelajahi lebih dalam situs web ini untuk Tutorial tambahan, Kode Sumber Gratis, dan Artikel yang mencakup berbagai bahasa pemrograman.

Download link disini :

Terimakasih telah membaca artikel Cara Membuat Log Aktivitas di Aplikasi Web Menggunakan PHP. Semoga bermanfaat! Jika membutuhkan jasa pembuatan website bisa hubungi di WA 087823179122 atau klik tombol WA di bawah website.

Tags: belajar php, belajar web, cara membuat log, download log aktivitas, membuat log php

Related Post

DESEMBER 12, 2025

Download Source Code Sistem...

Download Source Code Sistem Antrian PHP MySQL – Fitur Lengkap & Siap Pakai Ingin...

00

DESEMBER 10, 2025

Tutorial Sistem...

Tutorial Sistem Multi-Language PHP Tanpa Database – Fitur multi-language...

00

DESEMBER 9, 2025

Cara Membuat Maintenance Mode...

Cara Membuat Maintenance Mode di PHP – Maintenance mode adalah halaman khusus yang...

00

JUNI 8, 2025

Cara Membuat Website dengan...

Cara membuat website dengan HTML CSS dan JavaScript dari nol sangat cocok dipelajari oleh...

00

APRIL 17, 2025

Download Source Code Laravel...

Download Source Code Laravel CRUD Builder Otomatis – Laravel Admin Template –...

00

FEBRUARI 4, 2025

Download Source Code File...

Download Source Code File Manager – manajer file yang simpel dan fleksibel, tinggal...

00

Recent Posts

  • Cara Melindungi Data Pribadi Agar Tidak Masuk Database Mata Elang

    Cara Melindungi Data Pribadi Agar Tidak Masuk Database Mata Elang

    Desember 27, 2025
  • aplikasi matel

    Mengapa Aplikasi Penjual Data Pribadi Seperti Matel Bisa Lolos ke Play Store?

    Desember 27, 2025
  • Source Code AI Code Reviewer

    [DOWNLOAD] Source Code AI Code Reviewer: Bangun Tool Internal Perusahaan Berbasis Gemini API

    Desember 26, 2025
  • 10 Software Gratis Pengganti Aplikasi Berbayar

    10 Software Gratis Pengganti Aplikasi Berbayar di 2026 (Update Desember 2025)

    Desember 24, 2025
  • Download Pinokyo Browser

    Download Pinokyo Browser

    Desember 22, 2025
COPYRIGHT © 2025 | CREATED BY YUDITH / SUNDAKREATIF.COM