Pada tutorial ini, kita akan membuat Visitor Tracker dengan menggunakan Framework CodeIgniter 3.
Visitor Tracker ini akan terdiri dari beberapa fitur seperti menambahkan data pengunjung baru, menghitung jumlah pengunjung, menghitung jumlah pengunjung yang sedang online, dan mengambil data pengunjung dari database.
Semua fitur akan ditempatkan dalam sebuah library, sehingga kita bisa menggunakannya kapan saja pada controller atau view.
Langkah 1: Persiapan
Untuk memulai tutorial ini, kita harus memastikan bahwa CodeIgniter 3 sudah terpasang dan siap digunakan. Jika belum, silakan download dan ikuti petunjuk instalasinya pada website resmi CodeIgniter.
Langkah 2: Membuat database
Buat sebuah database di MySQL dengan nama “visitor_tracker”. Kemudian, buat sebuah tabel dengan nama “visitors” dengan struktur sebagai berikut:
CREATE TABLE `visitors` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ip_address` varchar(45) NOT NULL, `user_agent` varchar(255) NOT NULL, `visit_time` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Langkah 3: Membuat Library VisitorTracker
Pada langkah ini, kita akan membuat library baru dengan nama VisitorTracker yang akan berisi semua fungsi yang dibutuhkan untuk Visitor Tracker.
Buat file baru dengan nama VisitorTracker.php
pada direktori application/libraries
.
Salin kode berikut ke dalam file VisitorTracker.php
.
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class VisitorTracker { public function __construct() { // load library dan helper yang dibutuhkan $this->ci =& get_instance(); $this->ci->load->library('user_agent'); $this->ci->load->helper('cookie'); } // fungsi untuk menambahkan data pengunjung baru public function addVisitor() { $ip_address = $this->ci->input->ip_address(); $user_agent = $this->ci->agent->agent_string(); $visit_time = time(); // cek apakah pengunjung sudah pernah mengunjungi situs sebelumnya if (get_cookie('visitor_id')) { $visitor_id = get_cookie('visitor_id'); // update data pengunjung yang sudah ada $this->ci->db->set('visit_time', $visit_time); $this->ci->db->where('id', $visitor_id); $this->ci->db->update('visitors'); } else { // tambahkan data pengunjung baru ke dalam database $data = array( 'ip_address' => $ip_address, 'user_agent' => $user_agent, 'visit_time' => $visit_time ); $this->ci->db->insert('visitors', $data); $visitor_id = $this->ci->db->insert_id(); // set cookie untuk menyimpan ID pengunjung set_cookie('visitor_id', $visitor_id, 3600*24*365); // cookie berlaku selama 1 tahun } } // fungsi untuk menghitung jumlah pengunjung public function countVisitors($interval = 'today') { switch ($interval) { case 'today': $start_time = strtotime('today'); break; case 'yesterday': $start_time = strtotime('yesterday'); $end_time = strtotime('today'); break; case 'this_month': $start_time = strtotime('first day of this month'); break; case 'this_year': $start_time = strtotime('january 1 this year'); break; default: $start_time = null; break; } if ($start_time) { $this->ci->db->where('visit_time >=', $start_time); if (isset($end_time)) { $this->ci->db->where('visit_time <', $end_time); } } $this->ci->db->from('visitors'); $query = $this->ci->db->get(); return $query->num_rows(); } // fungsi untuk menghitung jumlah pengunjung yang sedang online public function countOnlineVisitors() { $this->ci->db->where('visit_time >=', time() - 60*5); // pengunjung yang aktif dalam 5 menit terakhir $this->ci->db->from('visitors'); $query = $this->ci->db->get(); return $query->num_rows(); } // fungsi untuk mengambil data pengunjung dari database public function getVisitors($interval = 'this_month') { switch ($interval) { case 'today': $start_time = strtotime('today'); break; case 'yesterday': $start_time = strtotime('yesterday'); $end_time = strtotime('today'); break; case 'this_month': $start_time = strtotime('first day of this month'); break; case 'this_year': $start_time = strtotime('january 1 this year'); break; default: $start_time = null; break; } if ($start_time) { $this->ci->db->where('visit_time >=', $start_time); if (isset($end_time)) { $this->ci->db->where('visit_time <', $end_time); } } $this->ci->db->order_by('visit_time', 'desc'); $this->ci->db->from('visitors'); $this->ci->db->limit(10); $query = $this->ci->db->get(); return $query->result(); } // fungsi untuk mengambil data jumlah pengunjung untuk ditampilkan di halaman dashboard admin public function getVisitorStats() { $stats = array( 'today' => $this->countVisitors('today'), 'yesterday' => $this->countVisitors('yesterday'), 'this_month' => $this->countVisitors('this_month'), 'this_year' => $this->countVisitors('this_year'), 'total' => $this->countVisitors(), 'online' => $this->countOnlineVisitors() ); return $stats; } }
Langkah 4: Menggunaan library
Setelah library VisitorTracker selesai dibuat, kita dapat menggunakannya pada controller atau model CodeIgniter dengan cara memuat library tersebut menggunakan perintah $this->load->library()
.
Misalnya, pada controller Home, kita ingin menambahkan data pengunjung setiap kali halaman diakses dan menampilkan jumlah pengunjung pada halaman, maka kode controller tersebut akan menjadi seperti berikut:
<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Home extends CI_Controller { public function __construct() { parent::__construct(); $this->load->library('VisitorTracker'); } public function index() { // menambahkan data pengunjung $this->visitortracker->addVisitor(); // mengambil data jumlah pengunjung $visitor_stats = $this->visitortracker->getVisitorStats(); // menampilkan jumlah pengunjung pada halaman $data['visitor_stats'] = $visitor_stats; $this->load->view('home', $data); } }
Contoh penggunaan pada halaman home (application/view/home.php)
.
<h1>Statistik Pengunjung</h1> <table> <tr> <td>Hari Ini</td> <td><?php echo $visitor_stats['today']; ?></td> </tr> <tr> <td>Kemarin</td> <td><?php echo $visitor_stats['yesterday']; ?></td> </tr> <tr> <td>Bulan Ini</td> <td><?php echo $visitor_stats['this_month']; ?></td> </tr> <tr> <td>Tahun Ini</td> <td><?php echo $visitor_stats['this_year']; ?></td> </tr> <tr> <td>Total</td> <td><?php echo $visitor_stats['total']; ?></td> </tr> <tr> <td>Online</td> <td><?php echo $visitor_stats['online']; ?></td> </tr> </table>
Dengan mengikuti langkah-langkah di atas, ada sudah bisa membuat library VisitorTracker.php
yang akan melacak data pengunjung website anda dan menampilkan statiknya.
Namun, perlu diingat bahwa library ini masih membutuhkan penyesuaian lebih lanjut agar sesuai dengan kebutuhan Anda.
Beberapa artikel lain dari blog ini terkait Framework CodeIgniter: