# Ch 2: Intro PHP PHP adalah bahasa server-side. ## Menyembunyikan Jahitan Seperti yang telah kita lihat sebelumny, kita dapat membuat sebuah halaman web HTML, menamakannya dengan file ekstensi `.php`, dan meng-inject kode PHP ke dalamnya untuk menggenerasi isi halaman saat berjalan (on the fly). ### Template PHP Dalam contoh sederhana yang telah kita lihat sejauh ini, menyisipkan kode PHP secara langsung ke halaman HTML adalah pendekatan yang masuk akal. Namun, seiring bertambahnya kode PHP yang kita tulis untuk menggenerasi isi halaman, mengelola kode campuran HTML dan PHP akan menyulitkan. Terdapat pendekatan lebih baik untuk memisahkan kode PHP pada suatu file tersendiri, meninggalkan HTML tidak terpolusi dengan kode PHP. Kunci untuk melakukan pemisahan ini adalah statement `include`. Dengan statement `include`, kita dapat menyisipkan isi dari file lain ke kode PHP pada titik dari statement. Untuk menunjukkan bagaimana ini bekerja, perhatikan contoh berikut: Mulai dengan buat sebuah file baru: `count.php`. Buka file tersebut dan ketikkan kode berikut: ***`count.php`*** ```php <?php $output = ''; for ($count = 1; $count <= 10; $count++) { $output .= $count . ' '; } include 'count.html.php'; ``` Penjelasan dari kode di atas: - Ketimbang meng-`echo` angka 1 sampai dengan 10, script ini akan menambahkan angka ke variabel bernama `$output`. Pada awal dari script, kita menetapkan variabel ini dengan string kosong. - Line `$output .= $count . ' '` mendambahkan setiap angka (diikuti dengan spasi) ke akhir dari variabel `$output`. Operator `.=` adalah cara singkat untuk mengkonkatenasi string ke akhir dari string yang disimpan dalam `$output`. Versi panjangnya: `$output = $output . $count . ' ';`. - Statement `include` menginstruksikan PHP untuk megneksekusi isi dari file `count.html.php` pada lokasi direktori yang sama dengan file script php ini. Kita dapat membayangkan statement `include` sebagai copy dan paste, Kita akan mendapatkan hasil yang sama denganmembuka `count.html.php`, menyalin isinya dan meng-paste isi tersebut ke `count.php` menimpa baris statement `include`. - Akhirnya, perhatikan bahwa kita tidak mengakhiri file `count.php` dengan `?>`. Anda dapat menuliskannya jika Anda menginginkannya, tetapi itu tidak perlu. Jika sebuah file PHP berakhir dengan kode PHP, kita tidak perlu menandakan bahwa kode berakhir; akhir dari file melakukannya untuk kita. Programmer PHP umumnya lebih memliih tidak menuliskannya. Kemudian, buat sebuah file `count.html.php` dan isi dengan kode berikut: ```php ``` File di atas hampir semuanya adalah kode HTML, kecuali pada satu baris yang mengoutput nilai dari variabel `$output`. Ini sama dengan variabel `$output` yang dibuat dengan file `index.php`. Apa yang telah kita buat disini adalah template PHP: sebuah halaman HTML dengan sedikit sisipan kode PHP yang menyisipkan nilai yang digenerasi secara dinamis. Menggunakan template PHP seperti ini memungkinkan kita untuk memisahkan pekerjaan. Bagian desain dapat berfokus pada desain halaman tanpa perlu kuatir kode PHP dan bagian engineering dapat berfokus pada logika kode PHP. ## Permasalahan Keamanan Satu permasalahan dengan memisahkan kode HTML dengan PHP adalah sesorang dapat menjalankan kode `.html.php` tanpa harus meng-`include` kan dalam file PHP terkait. Ini bukanlah masalah besar, tetapi siapa saja dapat mengunjungi `count.html.php` secara langsung. Jika kita mengetikkan `http://localhost/count.html.php` pada web browser, kita tidak akan melihat penghitungan dari satu sampai dengan 10, tetapi kita akan mendapatkan pesan error berikut: `Notice: Undefined variable: output in /home/vagrant/Code/Project/public/count.html.php on line 9`. Bukanlah ide yang baik untuk membolehkan orang ang mengakses web kita untuk menjalankan kode dengan cara yang tidak kita harapkan. Bergantung apa.... Memisahkan file-file berisi kode php ke dalam suatu folder yang tidak bisa diakses langsung oleh pengguna. Statement `include` dapat digunakan untuk menyertakan file yang berada di direktori lain. Bagaimana cara kita meng-include file dalam direktori berbeda? Bagaimana server PHP menemukan file tersebut? Cara paling terlihat adalah dengan menentukan lokasi dari file yang ingin disertakan sebagai path absolute seperti berikut: ``` <?php include 'C:/Program Files/Apache Software Foundation/Apache2.2/protected.html.php'; ?> ``` atau pada Linux: ``` <?php include '/home/vagrant/Code/Project/protected.html.php'; ?> ``` Method di atas kurang baik karena cara tersebut mengikat kode site dengan konfigurasi web server. Idealnya website yang kita buat harus dapat bekerja jika kita memindahkannya ke server lain. Cara lebih baik adalah dengan menggunakan **relative path**. Lokasi dari file relatif ke file sekrang. Ketika kita menggunakan `include 'count.html.php'` ini adalah path relatif. Untuk menyertakan sebuah file dari directori di atasnya, kita dapat menggunakan kode berikut: ``` include '../count.html.php'; ```