Selasa, 04 Juni 2024

Membuat Visitor Di Website PHP

Assalamualaikum Wr, Wb

Sedikit cerita sebelum ke topik utama, seminggu yang lalu ada rekan meminta tolong untuk menampilkan statistik pengunjung di website, biasanya aku pakai pihak ketiga semisal Histats.com dan ada banyak platform yang menyediakan bisa di searching di google.

Aku mau sharing code membuat statistik pengunjung manual dengan php bisa juga di implementasikan dengan codeigniter, langsung saja langkah langkahnya seperti berikut:


Buat tabel


CREATE TABLE `visitor` (
  `ip` varchar(20) NOT NULL,
  `date` date NOT NULL,
  `hits` int NOT NULL,
  `online` varchar(250) NOT NULL,
  `time` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

Buat code php di File Controller




/ visitor
        $ip    = $this->input->ip_address(); // Mendapatkan IP user
        $date  = date("Y-m-d"); // Mendapatkan tanggal sekarang
        $waktu = time(); //
        $timeinsert = date("Y-m-d H:i:s");
      
        // Cek berdasarkan IP, apakah user sudah pernah mengakses hari ini
        $s = $this->db->query("SELECT * FROM visitor WHERE ip='".$ip."' AND date='".$date."'")->num_rows();
        $ss = isset($s)?($s):0;
        // Kalau belum ada, simpan data user tersebut ke database
        if($ss == 0){
        $this->db->query("INSERT INTO visitor(ip, date, hits, online, time) VALUES('".$ip."','".$date."','1','".$waktu."','".$timeinsert."')");
        }
        // Jika sudah ada, update
        else{
        $this->db->query("UPDATE visitor SET hits=hits+1, online='".$waktu."' WHERE ip='".$ip."' AND date='".$date."'");
        }
        // var_dump($pengunjunghariini);
        // $pengunjunghariini  = $this->db->query("SELECT count(date) as jml FROM visitor WHERE date='".$date."' GROUP BY date")->row(); // Hitung jumlah pengunjung
        $bataswaktu = time() - 300;
        $kemarin  = date("Y-m-d",mktime(0,0,0,date('m'),date('d')-1,date('Y')));
        $pengunjungonline  = $this->db->query("SELECT * FROM visitor WHERE online > '".$bataswaktu."'")->num_rows(); // hitung pengunjung online
        $pengunjunghariini  = $this->db->query("SELECT ip,date FROM visitor WHERE date='".$date."' GROUP BY ip")->num_rows(); // Hitung jumlah pengunjung
        $pengunjungkemarin =$this->db->query('SELECT ip,date FROM visitor WHERE date="'.$kemarin.'" GROUP BY ip')->num_rows();
        $pengunjungbulanini = $this->db->query("SELECT count(date) as bulan FROM visitor WHERE month(date)='".date('m')."' GROUP BY date")->row();
        $dbpengunjung = $this->db->query("SELECT COUNT(hits) as hits FROM visitor")->row(); 
        $totalpengunjung = isset($dbpengunjung->hits)?($dbpengunjung->hits):0; // hitung total pengunjung

        $data['pengunjunghariini']=$pengunjunghariini;
        $data['kemarin']=$pengunjungkemarin;
        $data['bulan']=$pengunjungbulanini->bulan;
        $data['totalpengunjung']=$totalpengunjung;
        $data['pengunjungonline']=$pengunjungonline;


File View



<div class="widget flickr-widget">
    <h1>Statistik Pengunjung</h1>

    <ol class="list-group list-group-numbered">
        <li class="list-group-item d-flex justify-content-between align-items-start">
            
                    Pengunjung Online
            <span class="badge text-bg-success"><?php echo $pengunjungonline ?></span>
        </li>

        <li class="list-group-item d-flex justify-content-between align-items-start">
            Pengunjung Hari ini
            <span class="badge text-bg-primary rounded-pill" style="background-color:#5cb85c; color:#ffffff"><?php echo $pengunjunghariini ?></span>
        </li>
        <li class="list-group-item d-flex justify-content-between align-items-start">
            Pengunjung Kemarin
            <span class="badge text-bg-primary rounded-pill" style="background-color:#337ab7; color:#ffffff"><?php echo $kemarin ?? '0' ?></span>
        </li>
        <li class="list-group-item d-flex justify-content-between align-items-start">
            Pengunjung Bulanan
            <span class="badge text-bg-primary rounded-pill" style="background-color:#ffc107; color:#ffffff"><?php echo $bulan ?></span>
        </li>
        <li class="list-group-item d-flex justify-content-between align-items-start">
            Total Pengunjung
            <span class="badge text-bg-primary rounded-pill" style="background-color:red; color:#ffffff"><?php echo $totalpengunjung ?></span>
        </li>
    </ol>
</div>



Dengan kode di atas tampilan yg dihasilkan akan seperti ini:



Oke semoga bermanfaat happy coding

Tidak ada komentar:
Tulis komentar

Kategori