Jasa Pembuatan WebsiteJasa Pembuatan WebsiteJasa Pembuatan Website
Menu
  • Tentang Kami
  • Portofolio
  • Paket Web
  • Promo
    • Hosting Terbaik Unlimited
  • Tutorial Website
  • GRATISAN
  • Lokasi
  • Artikel

Cara Membuat Log Aktivitas di Aplikasi Web Menggunakan PHP

  • Home
  • Blog
  • Cara Membuat Log Aktivitas Di Aplikasi...

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

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

FEBRUARI 1, 2025

Membuat Peta Lokasi Sederhana...

Anda ingin Membuat Peta Lokasi Sederhana dengan PHP dan Leaflet JS? Saya akan menjelaskan...

00

JANUARI 28, 2025

Source Code Kirim Email...

Source Code Kirim Email dengan Attachment PHP – Selamat datang di Aplikasi Kirim...

00

JANUARI 4, 2025

Download Source Code Booking...

Download Source Code Booking Tour PHP MySQL – Sistem pemesanan tour kini semakin...

10

JANUARI 3, 2025

Source Code Gratis Manajemen...

Source Code Gratis Manajemen Rumah Sakit PHP MySql  – Hospital Management System...

00

Recent Posts

  • 120+ ChatGPT Prompts for Content Creators [Free PDF Download]

    Mei 7, 2025
  • Download Source Code Laravel CRUD Builder Otomatis

    April 17, 2025
  • Reddit Stock (RDDT): What Investors Need to Know Ahead of the Next Earnings Report

    Februari 13, 2025
  • Joann Stores Closing: Crafting and Communities Throughout the United States

    Februari 13, 2025
  • Download Source Code File Manager – Host dan Share File

    Februari 4, 2025
Sundakreatif.com merupakan Jasa pembuatan website yang sudah dimulai sejak tahun 2009 (Sebelumnya bernama hentreiza-web.com). Sudah berpengalaman membuat lebih dari 400+ website. Berkreasi untuk mewujudkan keinginan Anda dalam membangun website sesuai dengan kebutuhan Anda.

LIVE CHAT (Klik Gambar)


Hubungi Kami

Sundakreatif.com

Lokasi : Bandung / Cimahi
SMS/WA : +6287823179122
LINE : Hentreiza
EMAIL : HENTREIZA @ GMAIL.COM
Comodo SSL

© 2016 Jasa Pembuatan Website, All Rights Reserved.