{"id":14,"date":"2005-12-17T08:11:00","date_gmt":"2005-12-17T08:11:00","guid":{"rendered":"http:\/\/www.rumahweb.com\/journal\/?p=14"},"modified":"2025-03-14T13:24:59","modified_gmt":"2025-03-14T06:24:59","slug":"membangun-cms-dengan-php-bag2","status":"publish","type":"post","link":"https:\/\/www.rumahweb.com\/journal\/membangun-cms-dengan-php-bag2\/","title":{"rendered":"Membangun CMS dengan PHP Bagian 2"},"content":{"rendered":"\n<p>Di artikel membangun CMS dengan PHP <a href=\"https:\/\/www.rumahweb.com\/journal\/membangun-cms-dengan-php-bag-1\/\" target=\"_blank\" rel=\"noopener\" title=\"\">bagian 1<\/a>, kita telah membahas tentang sistem <em>module <\/em>dan plugin yang bekerja di CMS yang akan kita bangun. Sekarang, kita masih akan melanjutkan pembahasan tersebut, termasuk beberapa fungsi yang akan kita buat. <\/p>\n\n\n\n\n\n<p>Untuk implementasi kali ini, kita akan menggunakan <strong>PHP5rc2<\/strong> dan database <strong>MySQL<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Class SQL<\/h2>\n\n\n\n<p>Class ini berfungsi untuk mengelola koneksi dan perintah SQL ke database.<\/p>\n\n\n\n<p><strong>File:<\/strong> <code>your_site_dir\/inc\/sql.inc.php<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nclass sql {\n\n    public $qcount; \/\/ Menghitung jumlah query yang dibuat\n\n    function __construct() {\n        $this-&gt;qcount = 0; \/\/ Awal jumlah query\n        $db = @mysql_connect($host, $user, $pass, $dbname);\n\n        if ($db) {\n            return $db; \/\/ Koneksi valid\n        } else {\n            die(\"Gagal: \" . mysql_error()); \/\/ Koneksi gagal, tampilkan pesan error\n        }\n    }\n\n    function pilih_db($dbname) {\n        return mysql_select_db($dbname);\n    }\n\n    function perintah($query) {\n        $this-&gt;qcount++;\n        return mysql_query($query);\n    }\n\n    function _fetch_row($id) {\n        return mysql_fetch_row($id);\n    }\n\n    function _fetch_array($id) {\n        return mysql_fetch_array($id);\n    }\n\n    function _insert_id() {\n        return mysql_insert_id();\n    }\n\n    function _affected_rows() {\n        return mysql_affected_rows();\n    }\n\n    function _num_rows($id) {\n        return mysql_num_rows($id);\n    }\n\n    function _fetch_object($id) {\n        return mysql_fetch_object($id);\n    }\n\n    function _mysql_error() {\n        return mysql_error();\n    }\n}\n?&gt;\n<\/code><\/pre>\n\n\n\n<p>Simpan file ini di direktori <code>your_site_dir\/inc\/<\/code> dengan nama <code>sql.inc.php<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">2. Class Konfigurasi<\/h2>\n\n\n\n<p>Class ini menyimpan konfigurasi database.<\/p>\n\n\n\n<p><strong>File:<\/strong> <code>your_site_dir\/inc\/config.inc.php<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nclass config {\n\n    public $hostname;\n    public $user;\n    public $pass;\n    public $namadb;\n\n    function __construct() {\n        $this-&gt;hostname = \"localhost\";\n        $this-&gt;user = \"root\";\n        $this-&gt;pass = \"\";\n        $this-&gt;namadb = \"CMS\";\n    }\n}\n?&gt;\n<\/code><\/pre>\n\n\n\n<p>Simpan di <code>your_site_dir\/inc\/<\/code> dengan nama <code>config.inc.php<\/code>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">3. Class Site<\/h2>\n\n\n\n<p>Class ini mengatur informasi tentang website yang sedang dibangun.<\/p>\n\n\n\n<p><strong>File:<\/strong> <code>your_site_dir\/inc\/site.inc.php<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nclass site {\n\n    public $site;\n\n    function __construct() {\n        global $sql;\n        $purl = parse_url('http:\/\/' . $_SERVER&#091;'HTTP_HOST']);\n        $purl = $purl&#091;'host'];\n        $host = explode('.', $purl);\n\n        $this-&gt;site&#091;'host'] = ($host&#091;0] == 'www') ? $host&#091;1] : $host&#091;0];\n\n        $site_info = $sql-&gt;_fetch_row($sql-&gt;perintah(\"SELECT site_ID, site_name FROM sites WHERE site_host = '{$this-&gt;site&#091;'host']}' LIMIT 1\"));\n\n        $this-&gt;site&#091;'ID'] = $site_info&#091;0];\n        $this-&gt;site&#091;'name'] = $site_info&#091;1];\n        $this-&gt;page();\n    }\n\n    function page() {\n        $this-&gt;site&#091;'page'] = isset($_REQUEST&#091;'page']) ? $_REQUEST&#091;'page'] : \"main\";\n    }\n}\n?&gt;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">4. Class Plugins<\/h2>\n\n\n\n<p>Class ini mengelola daftar plugin yang digunakan di website.<\/p>\n\n\n\n<p><strong>File:<\/strong> <code>your_site_dir\/inc\/plugins.inc.php<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nclass plugins {\n\n    public $pcount = 0;\n    public $plugin_list = &#091;];\n    public $plugin_error = &#091;];\n    public $lcount = 0;\n\n    function __construct($site_id = \"\") {\n        global $sql, $site;\n        if ($site_id == \"\") {\n            $site_id = $site-&gt;site&#091;'ID'];\n        }\n\n        $plugins_list = $sql-&gt;perintah(\"SELECT plugin_ID, plugin_name, plugin_dir, plugin_file FROM plugins WHERE site_ID = '$site_id'\");\n\n        while ($plugin = $sql-&gt;_fetch_object($plugins_list)) {\n            $this-&gt;lcount++;\n            $this-&gt;plugin_list&#091;'plug_ID']&#091;] = $plugin-&gt;plugin_ID;\n            $this-&gt;plugin_list&#091;'plug_name']&#091;] = $plugin-&gt;plugin_name;\n            $this-&gt;plugin_list&#091;'plug_dir']&#091;] = $plugin-&gt;plugin_dir;\n            $this-&gt;plugin_list&#091;'plug_file']&#091;] = $plugin-&gt;plugin_file;\n        }\n\n        if ($this-&gt;pcount == 0) {\n            $this-&gt;load();\n        }\n    }\n\n    function load() {\n        if (is_array($this-&gt;plugin_list)) {\n            for ($i = 0; $i &lt; $this-&gt;lcount; $i++) {\n                $plugin_path = \"{$this-&gt;plugin_list&#091;'plug_dir']&#091;$i]}\/{$this-&gt;plugin_list&#091;'plug_file']&#091;$i]}\/main.plug.php\";\n                if (file_exists($plugin_path)) {\n                    @include($plugin_path);\n                    $this-&gt;pcount++;\n                } else {\n                    $this-&gt;plugin_error&#091;] = \"Plugin file tidak ditemukan: $plugin_path\";\n                }\n            }\n        }\n    }\n}\n?&gt;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">5. Class Core<\/h2>\n\n\n\n<p>Class ini menyatukan semua class yang telah dibuat.<\/p>\n\n\n\n<p><strong>File:<\/strong> <code>your_site_dir\/inc\/core.inc.php<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n@include('inc\/config.inc.php');\n$config = new config();\n\n@include('inc\/sql.inc.php');\n$sql = new sql($config-&gt;hostname, $config-&gt;user, $config-&gt;pass);\n$sql-&gt;pilih_db($config-&gt;namadb);\n\n@include('inc\/site.inc.php');\n$site = new site();\n\n@include('inc\/plugins.inc.php');\n$plugins = new plugins($site-&gt;site&#091;'ID']);\n?&gt;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">6. File Index<\/h2>\n\n\n\n<p>File utama untuk mengakses CMS.<\/p>\n\n\n\n<p><strong>File:<\/strong> <code>your_site_dir\/index.php<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nfunction getmicrotime() {\n    $temparray = explode(\" \", microtime());\n    return $temparray&#091;0] + $temparray&#091;1];\n}\n\n$stime = getmicrotime();\n\n@include('inc\/core.inc.php');\n\n$etime = getmicrotime();\n$ftime = round($etime - $stime, 6);\n?&gt;\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>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. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":53651,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[2,7],"tags":[],"class_list":{"0":"post-14","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-artikel-tutorial","8":"category-web-programming"},"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/www.rumahweb.com\/journal\/wp-content\/uploads\/2025\/03\/banner-Membangun-CMS-dengan-PHP-Bagian-2.png","jetpack_shortlink":"https:\/\/wp.me\/p8n3G7-e","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts\/14","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/comments?post=14"}],"version-history":[{"count":0,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/posts\/14\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/media\/53651"}],"wp:attachment":[{"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/media?parent=14"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/categories?post=14"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rumahweb.com\/journal\/wp-json\/wp\/v2\/tags?post=14"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}