Rumahweb Journal
banner - Membangun CMS dengan PHP Bagian 2

Membangun CMS dengan PHP Bagian 2

Di artikel membangun CMS dengan PHP bagian 1, kita telah membahas tentang sistem module dan plugin yang bekerja di CMS yang akan kita bangun. Sekarang, kita masih akan melanjutkan pembahasan tersebut, termasuk beberapa fungsi yang akan kita buat.

Untuk implementasi kali ini, kita akan menggunakan PHP5rc2 dan database MySQL.

1. Class SQL

Class ini berfungsi untuk mengelola koneksi dan perintah SQL ke database.

File: your_site_dir/inc/sql.inc.php

<?php
class sql {

    public $qcount; // Menghitung jumlah query yang dibuat

    function __construct() {
        $this->qcount = 0; // Awal jumlah query
        $db = @mysql_connect($host, $user, $pass, $dbname);

        if ($db) {
            return $db; // Koneksi valid
        } else {
            die("Gagal: " . mysql_error()); // Koneksi gagal, tampilkan pesan error
        }
    }

    function pilih_db($dbname) {
        return mysql_select_db($dbname);
    }

    function perintah($query) {
        $this->qcount++;
        return mysql_query($query);
    }

    function _fetch_row($id) {
        return mysql_fetch_row($id);
    }

    function _fetch_array($id) {
        return mysql_fetch_array($id);
    }

    function _insert_id() {
        return mysql_insert_id();
    }

    function _affected_rows() {
        return mysql_affected_rows();
    }

    function _num_rows($id) {
        return mysql_num_rows($id);
    }

    function _fetch_object($id) {
        return mysql_fetch_object($id);
    }

    function _mysql_error() {
        return mysql_error();
    }
}
?>

Simpan file ini di direktori your_site_dir/inc/ dengan nama sql.inc.php.


2. Class Konfigurasi

Class ini menyimpan konfigurasi database.

Promo Hosting Murah Rumahweb

File: your_site_dir/inc/config.inc.php

<?php
class config {

    public $hostname;
    public $user;
    public $pass;
    public $namadb;

    function __construct() {
        $this->hostname = "localhost";
        $this->user = "root";
        $this->pass = "";
        $this->namadb = "CMS";
    }
}
?>

Simpan di your_site_dir/inc/ dengan nama config.inc.php.


3. Class Site

Class ini mengatur informasi tentang website yang sedang dibangun.

File: your_site_dir/inc/site.inc.php

<?php
class site {

    public $site;

    function __construct() {
        global $sql;
        $purl = parse_url('https://' . $_SERVER['HTTP_HOST']);
        $purl = $purl['host'];
        $host = explode('.', $purl);

        $this->site['host'] = ($host[0] == 'www') ? $host[1] : $host[0];

        $site_info = $sql->_fetch_row($sql->perintah("SELECT site_ID, site_name FROM sites WHERE site_host = '{$this->site['host']}' LIMIT 1"));

        $this->site['ID'] = $site_info[0];
        $this->site['name'] = $site_info[1];
        $this->page();
    }

    function page() {
        $this->site['page'] = isset($_REQUEST['page']) ? $_REQUEST['page'] : "main";
    }
}
?>

4. Class Plugins

Class ini mengelola daftar plugin yang digunakan di website.

File: your_site_dir/inc/plugins.inc.php

<?php
class plugins {

    public $pcount = 0;
    public $plugin_list = [];
    public $plugin_error = [];
    public $lcount = 0;

    function __construct($site_id = "") {
        global $sql, $site;
        if ($site_id == "") {
            $site_id = $site->site['ID'];
        }

        $plugins_list = $sql->perintah("SELECT plugin_ID, plugin_name, plugin_dir, plugin_file FROM plugins WHERE site_ID = '$site_id'");

        while ($plugin = $sql->_fetch_object($plugins_list)) {
            $this->lcount++;
            $this->plugin_list['plug_ID'][] = $plugin->plugin_ID;
            $this->plugin_list['plug_name'][] = $plugin->plugin_name;
            $this->plugin_list['plug_dir'][] = $plugin->plugin_dir;
            $this->plugin_list['plug_file'][] = $plugin->plugin_file;
        }

        if ($this->pcount == 0) {
            $this->load();
        }
    }

    function load() {
        if (is_array($this->plugin_list)) {
            for ($i = 0; $i < $this->lcount; $i++) {
                $plugin_path = "{$this->plugin_list['plug_dir'][$i]}/{$this->plugin_list['plug_file'][$i]}/main.plug.php";
                if (file_exists($plugin_path)) {
                    @include($plugin_path);
                    $this->pcount++;
                } else {
                    $this->plugin_error[] = "Plugin file tidak ditemukan: $plugin_path";
                }
            }
        }
    }
}
?>

5. Class Core

Class ini menyatukan semua class yang telah dibuat.

File: your_site_dir/inc/core.inc.php

<?php
@include('inc/config.inc.php');
$config = new config();

@include('inc/sql.inc.php');
$sql = new sql($config->hostname, $config->user, $config->pass);
$sql->pilih_db($config->namadb);

@include('inc/site.inc.php');
$site = new site();

@include('inc/plugins.inc.php');
$plugins = new plugins($site->site['ID']);
?>

6. File Index

File utama untuk mengakses CMS.

File: your_site_dir/index.php

<?php
function getmicrotime() {
    $temparray = explode(" ", microtime());
    return $temparray[0] + $temparray[1];
}

$stime = getmicrotime();

@include('inc/core.inc.php');

$etime = getmicrotime();
$ftime = round($etime - $stime, 6);
?>

Tutorial membangun CMS dengan PHP bagian 2 telah selesai! Pada bagian berikutnya, kita akan membahas tentang sistem autentikasi dan blok sistem. Sampai jumpa di panduan membangun CMS dengan PHP bagian ke 3.

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 2.3 / 5. Vote count: 3

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Cloud Hosting Terbaik Rumahweb
banner pop up - Pindah Hosting ke Rumahweb