Download eBook/Audiobook Indonesia Gratis: http://myebookyourebook.blogspot.

com/

    Menjadi WebMaster  Dalam 30 Hari 

By Rio Astamal © Copyright 2005-2006 www.rahasia-webmaster.com ™

Hak Cipta Menjadi WebMaster Dalam 30 Hari
E-book Menjadi Webmaster Dalam 30 Hari merupakan hasil kerja keras penulis. Dilarang keras untuk untuk menggandakan, mereproduksi, atau menyebarluaskan e-book ini tanpa ijin tertulis dari saya Rio Astamal selaku penulis. E-book ini hanya dipublikasikan secara resmi melalui situs www.rahasia-webmaster.com. Semua materi dan gambar yang terdapat pada e-book ini merupakan hak cipta dari penulis. Anda dapat memperoleh penghasilan instan dengan mengikuti program reseller kami. Setiap member baru yang masuk lewat rekomendasi anda. Maka secara otomatis anda akan memperoleh komisi 50% dari harga produk kami. Penting!, jika anda menemukan situs atau orang yang menawarkan, mereproduksi dan menjual e-book ini tanpa melalui sistem reseller kami. Saya mohon dengan sangat kepada anda untuk melaporkannya kepada saya. Akan ada bonus spesial dari saya untuk anda atas kesediaan anda melaporkan hal tersebut. Kirim laporan anda ke email saya di admin@rahasia-webmaster.com. © Copyright 2005-2006 www.rahasia-webmaster.com Hak Cipta Dilindungi oleh Undang-undang

Alamat Download Materi E-book
Semua materi dan source code yang dibahas pada e-book ini dapat anda download di alamat: http://materi.rahasia-webmaster.com/

Tentang Materi
Semua source kode yang ada pada e-book ini telah saya tes dan bekerja. Akan tetapi mungkin dalam penyalinan ke e-book ini ada suatu kesalahan yang menyebabkan script tersebut tidak bekerja. Oleh karena itu, jika dalam e-book ini ada source code yang error atau tidak bisa jalan. Saya mohon anda untuk segera memberitahukan kepada saya error tersebut agar dapat segera saya update. Laporkan error tersebut ke bug@rahasia-webmaster.com. Ketika anda mengirimkan e-mail laporan, mohon cantumkan file pada hari dan bab keberapa yang terdapat error didalamnya. Terima Kasih.

Merek dagang
Semua merek dagang yang disebutkan dalam e-book ini merupakan Hak Cipta dari masingmasing vendor pembuatnya. Microsoft Windows, Windows 98, Windows 2000, Windows XP, MS-DOS, Microsoft Notepad, Internet Explorer merupakan merek dagang dari Microsoft Corp. Adobe, Adobe Acrobat, Adobe Acrobat reader, Adobe Photosop merupakan merek dagang dari Adobe Systems Inc.

ii

AceFTP, AceFTP 3 Freeware, AceFTP 3 Pro merupakan merek dagang dari Visicom Media Inc.

Special Thanks To:
"I say a lot of thanks to everyone that have supported my hard work. Especially to all my closest friends for their support to me. Thanks guys." ***************

iii

Kata Pengantar
Puji syukur saya panjatkan kehadirat Allah SWT. Karena hanya dengan rahmat dan ridhoNya saya dapat menyelesaikan e-book “Menjadi Webmaster Dalam 30 Hari”. Saya ucapkan terima kasih kepada orang-orang yang disekitar saya atas support yang telah mereka berikan. Dalam e-book ini anda akan mengetahui bagaimana menjadi seorang webmaster. Dan cara membuat website yang bisa “menjual” informasi yang anda buat sehingga dapat menghasilkan profit untuk anda. Dalam e-book ini software-software yang akan kita gunakan sifatnya Free dan Open source. Diantaranya PHP, MySQL, Apache dan phpMyAdmin. Alasan kita menggunakan softwaresoftware tersebut sudah jelas karena selain handal software tersebut bersifat gratis. Selain keempat software yang telah disebutkan, ada beberapa software tambahan yang sifatnya opsional. Artinya anda dapat install atau tidak. Namun jika anda anda benar-benar ingin merubah komputer anda menjadi server virtual saya sarankan untuk menginstall program seperti Mail Server (hMailServer). Cara pandang buku ini sedikit berbeda dengan buku lainnya. Dimana kebanyakan buku hanya mengajarkan teori saja tanpa penerapan contoh yang nyata. Sehingga pembaca kurang bisa mengaplikasikan ilmunya setelah membaca. Untuk itu pada buku ini anda akan diajarkan teori terlebih dahulu lalu anda akan dihadapkan pada sebuah masalah yaitu membangun sebuah proyek website yang memiliki komponen cukup lengkap. Seperti sistem member, sistem reseller, admin area dan masih banyak lainnya. E-book ini disusun bab demi bab sesuai dengan tingkat kesulitan dan terdapat sub bab dari mulai hari ke 1 hingga hari ke 30. Sehingga tepat pada hari ke 30 anda diharapkan sudah dapat menguasai semua materi pada e-book ini. Pada bab 1 akan dibahas dasar-dasar HTML dan PHP. Pada bab 2 anda akan diajarkan teknik PHP lebih lanjut yaitu fungsi dan pemrograman berorientasi objek. Bab 3 akan membahas penggunaan MySQL dan phpMyAdmin. Keamanan dan contoh-contoh aplikasi dikupas pada Bab 4. Pada Bab 5 anda akan diajarkan bagaimana membuat website yang "menjual" dan contoh websitenya yaitu menggunakan sistem reseller. Pada bab terakhir yaitu Bab 6 membahas bagaimana mengupload file kita ke server sekaligus mengkonfigurasi website kita pada server. Saya harap dengan hadirnya e-book ini dapat memajukan pengetahuan masyarakat Indonesia khususnya dalam bidang Teknologi Informasi (TI).

Surabaya, Desember 2005 Penulis

iv

Daftar Isi
Kata Pengatar........................................................................................................... Daftar Isi................................................................................................................. Pendahuluan............................................................................................................. iv v ix 1 2 2 2 3 5 6 7 12 12 12 13 15 16 21 24 24 24 25 25 28 34 34 34 34 34 36 36 36 39 39 40 40 42 43 46 46 48 49 51 55 55 55 58 61 62 63 63

Bab 1 HTML dan PHP ...........................................................................................
Hari ke-1 HTML...................................................................................................................... Menggunakan HTML............................................................................................. Manipulasi Font dan Link....................................................................................... Membuat Tabel.................................................................................................... CSS (Cascading Style Sheet)................................................................................. Form HTML......................................................................................................... Hari ke-2 PHP......................................................................................................................... Variabel Pada PHP................................................................................................ Jangkauan (Scope) Variabel.................................................................................. Komentar Pada PHP............................................................................................. Struktur Kontrol(if...else...)................................................................................... Operator............................................................................................... Hari ke-3 Operator Kombinasi.............................................................................................. Operator Perbandingan......................................................................................... Operator Logika................................................................................................... Struktur Kontrol (if...elseif, switch...)...................................................................... Perulangan (for..., foreach..., while..., do...while)..................................................... Hari ke-4 File dan Array........................................................................................................... File.......................................................................................................................... Menyimpan File................................................................................................... Membuka File...................................................................................................... Menulis File........................................................................................................ Menutup File....................................................................................................... Membaca dari File................................................................................................ Menghapus File................................................................................................... Array...................................................................................................................... Array dengan Index Numerik................................................................................. Looping dalam Array Index Numerik................................................................. Array dengan Index String.................................................................................... Looping dalam Array Index String.................................................................... Array Multidimensi............................................................................................... Array 2D....................................................................................................... Array 3D....................................................................................................... Fungsi-fungsi pada Array...................................................................................... Membaca Array dari File....................................................................................... Hari ke-5 Manipulasi String dan REGEX...................................................................................... Memformat String..................................................................................................... Mengubah Format Huruf pada String...................................................................... Format Angka..................................................................................................... Mencari String..................................................................................................... Mengganti String................................................................................................. Regular Expression (REGEX).......................................................................................

v

REGEX untuk Validasi Email.................................................................................. Mencari String dengan REGEX............................................................................... Mengganti String dengan REGEX........................................................................... Menggunakan Ulang Kode.......................................................................................... Menggunakan require() dan include()....................................................................

65 65 66 66 67

Hari ke-6 70 Proyek Aplikasi Bab 1 – Minimarket Online................................................................... 70

Bab 2 – Fungsi, OOP, dan Teknik PHP Lainnya...................................................... 86
Hari ke-7 Fungsi..................................................................................................................... Definisi Fungsi..................................................................................................... Memanggil Fungsi................................................................................................ Penamaan Fungsi................................................................................................ Mengapa Harus Membuat Fungsi Buatan Sendiri....................................................... Scope(Jangkauan)................................................................................................ Menghentikan Eksekusi Fungsi............................................................................... Mengembalikan Nilai dari Fungsi............................................................................ Penerapan Teori Fungsi......................................................................................... OOP (Object Oriented Programming)........................................................................... Konsep OOP......................................................................................................... Membuat Class..................................................................................................... Variabel $this....................................................................................................... Properti private, public dan protected............................................................. Memanggil Class................................................................................................... Inheritance(Pewarisan)......................................................................................... Penerapan Teori Class........................................................................................... 87 87 87 87 88 89 90 91 92 93 94 95 95 96 96 97 97 98

Hari ke-8 103 Teknik PHP Lainnya................................................................................................... 103 Tanggal dan Waktu.............................................................................................. 103 Session Pada PHP................................................................................................ 108 Cookie........................................................................................................... 108 PHP Session................................................................................................... 109 Hari ke-9 114 Teknik PHP Lainnya(2)............................................................................................... 114 Menggunakan $_GET........................................................................................... 114 Upload File......................................................................................................... 115 Direktori dan File................................................................................................. 118 Hari ke-10 122 Proyek Aplikasi Bab 2 – Java Online News.................................................................... 122

Bab 3 – MySQL, phpMyAdmin, dan Mengakses MySQL Menggunakan PHP............. 144
Hari ke-11 144 MySQL..................................................................................................................... 144 Menggunakan MySQL........................................................................................... 145 Membuat Database.............................................................................................. 146 Mengaktifkan Database........................................................................................ 147 Membuat Tabel................................................................................................... 149 Memasukkan Data ke Database............................................................................. 149 Mendapatkan Data dari Database.......................................................................... 151 Mengupdate Record pada Database....................................................................... 153 Meng-Alter Tabel................................................................................................. 153 Menghapus Record pada Database......................................................................... 155

vi

Menghapus Tabel............................................................................................... Menghapus Database......................................................................................... Teknik MySQL Lainnya........................................................................................ User Privilige.....................................................................................................

155 155 156 159

Hari ke-12 162 phpMyAdmin............................................................................................................ 162 Mengenal phpMyAdmin........................................................................................ 162 Mengenal Berbagai Tab phpMyAdmin..................................................................... 163 Mengakses MySQL Menggunakan PHP.......................................................................... 168 Langkah-langkah Mengakses Database Lewat PHP.................................................... 168 Melakukan Koneksi ke MySQL................................................................................ 168 Memilih Database................................................................................................. 169 Melakukan Query pada Database............................................................................ 169 Menampilkan Hasil Query...................................................................................... 169 Menutup Koneksi................................................................................................. 170 Fungsi-fungsi Lain................................................................................................ 170 Penerapan Teori Mengakses MySQL Menggunakan PHP............................................. 171 Hari ke-13 dan 14 176 Proyek Aplikasi Bab 3 – Java Kids Foundation.............................................................. 176

Bab 4 – Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi............ 218
Hari ke-15 219 Masalah Keamanan................................................................................................... 219 Seberapa Penting Informasi Anda?......................................................................... 219 Ancaman Keamanan............................................................................................ 219 Enkripsi Data...................................................................................................... 222 Secure Login....................................................................................................... 224 Firewall.............................................................................................................. 228 Error Handling.......................................................................................................... 229 Programming Error............................................................................................. 229 Syntax Error................................................................................................. 229 Run Time Error.............................................................................................. 230 Logic Error.................................................................................................... 232 Hari ke-16 dan 17 235 Contoh-contoh Aplikasi............................................................................................. 235 NgawurPolling.localhost....................................................................................... 235 Hari ke-18,19 dan 20 277 ForumBareng.localhost.......................................................................................... 277 Hari ke-21, 22, 23, dan 24 340 SuperIklan.localhost............................................................................................ 340

Bab 5 – Memulai Bisnis di Internet, Web Design dan Membuat

Website Reseller...................................................................................... 415

Hari ke-25 416 Memulai Bisnis di Internet.......................................................................................... 416 Menciptakan Produk untuk Dijual.......................................................................... 416 Membuat File E-book (PDF).................................................................................. 419 Mengotomatiskan Bisnis Anda............................................................................... 419 Meta Tags.......................................................................................................... 430 Strategi Promosi................................................................................................. 431 Web Design.............................................................................................................. 433

vii

Hari ke-26, 27, 28, dan 29 439 LadangBisnis.localhost(website reseller)................................................................ 439

Bab 6 – Upload File, Konfigurasi Website, dan Domain dan Web Hosting.............. 536
Hari ke-30 537 Upload File............................................................................................................... 537 Pengertian Upload.............................................................................................. 537 Software FTP..................................................................................................... 537 Memilih Web Hosting Gratisan.............................................................................. 539 Trik Menyiasati Nama Domain.............................................................................. 542 Konfigurasi Website................................................................................................... 547 Mengupload File................................................................................................ 554 Domain dan Web Hosting........................................................................................... 557 Penutup................................................................................................................. 559 **********

viii

Pendahuluan
Untuk Siapa E-book Ini?
Buku ini ditujukan bagi anda yang belum pernah mengenal programming atau anda yang sudah mengenal programming namun ingin lebih meningkatkan kemampuan anda. Dan mereka yang ingin menghasilkan profit dari internet. Untuk memahami konsep e-book ini dengan lebih baik. Anda diharapkan sudah mengenal apa itu internet, email, dan pengetahuan dasar komputer lainnya. Namun syarat terpenting hanyalah kemauan anda untuk mempelajari e-book harus tinggi. Itu saja!.

Apa itu HTML?
HTML(Hyper Text Markup Language) adalah sekumpulan simbol-simbol atau tag-tag yang dituliskan dalam sebuah file yang dimaksudkan untuk menampilkan halaman pada web browser. Tag-tag tadi memberitahu browser bagaimana menampilkan halaman web dengan lengkap kepada pengguna. Tag-tag HTML selalu diawali dengan <x> dan diakhiri dengan </x> dimana x tag HTML seperti b, i, u dan sebagainya.

Apa Itu PHP ?
PHP adalah bahasa server-side scripting yang didesain khusus untuk web. Pada halaman HTML anda dapat menempelkan(embed) kode PHP. Kode PHP dieksekusi di sisi server bukan di komputer klien. Dan hasil yang ditampilkan adalah kode HTML. PHP merupakan hasil kerja seorang bernama Rasmus Lerdorf pada 1995. Namun kemudian PHP berkembang dan tidak hanya merupakan proyek pribadi Rasmus. PHP ditulis ulang dan dengan banyak menambahkan fungsi-fungsi baru oleh Zeev Suraski dan Andi Gutmants (disingkat Zend) dan lahirlah PHP 3 pada 1998. PHP masih terus dikembangkan, pada tahun 2002 PHP hadir dengan versi ke 4. PHP 4 dilengkapi dengan Zend Engine dan mengalami banyak peningkatan performa. Dan yang paling akhir pada tahun 2005 PHP 5 hadir dengan dukungan Zend Engine 2. Banyak fitur baru khususnya pada OOP(Object Oriented Programming) dan XML.

Apa Itu MySQL?
MySQL adalah program relational database management system (RDMS) yang bersifat free dan open source. MySQL sangat cepat, gratis, mudah dikonfigurasi, mudah dipelajari dan tersedia source codenya. Itulah beberapa kelebihan utama dari MySQL dibanding RDMS komersial yang ada. MySQL menggunakan SQL (Structured Query Language) yang merupakan standar global dalam management dabatase.

Apa Itu Apache?
Apache adalah HTTP web server yang bersifat free dan open source. Oleh karena itu penggunaannya biasanya dibarengkan dengan PHP dan MySQL. Denga apache komputer kita seolah-olah menjadi sebuah server yang menangai request dari klien.

ix

Apa Itu phpMyAdmin?
phpMyAdmin adalah kumpulan script PHP yang dijalankan pada browser yang fungsinya untuk administrasi database MySQL. Dengan menggunakan phpMyAdmin kita lebih mudah dalam melakukan manipulasi database karena phpMyAdmin menyediakan user interface yang baik.

Apa Saja Yang Dibutuhkan?
Untuk dapat mempelajari e-book ini minimal software-software yang diperlukan adalah: PHP > 4.3.x MySQL > 4.x Apache 2.x Apache 1.3.x phpMyAdmin 2.6.x PHP DESIGNER 2006 hMailServer > 4.x (Versi Penulis 5.1.2) (Versi Penulis 5.0.16) (Windows 2000/XP/2003) (Versi Penulis 2.0.54) (Windows 98) (Versi Penulis 1.3.34) (Versi Penulis 2.6.1) (opsional) (opsional) (Versi Penulis 4.2 build 195)

Semuanya GRATIS. Meskipun anda saat ini sudah memiliki PHP versi 4.3.x itu tidak masalah. Karena penulisan pada e-book ini juga mengutamakan kompatibilitas pada versi sebelumnya. Software yang bersifat opsional artinya software tersebut tidak mutlak harus anda miliki. Namun akan lebih baik jika anda memilikinya. Jika anda mengetik kode menggunakan notepad itu sudah cukup. Namun sangat riskan terjadi kesalahan syntax karena tidak ada pewarnaan kode. Dengan PHP DESIGNER kode-kode yang anda ketikkan akan diberi warna secara otomatis sesuai dengan jenisnya. Anda juga dapat mengkonfigurasi sendiri warnanya sesuai keinginan anda.

Apa itu hMailServer?
hMailServer adalah program yang mail server yang bersifat free dan open source untuk sistem operasi Windows. Karena pada aplikasi web biasanya menggunakan email. Maka dengan hMailServer komputer kita dapat menjadi mail server virtual sekaligus klien. Dengan demikian seolah-olah kita mengirim dan menerima email dari dan ke internet. Padahal proses tersebut hanya terjadi pada komputer kita saja(lokal).

Alamat Download
Berikut ini adalah alamat download dari masing-masing software: Software PHP MySQL Apache phpMyAdmin PHP DESIGNER 2006 hMailServer Alamat Download http://www.php.net/ http://www.mysql.com/ http://httpd.apache.org/ http://www.phpmyadmin.net/ http://mpsoftware.dk/ http://www.hmailserver.com/

Jika anda merasa malas mendownload anda dapat memesan software-software diatas kepada saya dalam bentuk CD. Caranya masuk pada member area, buka halaman pesan CD dengan mengklik link pesan cd. Isi dari CD tersebut antara lain: 1. PHP 5.1.2 (Windows + Linux)

x

2. 3. 4. 4. 5. 6. 7. 8. 9.

Apache 2.0.54/1.3.34 (Windows), Apache 2.0.55 (Linux) MySQL 5.0.16 (Windows), MySQL 5.0.18 (Linux) phpMyAdmin 2.6.x Dokumentasi instalasi hMailServer 4.2 build 195 PHP DESIGNER 2006 E-book "Menjadi Webmaster Dalam 30 Hari" E-book "Mastering Kode HTML" AceFTP 3 Free Edition (Software FTP)

( Isi dari CD dapat berubah sewaktu-waktu sesuai dengan rilis terbaru dari masing-masing vendor )

Instalasi dan konfigurasi
Pada bagian instalasi dan konfigurasi ini kita bagi dalam dua bagian. Yang pertama adalah untuk sistem operasi Microsoft Windows dan yang kedua adalah untuk Linux kernel > 2.4.x. NB: Pada contoh instalasi di e-book ini menggunakan versi PHP, MySQL, dan Apache yang telah disebutkan sebelumnya. Ketika anda membaca e-book ini mungkin versi rilis yang disediakan berbeda dengan versi yang digunakan pada contoh ini. Saya sarankan anda menggunakan versi rilis yang up to date. Meskipun demikian langkahlangkah instalasinya tidak jauh berbeda dengan yang digunakan pada ebook ini. Jika anda ingin menggunakan versi software yang digunakan di e-book ini anda dapat mendownload di alamat: PHP 5.1.2 : http://www.php.net/get/php-5.1.2-Win32.zip/from/a/mirror Apache 2.0.54/1.3.34 : http://archive.apache.org/dist/httpd/binaries/win32/ Pada contoh contoh instalasi ini PHP 5.1.2 mewakili PHP versi 5. Apache 2.0.54 mewakili Apache versi 2.0.x. Sedangkan Apache 1.3.34 mewakili Apache versi 1.3.x. Untuk dokumentasi dari instalasi versi terbaru silahkan kunjungi: http://materi.rahasia-webmaster.com/

Windows
Instalasi Apache 2.0.54 (Windows 2000/XP/2003)
File yang saya gunakan adalah apache_2.0.54-win32-x86-no_ssl.msi. Untuk instalasi apache sangat mudah karena hanya tinggal klak-klik saja seperti software windows pada umumnya. Ikuti langkah-langkah berikut: 1. 2. 3. 4. 5. 6. 7. 8. 9. Setelah anda download file instalasinya klik dua kali file tersebut. Klik Next > Pilih I Accept .... Klik Next > klik Next > Pada Network Domain Isikan dan Server Name Isikan domain anda misalnya localhost Pada Administrator Email isikan email anda. Ini tidak penting jika anda hanya menggunakan secara personal bukan untuk publik. Klik for All User, On Port .... Klik Next > Pilih Typical, klik Next > Klik Change... pada Isian folder name ganti C:\Program Files\Apache Group\ dengan C:\ klik OK(nantinya Apache akan membuat folder C:\Apache2 secara otomatis) Klik Next > klik Install (Proses instalasi dimulai) Klik Finish jika sudah selesai

xi

Pada Apache 1.exe.1: Halaman utama apache Agar file-file PHP kita nantinya dapat diproses oleh Apache maka kita perlu meletakkannya pada direktori C:\Apache2\htdocs. Jika hijau artinya server apache sedang berjalan.0. Masuk pada direktori C:\Apache double klik file Apache.1/ 3.0. Pada address bar ketikkan http://localhost/ atau http://127.0.34-win32-x86-no_src.3. Jika merah berarti server apache tidak aktif. Klik tombol Unblock agar Windows Firewall tidak memblok program apache.0.Setelah proses instalasi selesai akan muncul ikon Apache Monitor (bulu merah dan segitiga hijau). Untuk mengetesnya buka windows explorer. Atau xii . Buka browser anda (Misalnya Internet Explorer) 2.exe untuk mengeksekusinya.54 pada windows 2000/XP/2003. Maka akan muncul halaman seperti ditunjukkan gambar 1. Langkah-langkah untuk instalasi apache 1.34 pada windows 98 sama dengan Apache 2.exe. Anda akan menemui window peringatan apakah Apache diperbolehkan menerima koneksi dari network. Ikuti langkah-langkah berikut. Gambar 1.0.34 nama direktori penginstalan bukan C:\Apache2 melainkan C:\Apache.1 NB: Jika anda menggunakan Windows XP Service Pack 2. 1.3. Pada browser jika anda mengetik http://localhost/ atau http://127.1/ maka sama saja anda membuka direktori C:\Apache2\htdocs.0.34 (Windows 98) File yang saya gunakan untuk instalasi ini adalah apache_1.3. Instalasi Apache 1.0. Untuk mengetes apakah Apache berjalan dengan baik atau tidak.3.

Dan pesan yang ditampilkan kurang lebih bertuliskan seperti berikut. Service Name pilih MySQL 12.16-win32.. Pada isian New root password ketikkan password yang ingin anda gunakan untuk masuk ke MySQL sebagai root(pemegang hak kuasa) 15.. klik Next > Pilih Multifunctional Database. Setelah itu tahan tombol Ctrl kemudian tekan tombol C.0\ dengan C:\MySQL5. 1. Beri Cek pada Modify Security Settings 14. Beri Cek pada Enable TCP/IP Networking pastikan port numbernya 3306. Untuk mengetesnya masuk pada command prompt caranya klik Start > Run > ketik cmd lalu klik OK. > Arahkan ke C:\MySQL5. Pilih Developer Machine 8. Jangan beri cek untuk Create An Anonymous Account 17. klik Next > Pilih Detailed Configuration.exe > klik OK > Kembali ke Window pesan error MySQL klik tombol Retry untuk mengulangi. Klik Custom. Beri Cek pada Enable Strick Mode. Double klik file instalasi yang telah anda download 2.exe yang menggunakan port 3306. Klik tombol minimize saja untuk meminimize window tersebut. Klik Start > Run ketik command [ENTER] ketik cd \ [ENTER] untuk berpindah ke direktori paling atas ketik cd C:\Apache [ENTER] untuk masuk ke direktori C:\Apache ketik apache [ENTER] untuk mengeksekusi file Apache. Klik Change . Namun untuk windows 98 anda harus mendownload versi full. 4.34 (Win32) running.. 2. Jangan tutup window tersebut. klik Next >. Setelah itu muncul window Setup Wizard pilih Skip Sign-Up lalu klik Next > 6. Ulangi pada Confirm 16.0 klik OK 4. Pada command prompt ketik cd \ [ENTER] agar kita kembali ke direktori root(paling atas). Klik Next >.. Pada isian folder name ganti C:\Program Files\MySQL\MySQL Server 5. Muncul Window Baru. klik Next > klik Execute > Klik Finish untuk mengakhiri instalasi 18.exe dieksekusi maka server apache akan segera dijalankan. xiii .msi. 3. Restart komputer anda agar semua setting dapat berjalan NB: Jika anda menggunakan Windows XP SP 2 mungkin akan muncul pesan error ketika anda menekan tombol Execute. Beri Cek pada Include Bin Direktori in Windows PATH (agar kita dapat memanggil mysql dari command prompt) klik Next > 13. pergi ke Control panel > Windows Firewall > klik Tab Exceptions > klik Add Program. Karena jika anda tutup service Apache juga ikut dimatikan. Instalasi MySQL lebih rumit dibanding Apache untuk itu ikuti langkah-langkah berikut dengan seksama: 1. Hal itu ditandai dengan munculnya MS-DOS Window yang bertuliskan APACHE.0\bin pilih mysqld-nt.3. 10. Untuk mengatasinya. Instalasi MySQL 5.16 (Windows 2000/XP/2003) File yang saya gunakan untuk instalasi ini adalah mysql-essential-5. Window APACHE secara otomatis akan hilang. klik Next >. Beri Cek pada Install As Windows Service. 3. klik Next > 11.exe Setelah file apache. klik Install untuk memulai proses instalasi 5. klik Next > Klik Next 9. Hal ini disebabkan karena Windows Firewall memblok service mysqld-nt. beri tanda cek Configure MySQL Server now lalu klik Next > 7. Untuk mematikan service dari Apache aktifkan dulu window APACHE..1.0. Apache/1.. Versi essential merupakan instalasi dengan kelengkapan minimal.0. Klik Next > .

2. Loh error kok malah benar?.0. 8. Anda dapat menjalankan server MySQL dengan menjalankan file mysqld.0. Gambar 1. 1. Ketik mysql [ENTER] jika ada error ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO) 7. Klik Start > Run ketik command lalu ENTER. 10. Jika ya lanjut ke no. Jika password benar maka anda akan ke MySQL Monitor yang ditandai dengan prompt mysql> ketik \h untuk bantuan atau \q untuk keluar dari MySQL monitor 11.0.0\Bin lewat Windows Explorer. Oleh karena itu jika anda pengguna windows 98 anda harus mendownload versi full yang ukuran filenya lebih besar namun lebih komplit. Masuk pada direktori C:\MySQL5. MySQL Monitor ditunjukkan oleh gambar 1.16 (Windows 98) Berdasarkan hasil test.0\bin [ENTER] xiv .2: Tampilan MySQL Monitor Pembahasan lengkap mengenai MySQL akan kita pelajari pada Bab 3. Jika mau Anda dapat membuat shorcutnya di desktop.16 versi essential tidak dapat berjalan di Windows 98.2. Instalasi MySQL 5. jika belum klik kanan My Computer > Properties > Advanced > Environment variabels > Double klik path pada system variabels. Masukkan password anda yang anda gunakan pada waktu instalasi tadi lalu tekan ENTER. Restart komputer anda kemudian lanjutkan ke langkah 6 6.0\BIN (Setiap direktori dibatasi titik koma) 5.C:\MySQL5. MySQL 5.0\bin caranya ketik cd MySQL5. Tambahkan data berikut . Untuk memastikan direktori C:\MySQL5.0\bin ada pada daftar. Setelah muncul DOS Prompt ketik cd \ [ENTER] untuk ke direktori paling atas. Karena MySQL tidak dapat berjalan sebagai service di windows 98. Hanya saja pada Windows 98 langkah instalasinya hanya sampai langkah ke-12. Itu berarti user Anonymous tidak dapat mengakses MySQL dan hanya root yang bisa. PATH [ENTER] kemudian cari apakah direktori C:\MySQL5. 2.0\bin\ ada pada environment windows ketikkan perintah berikut 3. Langkah-langkah instalasi MySQL 5. 4. Itu berarti benar.exe yang ada di direktori C:\MySQL5.0.16 pada windows 98 tidak jauh beda dengan windows 2000/XP.0. ketikkan perintah berikut C:\>mysql –u root –p [ENTER] Maka akan muncul pertanyaan ENTER PASSWORD: 9. 6. Alternatif lain adalah dengan menggunakan MS-DOS Prompt. Maka untuk menjalankan server MySQL anda harus memanggilnya secara manual.

Tahan tombol Alt lalu tekan F pilih Save. 9. 6.exe anda tentu harus berpindah-pindah direktori terlebih dahulu.0\\bin\\mysqld. Turun tangan disini hanya sebatas mengedit beberapa file konfigurasi. pada C:\> ketik perintah berikut edit autoexec.2-Win32.1. 4.exe dengan mengetik mysqld [ENTER] 4.exe ke dalam daftar filefile yang dieksekusi saat windows startup.exe atau Apache.bat [ENTER] 3. Simpan dengan mengklik menu File > Save Tentukan lokasi penyimpanan sesuai keinginan anda Pada Save As Type pastikan pilihannya All Files Pada isian File Name: isikan server. Karena jika anda salah mensetting registry akibatnya sangat fatal yaitu Windows tidak bisa dijalankan. Kita lebih memilih dalam bentuk ZIP karena fitur-fitur yang didukung PHP lebih banyak daripada versi Installer.3. Untuk mengetes server MySQL telah aktif ketik mysql [ENTER] 5.2 File yang saya gunakan adalah php-5.0\BIN. Ikuti langkah-langkah instalasi berikut: xv .3. Jika anda ingin mengetahui lebih tentang registry silahkan cari sendiri di Internet lewat search engine.exe" "Apache 1.reg lalu klik Save Jalankan Windows Explorer arahkan ke tempat dimana anda menyimpan file tersebut Double klik file tersebut untuk menjalankannya Pada dialog pertanyaan klik Yes kemudian klik OK. pindah ke direktori paling atas dengan perintah cd \ [ENTER] 2. Kemudian ketik script berikut REGEDIT4 [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run] "MySQL5. Ada beberapa bagian instalasi PHP yang menuntut anda untuk "turun tangan" secara manual.0\bin dan C:\Apache dapat dikenali di seluruh lingkungan DOS. untuk menyimpan file. Agar direktori C:\MySQL5.C:\Apache 4. Sebelum mengeksekusi MySQL. Caranya.2 sebelumnya. Jika berhasil anda akan masuk pada MySQL Monitor seperti gambar 1.. Jika anda ingin server otomotis berjalan ketika Windows startup kita dapat memasukkannya ke dalam registry windows. Jika anda lebih suka mengaktifkan server lewat MS-DOS Prompt daripada windows Explorer.0. Langkah-langkahnya adalah sebagai berikut: 1.C:\MySQL5.1. 5. Saran saya sebelum mengutak-atik registry windows backuplah data-data penting anda.34"="C:\\Apache\\Apache. 7.exe dan apache. Instalasi PHP 5. Kita perlu menset sistem PATH windows pada file autoexec. Tambahkan baris perintah berikut SET PATH=C:\WINDOWS. Khusus Pengguna Windows 98 Script diatas bertujuan untuk memasukkan mysqld. 8. 1.0 Server"="C:\\MySQL5.exe" 3. Ekeskusi file mysqld. Hal tersebut tentu kurang efesien.C:\WINDOWS\COMMAND. 5.bat..zip.0\BIN dan C:\Apache tanpa harus masuk pada direktori tersebut. Jalankan program notepad klik Start > Run ketik notepad [ENTER] 2. Restart komputer anda. Sekarang anda dapat mengeksekusi semua file pada direktori C:\MySQL5.

Konfigurasi Apache 2. kemudian ikuti langkah-langkah berikut: 1.1. Cari baris dengan tuisan berikut extension_dir = ".php # Untuk pewarnaan source code PHP AddType application/x-httpd-php-source ..ini untuk mengeditnya Cari baris dengan tulisan berikut .dll" AddType application/x-httpd-php . masih ada satu file lagi yang akan kita edit.ini Double klik php. klik Extract pada toolbar Pastikan Anda memilih All Files/folders in archieve Pada isian Extract to isikan C:\php5..1.html.1.2 lalu klik Extract Masuk pada direktori C:\php5.extension=php_mbstring.ini-dist menjadi php.1. Sudah selesai? Belum.2\includes" Hilangkan juga titik komanya 8.1. 2.1.1. Cari bagian extention lalu hilangkan tanda . 7.. (titik koma) didepan extention-extention berikut: .phps # Letak direktori file php. 6. Cari bagian Directoryindex yang berisi tulisan berikut DirectoryIndex index.var Tambahkan hingga menjadi seperti berikut xvi . Tanpa mengedit file ini script PHP tidak akan bisa diproses.2/php5apache2. 4.ini yang ada pada direktori c:\php5. Cari bagian LoadModule pada bagian bawah tambahkan kode berikut # Module untuk PHP 5 LoadModule php5_module "C:/php5.html index.1.conf yang ada di direktori C:\Apache2\conf dengan notepad.54 (Windows 2000/XP/2003) Buka file httpd.include_path = ".2 ke direktori c:\windows. 3.c:\php\includes" Ganti dengan include_path = ".c:\php5. File ini adalah file konfigurasi Apache. Extract file instalasi menggunakan winzip atau program sejenis Misalnya Winzip Double klik file instalasi.0. Anda perlu mengkopi file php. Simpan kembali dengan mengklik File > Save Untuk Windows 98 Setelah kesembilan langkah tersebut selesai anda ikuti.dll menjadi extension=php_mysql..dll 10.dll .ini PHPIniDir "C:/php5.dll menjadi extension=php_mbstring. rename file php..2\ext" 9.extension=php_mysql.2" 2./" Ganti dengan extention_dir = "c:\php5.2. 5.

0. Pada bagian bawah AddModule tambahkan kode berikut # Module untuk PHP 5 AddModule mod_php5.var index.c> TypesConfig conf/mime.conf yang ada di direktori C:\Apache\htdocs.c> <IfModule mod_mime.exe [ENTER] untuk mengaktifkan Apache HTTP Server Lanjutan (Apache 2.types # Script PHP AddType application/x-httpd-php .conf klik File > Save 6. Jika tidak.c> TypesConfig conf/mime. Sekarang kita hanya perlu membuat sebuah file untuk mengetes apakah Apache dapat memproses script PHP... Simpan kembali file httpd.html index.54 dan Apache 1.html index. Klik kanan icon Apache Monitor pada pojok kanan layar kanan > Klik Open Apache Monitor > Klik Restart > Klik OK Konfigurasi Apache 1.2/php5apache. 7. Double klik file shortcut Apache pada desktop jika anda membuatnya pada saat instalasi 8.1.dll" 2. masuk pada DOS Prompt ketik C:\>apache.htm index. kemudian modifikasi bagianbagian berikut: 1.php # Untuk pewarnaan Source Code PHP AddType application/x-httpd-php-source .3.3.types </IfModule> Modifikasi hingga menjadi seperti seperti berikut <IfModule mod_mime. Cari bagian LoadModule pada bagian bawah tambahkan kode berikut # Module untuk PHP 5 LoadModule php5_module "C:/php5.. Cari bagian yang bertuliskan <IfModule mod_mime.conf dengan mengklik File > Save 4.html Tambahkan hingga menjadi seperti berikut DirectoryIndex index.phps </IfModule> 4... Simpan kembali file httpd.c 3. Caranya: xvii . Cari bagian Directoryindex yang berisi tulisan berikut DirectoryIndex index.html. Untuk merestart Apache tutup DOS window Apache server running .php 5.34 (Windows 98) Buka file httpd.DirectoryIndex index.htm index.34) Sudah selesai? hampir.php 3.

4.54) atau C:\Apache\htodocs (Apache 1. Buka file zip tersebut menggunakan WinZip 2.3: Script PHP berhasil diproses Apache Instalasi phpMyAdmin 2.3. Jika segala sesuatunya benar akan muncul tampilan seperti gambar 1.0. Jika belum bisa coba cek kembali mungkin ada beberapa langkah yang anda lewatkan.php. Instalasi yang telah kita lakukan sebelumnya merupakan proses instalasi PHP sebagai Modul Apache. Selain itu performa PHP sebagai modul Apache lebih baik daripada sebagai CGI.php.1. Buka notepad atau PHP DESIGNER 2005 jika anda sudah mendownload.3. Kita tidak menginstal PHP sebagai CGI karena karena alasan keamanan.zip. Klik Extract pada toolbar.0.6. 1.34) dengan nama info. Pastikan Anda memilih All Files/folders in archieve xviii . Simpan pada direktori C:\Apache2\htdocs\ (Apache 2. 3.0. Gambar 1.1 File instalasai yang saya gunakan adalah phpMyAdmin-2.1. ?> 2. Jika menggunakan notepad pastikan Save As-nya adalah All Files agar tidak disimpan sebagai file TXT. Saya asumsikan anda menggunakan winzip untuk mengextract file instalasi tersebut.6. Ketik kode berikut: <?php phpinfo(). Buka browser anda arahkan ke http://localhost/info.

1/'. Instalasi hMailServer 4.inc.34 3. Pada isian Extract To isikan C:\Apache2\htdocs\phpMyAdmin-2.0. Pembahasan tentang MySQL dan phpMyAdmin akan kita kupas pada bab 3.1 4.1/ Jika anda menjalankan sesuai instruksi yang saya berikan tampilan pada browser anda akan seperti gambar 1. Buka browser anda arahkan ke alamat http://localhost/phpMyAdmin-2.5: Tampilan utama phpMyAdmin Untuk sementara jangan diutak-atik dulu agar tidak terjadi hal-hal yang diinginkan. Edit file config.6.php pada direktori C:\Apache2\htdocs\phpMyAdmin-2.2 (Opsional) xix .5 Gambar 5. = 'root'. Cari string berikut dan set nilainya sehingga seperti dibawah ini: $cfg['Servers'][$i]['host'] $cfg['Servers'][$i]['user'] $cfg['Servers'][$i]['password'] = 'localhost'. 7.6. 6.0. = 'GANTI_DENGAN_PASSWORD_ANDA'. Cari string berikut $cfg['PmaAbsoluteUri'] = ''.6.1 4.0.inc.6. Edit file config. Ganti nilainya menjadi $cfg['PmaAbsoluteUri'] = 'http://localhost/phpMyAdmin-2.Untuk Apache 2.1 Untuk Apache 1.3.6.54 3.6. Pada isian Extract To isikan C:\Apache\htdocs\phpMyAdmin-2.1 5.php pada direktori C:\Apache\htdocs\phpMyAdmin-2.

10. Terakhir klik Connect Tampilan hMailServer saat pertama kali dijalankan ditunjukkan oleh gambar 1.2-Build-195. 6. 7.Anda tidak harus menginstall hMailServer untuk dapat mengaplikasikan isi e-book ini. xx .com dapat anda buat nama domain. 5.6: Tampilan hMailServer saat pertama kali dijalankan Setelah proses instalasi selesai. pindah pada window Setup – hMailServer klik Finish Setelah itu akan muncul window hMailServer Administrator – Connect. Hanya saja dengan hMailServer komputer anda akan lebih lengkap karena memiliki Mail Server. 3. 2. 3. Tanpa memiliki mail server kita tidak bisa mengetahui script kita bekerja atau tidak. 4. 8. Misalnya alamat@nama-anda.0. 9. Jika anda ingin hmail terkoneksi saat start-up centang juga Automacally connect at start up. 11.6 Gambar 1. Double klik file instalasi tersebut. klik Next > Pada database address isikan localhost. 2. TCP Port 3306 Username isikan root. Kita perlu membuat domain untuk alamat email kita. Untuk instalasi hMailServer ikuti langkah-langkah berikut: 1.0. Jika pada hostname belum ada localhost maka klik Add isikan localhost lalu klik Save.exe. klik Next > klik Finish. 1. Kita tahu pada aplikasi web sering terjadi proses pengiriman email. Klik Next > Pada folder tujuan isikan C:\Program Files\hMailServer Klik Next > Pilih Custom Instalation Klik Next > pilih Use External database server Klik Next > klik Next > klik Install Muncul window baru klik Next > pilih Create a new hMailServer database klik Next > pilih MySQL Server. password isikan password anda pada waktu instalasi MySQL Pada database name isikan hmailserver klik Next >. File instalasi yang saya gunakan adalah hMailServer-4. Karena kita berada di komputer kita sendiri kita bebas menentukan nama domain.

.localdomain My Incoming Mail server is a pilih POP3 Pada incoming mail isikan localhost. 3. Pada Display Name isikan Nama Anda. Kedua klik Add domain.. From isikan AdminTest. 6. Klik Close Kembali pada hMailServer: 1. Pada bagian email. muncul dialog box klik OK.localdomain 4. 7.Untuk contoh ini saya menggunakan domain localhost. Account Name isikan test@localhost. 2.localdomain klik Save Klik Add Account. Pada body isikan Jika anda dapat membaca pesan ini. pada Account address isikan test Pada Password isikan password isikan pas123 Pada administration anda dapat memilih antara user.localdomain Password isikan pas123 klik Next > Klik Finish Pada window Internet Accounts pilih localhost klik Properties ganti localhost dengan Testing lalu klik OK. pada Outgoing mail juga isikan localhost Klik Next. Jangan lupa beri cek Active kemudian klik Save Gambar 1. Jika anda ingin account tersebut dapat digunakan untuk administrasi server pilih server. 10. SELAMAT!. 6. pada email Address isikan test@localhost. dan server. 2. Pada list menu. Jalankan program Outlook Express Klik Menu > Tools > Account Klik tombol Add > Mail. 3. 9. Untuk sementara saya sarankan anda untuk menggunakan domain tersebut. Klik tanda + pada Utilities untuk memunculkan tree baru 2. 4. Untuk membuat domain ikuti langkah-langkah berikut: 1. 6. 5. 8. Klik Server sendout 3.. Untuk mengetes apakah mail server kita berjalan dengan baik kita dapat menggunakan program email client seperti Outlook Express bawaan windows. Pada Domain Name isikan localhost. Mail server anda telah berjalan dengan sukses!. xxi . Pada subject isikan Test Test Test Test x999999 5. 5.7: User test menerima email Sekarang anda sudah memiliki account email dengan alamat test@localhost. 1.0. klik Welcome pada bagian kiri. Setelah anda mengerti cara kerjanya anda dapat mengganti sesuka anda. domain.localdomain. pada From Address isikan no-reply@localhost.localdomain. 4. Klik Send..

Semua paket yang akan kita install bukan rpm melainkan sourcenya.18. 5.gz) PHP versi 5.18 Versi MySQL yang saya gunakan dalam pengujian adalah MySQL versi 5.55.0. Pada ubuntu breezy anda dapat menggunakan Synaptic untuk menghapus instalasi apache jika anda terlanjur menginstalnya.tar. Masuk ke direktori /usr/src lalu extract isi paket: # cd /usr/src # gzip -d mysql-5. Hapus kesemua paket-paket tersebut karena sudah Out of Date. 4. klik Send/Recv pada toolbar.18 (mysql-5.0. Selama proses penginstalan anda harus berada pada mode super user (root).gz) Apache versi 2. Sourcenya saya letakkan pada direktori /usr/src. Anda dapat menggunakan perintah su untuk berpindah ke mode super user.18-linux-i686-glibc23 mysql # cd mysql Catatan: sesuaikan dengan versi mysql anda.0./scripts/mysql_install_db --user=userx xxii .0.x Sistem operasi yang saya gunakan untuk pengujian adalah Red Hat 9 (Kernel 2.tar. maka buatlah # groupadd userx # useradd userx Catatan: ganti userx sesuai dengan keinginan anda.0.Kembali pada Outlook Express.7. Apache dan PHP yang disertakan dalam CD distribusi Red Hat 9.tar. 3.0.2 (php-5. Linux Kernel > 2. Buka terminal window. 2.0.4) dan Ubuntu Breezy (Kernel 2. Pada inbox nampak 1 email baru. Instalasi MySQL 5.tar -C /usr/local # cd /usr/local # ln -s mysql-standard-5. Ketiga paket yang saya gunakan antara lain: MySQL versi 5.gz # tar -xvf mysql-5.1. Install database mysql # . Dan saya rasa langkahnya hampir sama untuk semua distro linux.0. Anda dapat menggunakan Add/Remove Aplications yang berbasis GUI untuk melakukannya.2. Jika anda login sebagai user biasa.0. Jika anda sudah menginstall MySQL. Langkahlangkahnya adalah: 1.tar.0.6). Jika anda tidak memiliki user biasa (bukan root).gz) Untuk mail server kita dapat menggunakan sendmail (Red Hat) atau postfix (Ubuntu Breezy).4.55 (httpd-2. klik inbox tersebut lalu double klik AdminTest untuk memunculkan pesannya seperti gambar 1. Pindah ke mode super user dengan menggunakan perintah su.1.

/bin/mysqld --user=userx & Catatan: mysqld_safe biasanya digunakan untuk pengetesan saja.gz # tar -xvf httpd-2. Jika ingin keluar dari MySQL Monitor gunakan perintah berikut mysql>\q atau quit. # chown -R userx data # chgrp -R userx . Versi Apache yang saya gunakan adalah Apache versi 2.55. 1./bin/mysqld_safe --user=userx & atau # . Buat password untuk root (root mysql bukan root sistem) # . 2. Hapus anonymous user mysql> use mysql. 12./bin/apachectl start 5.55. Jalankan service httpd # .Jika berhasil maka akan muncul halaman seperti gambar 1. Firefox atau yang lain) arahkan ke http://localhost/ .0.tar.tar httpd # cd httpd Catatan: sesuaikan dengan versi Apache anda. Masuk pada direktori /usr/src untuk mengextract paket: # cd /usr/src # gzip -d httpd-2. Jalankan server mysql daemon # . Untuk menghentikan service mysql ketik perintah berikut # . 11./bin/mysqladmin shutdown -u root -p Enter Password: (Masukkan password anda) Instalasi Apache 2./bin/mysqladmin -u root password xxxxxxx Catatan: ganti xxxxxxx dengan password yang anda inginkan 9.0.55.0.tar # ln -s httpd-2. 8.buka browser anda (Mozilla.0./configure --prefix=/usr/local/apache2 # make # make install 3.55. Anda harus berada pada mode super user untuk melakukan instalasi ini.6.8 6. Install ke direktori /usr/local/apache2 # .0.55 Aplikasi ke dua yang akan kita instal adalah Web Server Apache./bin/mysql -u root -p Enter password: (ketik password anda lalu ENTER) 10. mysql> DELETE FROM user WHERE User=''. 7. Login ke MySQL # . Tes apakah apache sudah terkonfigurasi dengan benar dengan cara: .0. Buat privilige untuk direktori data kepada userx # chown -R root . Masuk pada direktori /usr/local/apache2 # cd /usr/local/apache2 4. Buat direktori webmaster pada /home/nama_user xxiii . Langkah-langkahnya.

Buat symbolic links di direktori htdocs yang mengarah ke /home/nama_user/webmaster # ln -s /home/nama_user/webmaster /usr/local/apache2/htdocs/webmaster Catatan: jadi jika anda membuka alamat http://localhost/webmaster maka secara otomatis akan diarahkan ke /home/nama_user/webmaster 8.# mkdir /home/nama_user/webmaster # chown -R nama_user /home/nama_user/webmaster 7.2. Apakah kita akan menginstall PHP sebagai Module dari Apache atau sebagai CGI. Extract paket PHP # gzip -d php-5.2 php # cd php 3.1.0.gz # tar -xvf php-5.2. Pada system linux dianjurkan untuk menginstall PHP sebagai module.1. Masuk pada direktori /usr/src # cd /usr/src 2.tar.1. Untuk menghentikan service httpd gunakan perintah berikut # .1.2 Pada saat menginstall PHP kita dihadapkan dua pilihan.8: Konfigurasi Apache berhasil Instalasi PHP 5. Karena performance PHP sebagai module lebih baik dari pada dipasang sebagai CGI. Langkah-langkah penginstalan 1./bin/apachectl stop Gambar 1.tar # ln -s php-5./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs xxiv . Lakukan konfigurasi # .

html index.--with-mysql=/usr/local/mysql Catatan: Jika ada masalah dengan versi libxml anda.ini # cp /usr/src/php/php. Restart server httpd untuk mengetahui perubahannya # cd /usr/local/apache2 # .Tambahkan kedua baris ini di akhir file httpd.php index.php dan index.conf yang ada pada direktori /usr/local/apache2/conf./configure --prefix=/usr/local/php5 --with-apxs2=/usr/local/apache2/bin/apxs --with-mysql=/usr/local/mysql --disable-libxml --disable-dom --disable-xml --disable-simplexml --disable-xmlreader --disable-xmlwriter --without-pear # make # make install 4.ini /usr/local/lib/php.html.ini 9. Pada bagian DirectoryIndex tambahkan index. Gunakan perintah berikut # . 7.so Jika tidak ada. xxv .phps 6. Dengan isi sebagai berikut <?php phpinfo().php .1.php 11.htm 8.var index. ?> Simpan pada direktori /home/nama_user/webmaster dengan nama info. Setelah itu edit file httpd./bin/apachectl restart 10.phtml AddType application/x-httpd-php-source .conf AddType application/x-httpd-php .htm sehingga menjadi seperti berikut DirectoryIndex index. tambahkan. Buat sebuah file php menggunakan editor kegemaran anda.ini-dist ke /usr/local/lib menjadi php. Pastikan pada bagian Dynamic Shared Object (DSO) Support terdapat LoadModule php5_module modules/libphp5. # gedit /usr/local/apache2/conf/httpd. Copy file php. Jika anda pada terminal window anda dapat menggunakan gedit atau kedit.0 menunjukkan output pemrosesan script PHP oleh modul Apache berjalan sukses. Buka browser anda arahkan ke http://localhost/webmaster/info.conf 5.php Gambar 1.

1.Gambar 5.0: Pemrosesan Script PHP berhasil xxvi .

Ketika anda hendak menyimpan file PHP pastikan pilihan Save as Type-nya adalah All Files. beri nama folder tersebut webmaster Untuk file-file yang kita kerjakan nantinya kita akan menyimpannya pada sub direktori webmaster.0. Begitu juga ketika hendak membuka file pastikan Save as Type adalah All Files agar file-file PHP muncul pada daftar.Hal-Hal Yang Perlu Diperhatikan Tentang Direktori Kerja Agar pekerjaan kita lebih terstruktur. Pada e-book ini pembahasan mengasumsikan anda menginstal Apache 2.0. xxvii . Jadi jika ada perintah untuk menjalankan PHP DESIGNER 2006 anda dapat menggunakan editor lainnya. Masuk pada direktori C:\Apache2\htdocs (untuk Apache 2. itu berarti mengarah ke C:\Apache\htdocs\webmaster jika anda menggunakan Apache 1.34.54) atau C:\Apache\htdocs (untuk Apache 1. Jadi jika anda menemukan C:\Apache2\htdocs\webmaster pada pembahasan e-book. Buat folder baru.3. Ada hal yang perlu anda perhatikan jika anda menggunakan notepad. misalnya notepad.3. ikuti langkah-langkah berikut: 1. Hal ini untuk menghindari tersimpannya file anda sebagai file teks biasa.34) 2. Tentang Editor Pada pembahasan e-book ini. diasumsikan anda menggunakan PHP DESIGNER 2006 untuk mengedit file-file PHP.54. Jadi direktori yang disebutkan pada pembahasan e-book ini adalah C:\Apache2\htdocs\webmaster.

Bab 1 HTML PHP Sebelum melanjutkan ikuti langkah-langkah berikut: Buatlah folder baru pada direktori C:\Apache2\htdocs\webmaster\ Berinama folder tersebut Bab1 ********** 1 .

i. u dan sebagainya.htm atau *.0 Tag-tag umum pada HTML Tag <html></html> <head></head> <title></title> <body></body> <b></b> <i></i> <u></u> <p></p> <font></font> <br> <hr> <a></a> Keterangan Tag untuk mengapit halaman HTML Tag yang berisi informasi umum dari halaman Judul halaman.</html>. Tag-tag HTML selalu diawali dengan tanda <x> dan diakhiri dengan </x> dimana x adalah nama tag seperti b. File-file HTML selalu berakhiran dengan ekstensi *. Lalu ketik kode berikut ini. Dibawah ini adalah tabel tag-tag HTML yang sering digunakan.. Setelah membaca materi ini diharapkan anda dapat menguasai bagaimana: Menggunakan HTML Manipulasi Font dan Link Membuat Tabel Membuat Form HTML Menggunakan HTML Sebuah halaman website yang valid akan selalu diapit tanda <html>. HTML merupakan format tampilan untuk sebuah website. PENERAPAN TEORI MENGGUNAKAN HTML Pertama Jalankan program PHP DESIGNER 2006.HTML Hari Ke-1 Sebelum melanjutkan buatlah sebuah folder baru di direktori: Buat folder baru lagi di direktori C:\Apache2\htdocs\webmaster\Bab1 Beri nama folder tersebut hari-1 HTML Pada hari yang pertama ini kita akan mempelajari HTML. Terdapat pada <head> Settingan attribut untuk seluruh isi halaman Untuk menebalkan teks Untuk memiringkan teks Untuk menggaris bawahi teks Untuk membuat paragraf Untuk memanipulasi huruf Untuk pindah ke baris baru Untuk membuat garis horizontal Untuk membuat links Agar anda lebih paham sebaiknya kita langsung menerapkan teori-teori diatas.html.HTML dan PHP . Namun ada juga tag yang tidak diakhiri dengan </x> seperti <br> dan <input>.. HTML sangat mudah dipelajari karena kita tidak memerlukan programming skill untuk menguasai HTML. Tabel 1. <html> <head> <title>Website Pertamaku</title> </head> <body> 2 Bab 1 . Klik menu File-New-HTML/XHTML untuk membuat file HTML baru.

Tabel 1. Lihat contoh berikut. Gambar 1... Dimana atribut inilah yang memiliki peranan penting dalam menentukan tampilan teks. miring dan bergaris bawah. Yang anda klik itu adalah link. miring dan bergaris bawah?.0: output file pertama. Selain font ada juga <h1></h1>. Dengan mengklik File-Save lalu simpan dengan nama pertama. <i></i> dan <u></u>. <b><i><u>Tebal. Tag ini memiliki atribut didalamnya. dan seterusnya yang digunakan untuk mencetak heading.. Miring dan Garis Bawah</b></i></u> Teks diatas akan mempunyai efek tebal.!.html tampilan yang anda lihat akan seperti gambar 1. Untuk mengetesnya buka Internet Explorer atau browser favorit anda. Link merupakan teks atau gambar yang membuka Bab 1 . <h2></h2>.1 Daftar attribut dari tag font Atribut name size color Keterangan Untuk menentukan jenis huruf yang digunakan Untuk menentukan ukuran huruf Untuk menentukan warna huruf Contoh jika kita ingin membuat teks yang menggunakan huruf Arial ukurannya 12pt dan warnanya merah. Tag font tidak hanya sesederhana itu. kita cukup apit teks tersebut menggunakan tag <b></b>. Gampang. Lalu bagaimana jika saya ingin membuat teks yang hurufnya tebal.0.. <font name="Arial" size="3" color="red">Teks Disini</font> Untuk size 3 sama dengan 12pt. <h2> akan semakin mengecil dan seterusnya. Lihat Tabel 1.HTML dan PHP 3 . Kita dapat menuliskannya seperti berikut. Mudah bukan?.html Manipulasi Font dan Link Untuk memanipulasi font di HTML kita gunakan tag <font></font>. Link Anda tentu sering mengklik suatu tulisan atau gambar pada website yang menuju ke halaman lainnya. Ini website pertamaku </body> </html> Simpan di folder hari-1 yang pernah kita buat.html. 6 sama dengan 24pt dan 7 sama dengan 36pt. <h1> akan mencetak heading dengan ukuran font yang terbesar. 4 sama dengan 14pt.1 untuk daftar atribut tag font.HTML Halo Dunia.. 5 sama dengan 18pt. Pada address arahkan ke http://localhost/webmaster/Bab1/hari-1/pertama.

html. Lalu ketik kode berikut <html> <head> <title>Manipulasi Font dan Link</title> </head> <body> <p><font size="5"><b>Pengumuman</b></font></p> <p>Silahkan klik link berikut untuk menuju halaman pertama. Untuk membuat link kita dapat menggunakan tag <a></a>.html</a><br> <a href="pertama.com">Google</a> Link diatas akan membuka alamat www. <a href="http://www.google. Tabel 1.2 Daftar attribut dari tag a Attribut href target style class name Keterangan Halaman website yang akan dituju Dibuka pada window baru atau tidak Penambahan CSS Nama class yang dipanggil Nama dari link Contoh jika kita ingin membuka www.html hasilnya akan seperti gambar 1.com pada window yang sama.html.com dengan teks Google sebagai teks yang akan diklik. Bab 1 .2: output file font_link.google.html</p> <a href="pertama.1 Gambar 1. Jalankan pada browser IE arahkan address ke http://localhost/webmaster/Bab1/hari-1/font_link.2 akan menunjukkan pada anda daftar attribut pada tag a. Itu dikarenakan pada attribut target kita isi dengan “_blank”.html">Halaman pertama.HTML dan PHP 4 .html berada satu direktori dengan file font_link.html”. PENERAPAN TEORI MANIPULASI FONT DAN LINK Jalankan PHP DESIGNER 2006 klik menu File-New-HTML/XHTML.html Karena file pertama.html</a> (new window) </body> </html> Simpan dengan nama font_link.google. Tabel 1. Seperti halnya tag font tag a juga memiliki attribut. Untuk link yang ke dua jika kita klik maka akan muncul window baru.HTML halaman website lainnya. Maka isi dari href cukup kita tulis “pertama.html" target="_blank">Halaman pertama.

Terdapat juga tag <th></th> tag ini digunakan untuk membuat header tabel. Daftar atribut tag table dapat anda lihat pada tabel 1.3 Daftar atribut dari tag table Atribut width height border cellpadding cellspacing name bgcolor background align valign style bordercolor Keterangan untuk mengatur lebar tabel (% atau pixel) untuk mengatur tinggi tabel untuk menentukan tebal bingkai menentukan jarak padding antar cell menentukan jarak spacing antar cell untuk menentukan nama tabel untuk mengatur warna background untuk menampilkan gambar sebagai background letak teks secara horizontal (rata kiri. Lihat tabel 1. Atribut dari tag table boleh dibilang cukup banyak. dan th Atribut height bgcolor background align valign colspan rowspan Keterangan untuk untuk untuk untuk untuk untuk untuk mengatur tinggi mengatur warna background menjadikan gambar sebagai background mengatur letak teks mengatur letak teks secara vertical menghilangkan sejumlah kolom menghilangkan sejumlah baris Contoh dibawah ini mengilustrasikan kita akan membuat tabel dengan dua baris dan satu kolom. Untuk membuat tabel digunakan <table></table>. Dengan menggunakan tabel kita dapat dengan mudah menentukan letak suatu objek. tengah atau kanan) letak teks secara vertical (rata atas. Ketiga tag tersebut memiliki atribut yang hampir sama. Tabel 1. tengah atau bawah) untuk CSS untuk mengatur warna bingkai Membuat Tabel Jika kita hanya menggunakan tag <table></table> saja maka tabel tidak akan pernah terbentuk karena belum memiliki baris dan kolom. Tabel 1. Klik File-New-HTML/XHTML untuk membuat file HTML baru. Untuk membuat baris kita gunakan tag <tr></tr> dan untuk membuat kolom digunakan tag <td></td>. <table border="1"> <tr> <td>Baris 1 kolom 1</td></tr> <tr> <td>Baris 2 kolom 1</td></tr> </table> PENERAPAN TEORI MEMBUAT TABEL Seperti biasa jalankan PHP DESIGNER 2006. Kemudian ketik kode dibawah ini <html> <head> <title>Membuat Tabel</title> </head> Bab 1 .3.4 Daftar atribut tag tr.HTML dan PHP 5 . td.HTML Tabel memiliki peranan yang cukup penting dalam pendesainan suatu tampilan.4 untuk melihat daftar atributnya.

Disini kita menuliskan attribut colspan=”3” yang artinya kita menghilangkan 3 kolom dan menggantinya hanya dengan satu kolom.-</td> </tr> <tr align="center"> <td>CD RW</td><td>Rp.000. <u> dan sebagainya dapat dimanipulasi dengan CSS.HTML dan PHP 6 .-</td><td>4</td><td>Rp. Selain dituliskan dalam tag style CSS juga dapat ditulis pada tag yang mendukung attribut style seperti table. Gambar 1.}. Bab 1 .000. Jika anda jalankan pada Internet Explorer maka hasilnya akan terlihat seperti gambar 1. CSS (Cascading Style Sheet) Dari namanya saja sudah keren ini pasti menarik. Didalam CSS tag-tag HTML tersebut disebut selector dan atribut didalamnya disebut declaration. Tentu ini menarik tapi pada ebook ini kita hanya bahas secara garis besarnya saja. CSS merupakan suatu teknologi yang digunakan untuk mempermudah pembuatan suatu tampilan website. 5. 2. Lalu ketik script berikut ini. Declaration ditandai dengan kurug kurawal {..-</td> </tr> <tr align="center"> <td colspan="3">TOTAL >>> </td><td><b>Rp.-</b></td> </tr> </table> </body> </html> Simpan dengan nama tabel. Contoh berikut akan membuat seluruh teks pada body berjenis huruf verdana dengan ukuran 11 pixel. Setiap tag html seperti <b>. <i>.html Coba perhatikan pada tag td yang ada pada baris ke tiga.-</td><td>5</td><td>Rp.000.. 20. 30.2: output file tabel.HTML <body> <h2>Daftar Harga</h2> <table border="1" style="border-collapse: collapse" width="100%"> <tr bgcolor="#cccccc"> <th>Nama Barang</th><th>Harga Satuan</th><th>Jumlah Barang</th> <th>Total</th> </tr> <tr align="center"> <td>CD R</td><td>Rp. font-size: 11px} PENERAPAN TEORI CSS Jalankan PHP DESIGNER 2006 klik menu File-New-HTML/XHTML. body{font-family: verdana.000.000.html. 10. Tag style diletakkan diantara tag <head></head>. Kode dari CSS diapit oleh tag <style></style>.2.

Karena tidak membutuhkan keahlian programming. Gambar 1. Method – attribut ini berfungsi untuk menentukan tipe pengiriman data.3: output file css. Demikian juga untuk tag b yang otomatis warnanya menjadi merah setelah deklarasikan di CSS.html.php. Membuat form HTML boleh dibilang sangatlah mudah. Name – attribut ini berguna untuk alamat yang merupakan bagian dari javascript. Form HTML menyediakan input bagi user untuk mengisikan suatu data guna diproses oleh PHP.domainku.com/fileku. Form HTML Seperti namanya form yang berarti isian atau formulir. Contoh lengkap penulisan form sebagai berikut: 7 Bab 1 .php” atau URL lengkap http://www.HTML <html> <head> <title>CSS . Tag <form> memiliki beberapa attribut diantaranya: Action – attribut ini berfungsi untuk memberitahu file mana yang akan digunakan untuk memproses form yang dikirim.HTML dan PHP .3.html Dapat anda lihat kalau seluruh teks pada body dengan sendirinya bertipe verdana dan berukuran 11 pixel karena adanya CSS. font-size: 11px} b{color: red} i{color: green} </style> </head> <body> <p>Sekarang semua tulisan verdana 11 px</p> <b>Saya otomatis merah</b><br> <i>Saya otomatis hijau</i> </body> </html> Simpan dengan nama css. Bisa berupa POST atau GET. Bentuk Dasar Form HTML Setiap form pada HTML akan diapit oleh tag <form> dan </form>. Contoh “fileku. Nama form tidak dikirim ke server saat form disubmit atau dikirim.Cascading Style Sheet</title> <style> body{font-family: verdana.php” atau “folderku/fileku. Jalankan pada browser IE maka hasilnya akan seperti gambar 1.

Bisa berupa tombol.3: Contoh sederhana form HTML Setiap type juga memiliki attribut sendiri-sendiri. Dapat digunakan untuk menyimpan nilai atau variabel yang digunakan untuk halaman berikutnya.3. Jika ada kata “checked” maka radio tersebut akan ditandai(default). Reset – tipe ini digunakan untuk membersihkan segala isian pada form. Jika pada tag ini terdapat kata “checked” maka checkbox tersebut akan ditandai. Bab 1 . Tapi setiap type pasti memiliki attribut name. password box dan sebagainya. check box. Text memiliki tiga attribut diantaranya: Size – yang merupakan ukuran panjang dari textbox. Password – hampir sama dengan text hanya saja karakter yang diketikkan akan berupa asterik (*). Tampilannya hampir sama dengan tipe text tapi disebelahnya ada tombol “browse”. Attributnya hampit sama dengan submit. Ketika user menekan browse akan muncul kotak dialog untuk memilih file yang diupload. Value – merupukan isi dari textbox yang telah ditetapkan. Maxlength – merupakan karakter maksimal yang dapat ditampung oleh textbox. Gambar 1. </form> Macam Input Type Sebagian besar penulisan form akan selalu digunakan input type. Radio – tipe ini akan menampilkan tampilan radio button. Tag input dan attributnya yaitu type akan menentukan output yang ditampilkan oleh browser.php" method="POST"> <input type="text" name="coba" size="30" maxlength="45"> <input type="submit" value="GO!!"> </form> Output dari kode diatas akan terlihat seperti gambar 1. Jika tidak ada maka namanya Submit Query.HTML dan PHP 8 .. Berikut ini beberapa tipe type yang dapat anda gunakan: Text – tipe ini seperti yang terlihat di gambar yaitu berupa textbox. Checkbox – tipe ini akan memunculkan tampilan checkbox. Hidden – input ini tidak dimunculkan di layar browser.php” method=”POST”> . Nama tombol diambil dari nilai attribut value. Tipe ini digunakan jika kita harus memilih hanya satu pilihan. Untuk lebih memperjelas lihatlah contoh di berikut <form action="tidak_ada. User dapat menggantinya dengan langsung mengetikkan pada textbox.HTML <form name=”formku” action=”proses. Biasanya checkbox digunakan untuk memilih lebih dari satu pilihan.. File – tipe ini digunakan untuk proses peng-upload-an file. Submit – tipe ini akan menampilkan tombol submit(pengiriman).

<form action="tidak_ada.4: Penggunaan macam-macam type Select. Gambar 1.4. Multiple Select Tag select akan menampilkan pilihan dalam kotak drop-down. Didalam tag select kita memerlukan tag <option> untuk membuat pilihan.php" method="POST"> <select name="status"> <option value="menikah">Sudah Menikah <option value="belum">Belum Menikah Bab 1 . Kode berikut ini mencontohkan penggunaan macam-macam type tersebut kecuali File dan Image.php" method="POST"> <h2>Formulir Pendaftaran</h2> Nama: <input type="text" name="nama" value="Ketik Nama Disini" size="30" maxlength="50"><br> Password: <input type="password" name="nama" size="30" maxlength="50"><br> <input type="checkbox" name="mailing" value="ya"> Jika dicek anda bersedia menjadi anggota mailing list kami.HTML dan PHP 9 . <input type="hidden" name="sembunyi" value="anda tidak dapat melihatku"> <p> Status Anda?<br> <input type="radio" name="status" value="menikah">Sudah Menikah<br> <input type="radio" name="status" value="belum">Belum Menikah<br> <input type="radio" name="status" value="duda_janda">Duda/Janda<br> </p> <input type="submit" value="DAFTAR"> <input type="reset" value="RESET"> </form> Output dari kode diatas akan seperti gambar 1. Untuk membuatnya anda harus menuliskan tag <select> dengan attributnya yaitu name. Pilihan option juga memiliki attribut yaitu value. Contoh penggunaan tag <select>: <form action="tidak ada.HTML Image – fungsinya sama dengan submit hanya saja anda dapat menentukan gambar sebagai pengganti tombol.

HTML <option value="duda_janda">Duda/Janda </select> </form> Gambar 1. Untuk memilih lebih dari satu gunakan tombol SHIFT atau Ctrl. <form action="tidak_ada. textarea memiliki tag penutup yaitu </textarea>.7: contoh output textarea Untuk pembahasan lebih detail tentang HTML anda dapat membaca e-book "Mastering Kode HTML". Anda dapat mendownload “Mastering Kode HTML” di alamat berikut: http://materi.6: contoh output multiple select Textarea Tag <textarea> akan menciptakan sebuah textbox yang besar yang mempunyai baris dan kolom.rahasia-webmaster.com/ Bab 1 . Maka user diperbolehkan memilih lebih dari satu pilihan atau sering disebut listbox.php" method="POST"> Buatlah deskripsi singkat tentang diri anda<br> <textarea name="deskripsi" rows="8" cols="50">Tulis Deskripsi Disini</textarea> </form> Gambar 1. <form action=”tidak ada.php” method=”POST”> Makanan yang anda suka?<br> <select name="makanan" multiple size="3"> <option value="Nasi_goreng">Nasi goreng <option value="Mie_ayam">Mie Ayam <option value="Burger">Burger <option value="Kentang">Kentang </select> </form> Gambar 1.HTML dan PHP 10 .5: contoh output select Jika kita tambahkan kata multiple pada tag select. Berbeda dengan elemen form lainnya. Lihat contoh berikut akan menampilkan listbox 3 elemen awal dengan mengisi attribut size. Untuk memperjelas lihatlah contoh berikut.

Bab 1 .HTML dan PHP 11 .

Variabel pada PHP memiliki tanda khusus yaitu diawali dengan tanda $ (dollar). Untuk itu hati-hati dalam penulisan nama variabel. Penggunaan tanda ini sama dengan yang ada di bahasa perl. $angka_2 = 4.. Tipe Variabel Bab 1 . Variabel $nama tidak sama dengan $NaMa. Mulai dari pengertian tentang variabel. Variabel bersifat case sensitive artinya membedakan huruf kecil dan huruf besar. Ketentuan-ketentuan dalam membuat variabel: Variabel dapat terdiri dari huruf. Variabel tidak dapat diawali dengan angka. struktur pengambilan keputusan. Dalam membuat variabel ada beberapa ketentuan yang harus dipenuhi agar variabel itu valid. Hampir setiap bahasa pemrograman mengenal apa itu yang namanya variabel. Pada hari kedua ini diharapkan anda dapat mengerti tentang: Variabel pada PHP Menempelkan(embed) PHP pada HTML Komentar pada PHP Struktur Kontrol (if. $angka_1 = 3. Pada bab ini kita juga akan membuat sebuah proyek kecil untuk mengaplikasikan teori yang telah kita dapat..com'.PHP Hari Ke-2 Karena sudah hari kedua ikuti langkah-langkah berikut: Masuk pada direktori C:\Apache2\htdocs\webmaster\Bab1 Buat folder baru. Contoh-contoh yang saja sajikan dalam e-book ini hampir semuanya merupakan contoh dari aplikasi web sebenarnya. Variabel sendiri merupakan suatu bentuk penyimpanan data sementara pada memori komputer yang akan diolah lebih lanjut.else) Operator Aritmatik Variabel Pada PHP Variabel merupakan elemen yang sangat penting dalam bahasa pemrograman. Seperti terlihat pada contoh diatas variabel dapat berisi string(huruf) atau angka. Dan menurut saya adanya tanda $ memudahkan kita untuk menemukan kesalahan. $hasil = $angka_1 + $angka_2. Sebuah variabel dapat juga berisi variabel lain.rahasia-webmaster. $website = 'www. Contoh variabel pada PHP $nama = 'Rio Astamal'. berinama folder tersebut hari-2 PHP Untuk hari yang ke dua ini kita akan mempelajari dasar-dasar dari PHP.HTML dan PHP 12 . contohnya $hasil = $angka_1 + $angka_2.. dan dasar-dasar dari penguasaan tentang bahasa pemrograman. Sehingga anda tahu bahwa sebenarnya web programming itu MUDAH!. angka dan underscore( _ ) dan tentu saja tanda dollar $.

Variabel global dapat dipanggil dari manapun kecuali didalam suatu fungsi.PHP Variabel juga memiliki banyak tipe. Macam-macam Tipe Data Tabel 1. echo $var1. Bingungkan? Baca lagi dan lanjutkan. 20000). Jangkauan(Scope) Variabel Jangkauan variabel merupakan tempat di script dimana variabel tersebut masih dapat dipanggil. Tipe variabel mengindikasikan jenis data apa yang disimpan didalamnya.HTML dan PHP 13 . Inilah perbedaan utama variabel dengan konstanta. $var1 = 4000. Variabel yang digunakan didalam fungsi yang dideklarasikan sebagai global akan mengacu pada variabel global dari nama yang sama. Ada beberpa tipe scope variabel diantaranya: Variabel built-in bersifat super-global artinya dapat dipanggil dimanapun didalam script. Satu hal yang penting lagi konstanta tidak memiliki tanda $ seperti yang dimiliki variabel. Nilai dari konstanta hanya boleh diset satu kali saja dan tidak bisa diubah dimanapun didalam script. Bab 1 . define('HRG_BENSIN'. dan simbol Digunakan untuk bilangan real Digunakan untuk nilai True atau False Digunakan untuk menampung beberapa data sekaligus (akan dibahas lebih lanjut) Digunakan untuk class Konstanta Pada variabel kita diizinkan untuk mengubah nilainya. Pada contoh diatas nilai awal dari variabel $var1 adalah 2000. define('HRG_BENSIN'. Jadi jika kita ingin mencetak nilai konstanta ke layar maka anda harus menuliskan persis seperti nama konstanta tersebut. echo HRG_BENSIN. Ini berbeda dengan konstanta. Anda dapat mendeklarasikan konstanta dengan menggunakan fungsi define. spasi.5 Daftar tipe data pada PHP Tipe Data Integer String Double Boolean Array Object Keterangan PHP mendukung tipe-tipe variabel berikut ini: Digunakan untuk semua angka Digunakan untuk semua huruf. berbeda dengan varibel nama konstanta terdiri dari huruf KAPITAL. Hasil pada layar adalah $var1 akan menghasilkan output 4000 dan HRG_BENSIN akan menghasilkan 2400. angka. Namun kemudian nilainya diubah menjadi 4000. $var1 = 2000. Perhatikan. Ini sama dengan bahasa C yang memudahkan untuk membedakan variabel dengan konstanta. Variabel yang digunakan pada fungsi hanya dapat dikenali didalam fungsi itu sendiri. 2400).

sebenarnya begini. eeh.. apa perbedaan menggunakan tanda petik satu(') dan petik dua(")?. Anda tidak dapat meletakkan variabel didalam ('). Jika anda melakukannya dengan benar hasilnya akan tampak seperti gambar 1. $_COOKIE. echo $nama.. \t (tab) dan sebagainya pada petik satu.."(titik koma). Web Janarko<br>'...wejan. kayak spesialis otak saja!?!.... Script PHP selalu diawali dengan tanda <?php dan diakhiri dengan tanda ?>.saya sempat. entah itu didalam atau diluar suatu fungsi... Ehm.8. Jadi tulisan yang berada dalam tag <?php . Dibawah ini adalah daftar dari variabel super-global. udah. $_SESSION variabel-variabel ini memiliki peran “penting” dalam script kita nantinya... Script yang beraada diantara tanda tersebut itu merupakan sebuah script PHP.. <html> <head> <title>Variabel</title> </head> <body> <?php $nama = 'Nama: Mr. Mungkin anda bertanya. Anda juga tidak dapat meletakkan karakter spesial seperti \n (garis baru).. Itulah yang disebut menempelkan (embed) PHP pada HTML. $website = "Website: www.com<br>".HTML dan PHP 14 .udah. Variabel – variabel berikut ini dapat dipanggil darimana saja didalam script... echo $website... Wis.. ?> akan dianggap kode PHP oleh server. Jalankan pada Internet Explorer atau browser lainnya arahkan ke http://localhost/webmaster/Bab1/hari-2 klik variabel.. Seperti $_POST. variabel didalam petik satu tidak akan dianggap dan tetap ditampilkan apa adanya. $GLOBAL – array dari semua variabel global $_SERVER – array dari varibel linkungkan server $_GET – array dari variabel yang dikirim melalui method=”GET” $_POST – array dari variabel yang dikirim melalui method=”POST” $_COOKIE – array dari variabel cookie $_FILES – array dari varibel file yang diupload $_ENV – array dari lingkungan(environment) variebel $_REQUEST – array dari semua input variabel dari user $_SESSION – array dari variabel session Dari keseluruhan variabel super-global yang ada diatas. Kemudian etik script berikut ini agar memori diotak anda menangkap dengan lebih baik. ?> </body> </html> Simpan script diatas dengan nama variabel... banyak omong. PENERAPAN TEORI VARIABEL Jalankan PHP DESIGNER 2006 klik menu File > New > PHP untuk membuat file PHP baru. Ada beberapa yang akan sangat sering kita gunakan..?!? Ah.. PENJELASAN SCRIPT Perhatikan bagian script yang diantara tanda <?php dan ?>.. Untuk memisahkan statemen PHP satu dengan yang lainnya digunakan tanda ". sebelum menjadi webmaster dulu.PHP Nantinya anda akan sering bergaul dengan variabel superglobal seperti $_GET dan $_POST. Bab 1 ..php agar kita tahu bahwa yang sedang kita kerjakan untuk kali ini hanya masalah variabel.php.

<?php /* NamaFile: variabel. Web Janarko.php Penulis: Mr. Sebaliknya pada tanda petik dua( " ) anda dapat meletakkan variabel didalamnya. fungsi-fungsinya untuk apa dan banyak lainnya.HTML dan PHP 15 . PHP mengenal tiga jenis gaya komentar. echo '$nama'. Perintah yang ekuivalen dengan echo adalah print. Echo merupakan perintah pada PHP yang digunakan untuk mencetak output berupa string ke browser.wejan. Biasanya komentar digunakan untuk menjelaskan tujuan dituliskannya script tersebut.8: output file variabel. Sekarang coba klik kanan dokumen tersebut lalu klik view source. siapa penulisnya. hasil yang akan ditampilkan pada browser hanya $nama.com<br>. Jika anda mencari bagian PHP kodenya jelas tidak ada yang ada hanya Nama: Mr. Itulah yang disebut bahasa server-side scripting. baik orang lain ataupun anda sendiri. Kode PHP dieksekusi di server yang dikirim ke klien hanyalah hasil akhirnya saja yaitu berupa kode HTML murni.PHP Gambar 1. Komentar Pada PHP Komentar pada script bertujuan untuk memberitahu pembacanya. Pertama model bahasa C (banyak baris/multi line).php Jika anda menjalankan perintah berikut. PHP akan mengabaikan semua text didalam komentar. Jadi tidak akan berpengaruh pada jalannya suatu script. output yang akan ditampilkan pada browser adalah isi dari variabel $nama. echo "$nama". kapan ditulis dan sebagainya. Lihatlah script dibawah ini. Komentar juga berguna bagi anda sendiri ketika suatu waktu anda lupa mengapa anda menulis file ini. Yang tidak lain adalah Nama: Mr. Web Janarko<br>Website: www. biasanya dapat anda letakkan pada bagian atas script. Jika anda menggunakan petik dua pada kode. Web Janarko Bab 1 .

segala text setelah tanda // atau # akan dianggap komentar oleh PHP sampai akhir dari baris tersebut..... Coba anda modifikasi file variabel. Sedangkan = digunakan untuk memberi nilai pada variabel. Bingung? Tenang sebentar lagi kebingungan anda hilang dengan melihat contoh. Statemen if.php yang telah anda buat dan tambahkanlah komentar seperti contoh diatas. Kita dapat menggunakan statemen if untuk membuat sebuah keputusan. // mencetak nama atau anda dapat menggunakan model shell script. Struktur kontrol mencakup struktur kondisi dan struktur pengulangan atau looping. Jika kondisi bernilai true maka blok if akan dieksekusi. echo $nama. Tanda (=) berbeda dengan (==). if ($nama == 'Web Janarko') { echo $nama.HTML dan PHP 16 . Yang kedua anda dapat menggunakan model C++. } pada cuplikan script diatas kita menggunakan nilai variabel $nama sebagai kondisi.. Anda akan sering menggunakan statemen ini karena dengan statemen ini anda dapat memilih kondisi mana yang ingin anda eksekusi. Statemen if. Struktur Kontrol Struktur Kontrol merupakan sebuah struktur dalam bahasa pemrograman yang membolehkan kita untuk mengontrol alur dari eksekusi suatu program atau script.else. # mencetak website Pada kedua model ini...else. tanda == digunakan untuk mengetes suatu nilai dari variabel apakah sama..... Statemen if dikelilingi oleh tanda { } (kurung kurawal). Namun karena ini hari pertama saya hanya memberikan struktrur kondisi if. $nama = 'Web Janarko'.. Seperti artinya else yang dalam bahasa indonesia dapat diartikan selain itu. Model ini hanya bisa digunakan pada satu baris saja. Kalau kebanyakan nanti malah pusing. Statemen else mengijinkan kita untuk menentukan aksi alternatif yang diambil jika dalam statemen if bernilai false..PHP Fungsi: untuk mengetes variabel pada PHP */ ?> Pada model ini komentar diawali tanda /* dan diakhiri tanda */.. Bab 1 . Anda harus memberi if sebuah kondisi untuk membuat keputusan.. Dimana jika nilai variabel $nama sama dengan Web Janarko maka kondisi bernilai true maka blok if akan dieksekusi. saja. Statemen if juga memiliki banyak variasi salah satu diantaranya if..else. dan if. echo $website.. mual lalu muntah.

ELSE. Salah satu tugas terpenting dan paling sering dilakukan bahasa server side scripting adalah memproses HTML Form. DAN IF. 7500</td> <td><input type="text" name="baterei" maxlength="3" size="3"></td></tr> <tr> <td>Baygin</td> <td>Rp.-. PENERAPAN TEORI IF. Sekedar mengingatkan karena menggunakan “ (petik dua) maka variabel dapat langsung kita masukkan dalam tanda petik tersebut.-. Untuk itu jalankan PHP DESIGNER 2006 lalu klik menu File-New-HTML/XHTML. Ketik script berikut ini agar mata anda tidak jenuh membaca e-book..". $sisa_uang. $sisa_uang. if ($sisa_uang < 5000) { echo "Maaf bung.php" method="post"> <table border="0"> <tr bgcolor="#cccccc"> <td>Barang</td> <td>Harga</td> <td>Jumlah</td></tr> <tr> <td>Baterei CBA</td> <td>Rp. Pada statemen if yang pertama. Kita akan membuat dua file yang pertama adalah file HTML murni sebagai input data bagi user(HTML Form). Pertama kita sudah mendefinisikan variabel $sisa_uang = 6000.. <html> <head> <title>MiniMarket Janarko</title> </head> <body> <font size="4"><b>MiniMarket Online . Sedangkan sisa uang kita masih 6000 maka nilainya false oleh sebab itu blok statemen else dijalankan.. } Saya kira anda sudah bisa menebak alur script tersebut.Pembelian</b></font><hr> <p> <form action="proses_beli..PHP $sisa_uang = 6000. jika $sisa_uang kurang dari 5000 maka true. Dan file yang kedua adalah file PHP yang bertugas memproses data yang dikirim oleh file HTML.". Pada contoh ini adalah inti awal anda memahami tugas PHP sebagai pemroses HTML Form. sisa uang anda sekarang sebesar Rp.. sisa uang anda tidak cukup. 2250</td> <td><input type="text" name="baygin" maxlength="3" size="3"></td></tr> <tr> <td>Silver King</td> <td>Rp. 1750</td> <td><input type="text" name="silver" maxlength="3" size="3"></td></tr> <tr> <td colspan="3"><input type="submit" value="B e l i"></td></tr> </table> </form> </body> </html> Bab 1 . } else { echo "Silahkan membeli karena sisa uang anda masih Rp..HTML dan PHP 17 .

html Sekarang buatlah file PHP-nya.php Penulis: Mr. Gambar 1.($total * $diskon). $baterei_ttl = $baterei $baygin_ttl = $baygin * $silver_ttl = $silver * $total = $baterei_ttl + * HARGA_BTR.html $baterei = $_POST['baterei']. ?> Bab 1 . Web Janarko Fungsi: untuk memproses file minimarket. $baygin = $_POST['baygin'].15. $baygin_ttl + $silver_ttl.html */ //buat variabel untuk menampung data dari minimarket. 1750).9: output file minimarket. 2250). $silver = $_POST['silver']. Karena kita masih di skop hari kedua. HARGA_SLR. 7500). <?php /* NamaFile: proses_beli. HARGA_BYN. //diskon 15% } $subtotal = $total . define('HARGA_BYN'.html dan jangan lupa tetap letakkan di C:\Apache2\htdocs\webmaster\Bab1\hari-2\. # buat konstanta harga masing-masing produk define('HARGA_BTR'.HTML dan PHP 18 .9 untuk output script HTML diatas. if ($total < 50000) { $diskon = 0. define('HARGA_SLR'. Lihat gambar 1. klik File-New-PHP. //diskon 0% } else { $diskon = 0. Silahkan ketik script berikut ini atau dilihat-lihat saja jika anda sudah paham.PHP Simpan script diatas dengan nama minimarket.

'<td align="center">'.$baygin_ttl. letakkan di direktori yang sama dengan minimarket. <input type="text" name="baterei" maxlength="3" size="3"> arti dari cuplikan script diatas adalah kita akan mempost(mengirim) data dari textbox dengan nama baterei. '<td>Baygin</td>'. '<td align="center">'. '<td >Baterei CBA</td>'. '<td>'. '<td align="center">'.$silver_ttl.HTML dan PHP 19 . Untuk menampung data yang dikirim tersebut kita tentu harus menyediakannya sebuah tempat yang “nyaman” yaitu di memori komputer dalam hal ini variabel.PHP <html> <head> <title>Kasir Online .$baygin.</form>.MiniMarket Janarko</title> </head> <body> <font size="4"><b>Pembelian Terproses</b></font><hr> <p><b>Berikut ini faktur pembelian anda</b></p> <table border="0"> <tr bgcolor="#cccccc"> <td align="center">Barang</td> <td align="center">Jumlah Beli</td> <td align="center">Bayar</td></tr> <?php echo echo echo echo echo echo echo echo echo echo echo echo echo echo echo ?> '<tr>'. OK kita mulai dari file minimarket.'</td>'. $baterei = $_POST[‘baterei’].html file php yang “diberi tugas” untuk memproses data adalah file proses_beli.. Karena data dalam tag inilah yang akan diproses oleh PHP.php. Satu hal lagi yang sangat penting dan mendasar adalah penamaan variabel yang akan diproses. '</table>'. '<td>Silver King</td>'. "<b>SUBTOTAL SETELAH DISKON: $subtotal</b</p>". Yang perlu saya tekankan adalah semua komponen dalam tag <form>.$silver..html. Coba isi field-field jumlah lalu klik beli jika script yang anda tulis benar maka hasilnya akan terlihat seperti gambar 1. Perhatikan cuplikan scipt berikut <form action="proses_beli.html.html dulu. Sekarang buka alamat http://localhost/webmaster/Bab1/hari-2/minimarket.'</td></tr>'. '<td>'.'</td></tr>'. '<tr>'.bercanda!.php.'</td>'. Bab 1 . '<td>'.$baterei_ttl..php" method="post"> pada scipt minimarket.$baterei.10 PENJELASAN SCRIPT Waduh saya sendiri bingung menjelaskannya? Ha. "<p><b>TOTAL: $total</b><br>".'</td>'. '<tr>'. </body> </html> Simpan dengan nama proses_beli. Selain method="post"anda juga dapat menggunakan method=”get”.'</td></tr>'.

.. define(‘HARGA_BTR’. Agar Bab 1 .. $total sudah dapat anda tebak kalau variabel tersebut menyimpan semua total harga barang mulai dari batereri. Variabel $baterei_ttl adalah variabel yang menyimpan hasil perkalian ( * ) antara isi variabel $baterei dengan konstanta HARGA_BTR.. Karena harga barang bersifat tetap dan tidak boleh berubah maka sebaiknya kita gunakan konstanta dibanding variabel.15...PHP Gambar 1... saya sarankan agar nama variabel sama dengan nama data yang kirim. baygin dan silver.. $baterei_ttl = $baterei * HARGA_BTR.HTML dan PHP 20 ..php kode diatas artinya menampung data yang dikirim dari metode POST.. . seperti yang pernah dibahas sebelumnya. Namun untuk memudahkan pemrograman... sudah jelas kan? Oh. Seperti yang pernah kita pelajari kita dapat mengambil keputusan dari dua kondisi dengan menggunakan statemen else.10: Output file proses_beli. Konstanta HARGA_BTR merupakan harga baterei CBA yaitu 7500... Pada statemen if diatas jika pengunjung berbelanja kurang dari 50000. Maka ia tidak mendapat diskon sebaliknya jika pengunjung berbelanja lebih dari 50000 maka ia dapat diskon 15% (0.. perlu dijelaskan? Baik..($total * $diskon).....] harus sama dengan nama data yang dikirimkan dalam hal ini baterei...15 dalam desimal). Variabel $subtotal merupakan hasil dari total seluruh harga dikurangi perkalian total keseluruhan harga dengan diskonnya. Saya kira tidak perlu dijelaskan. //diskon 0% } else { $diskon = 0... Untuk membuat konstanta digunakan perintah define(nama_konstanta.. 7500)..... $total = $baterei_ttl + $baygin_ttl + $silver_ttl... //diskon 15% } $subtotal = $total . Yang merupakan jumlah harga baterei CBA sejumlah x unit.... Isi dari $_POST[.. if ($total < 50000) { $diskon = 0.. isi_konstana). Sedangkan untuk nama variabel $baterei tidak harus sama dengan nama data yang dikirim...

.” Untuk menggabung variabel dengan string... Nilai $baterei_ttl akan berubah sesuai dengan perkalian dari $baterei dan HARGA_BTR... Modulus merupakan sisa pembagian dari dua bilangan. Bab 1 . echo "<b>SUBTOTAL SETELAH DISKON: $subtotal</b</p>"... pada baris yang pertama variabel $baterei kita masukkan pada kolom ke-2 pada tabel... Karena $total berada dalam tanda petik “ “ (petik dua) maka kita tidak perlu menggunakan tanda “. +...$baterei_ttl... Seperti matematika SD saja. Hei kami belum tahu!.!. $b = 2.'</td>'.. Ini juga akan mempermudah anda dalam mencari suatu kesalahan(bug) pada kode anda. Perlu diperhatikan tanda “. Selanjutnya kita kan membahas operator-oprator ini dan operator lainnya lebih detil lagi.PHP PHP tidak keliru untuk menafsirkan keinginginan kita berilah tanda ( ) didalam perhitungan. Nanti secara otomatis nilai dari $baterei akan diganti dengan angka yang dimasukkan user pada form pembelian..'</td></tr>'.$baterei. Operator Aritmatik Operator aritmatik sudah sangat umum anak SD kelas 1 pun sudah bisa menggunakan operator ini. Jika $a kita ganti dengan 15 dan $b dengan 4 maka $hasil = 4. Karena kita negara demokratis maka suara terbanyak yang kita ambil jadi saya akan menjelaskan tentang modulus. saya ini pakar matematika? Ya. * dan lainnya. echo '<td align="center">'.. Nggak usah. Terutama pada blok statemen if dan sebagainya. desainlah kode anda untuk semudah mungkin dapat dibaca dengan nyaman. nilai dari variabel $hasil adalah 1...... udah. $a = 11... ..5 – Operator Aritmatik pada PHP Operator + * / % Nama Penambahan Pengurangan Perkalian Pembagian Modulus Contoh $a $a $a $a $a + * / % $b $b $b $b $b Untuk operator aritmatik ini yang perlu sedikit saya jelaskan adalah tentang modulus..HTML dan PHP 21 . Operator artimatik tidak ada bedanya dengan operator matematika biasa. Daftar dari operator aritmatik ditunjukkan pada tabel 1...5 Tabel 1...... ==. Operator Operator merupakan simbol yang dapat digunakan untuk memanipulasi nilai dan variabel. echo "<p><b>TOTAL: $total</b><br>"..... PHP tidak memperdulikan tata letak kode anda.. <.. Pada bagian sebelumnya kita sudah menggunakan beberapa operator diantaranya =.” (titik) digunakan untuk menggabungkan string... $hasil = $a % $b.... echo '<td>'...

Ouput yang dihasilkan akan sama persis dengan yang sebelumnya. Saya kira untuk hari kedua sampai disini saja karena kalau terlalu banyak kepala anda malah pusing. $c = $a.= "Selalu Menyertaimu". $a = 'Do\'aKu '. $b = "Selalu Menyertaimu". Sekarang sebaiknya istirahat agar besok lebih fresh menerima materi berikutnya OK. Sebagai alternatif anda juga dapat memberi tanda \ (backslash) jika ingin menampilkan tanda “ atau ‘ pada penggunaan tanda yang sama di variabel. Kita dapat menggunakan tanda petik satu ( ‘ ) atau petik dua ( “ ). $a = "Do’aKu ". Seperti yang sudah pernah saya singgung sebelumnya.$b. Output yang akan ditampilkan oleh variabel $c adalah Do’aKu Selalu Menyertaimu.$b. Bab 1 . Jika anda ingin menampilkan output yang terdapat tulisan tanda “ maka sebaiknya gunakan tanda ‘ untuk mengapit string anda begitu pula sebaliknya.PHP Operator String Saya rasa saya perlu sedikit menjelaskan tentang operator ini. Anda dapat menggunakan tanda penghubung “. $c = $a. $a .” untuk menggabungkan dua string.HTML dan PHP 22 . $a = "Do'aKu". $b = 'Selalu Menyertaimu". Selain itu anda dapat menggabung string dengan cara demikian.

PHP Bab 1 .HTML dan PHP 23 .

foreach.PHP Hari Ke-3 Karena kita sudah menginjak hari ke lakukan konfigurasi berikut C:\Apache2\htdocs\webmaster\Bab1 Berilah nama folder baru tersebut hari-3. $b Operator Perbandingan Operator perbandingan digunakan untuk membandingkan dua nilai. $a += 5. dan do.... while. foreach. Contoh-contoh operator kombinasi dapat anda lihat pada tabel 1.. for.elseif..elseif.HTML dan PHP 24 . Tabel 1...6 Operator Kombinasi Pada PHP Operator += -= *= /= %= ....else...= $b Sama dengan $a = $a + $b $a = $a ..... Pada hari ke tiga ini anda diharapkan mengerti tentang: Operator Kombinasi Operator Perbandingan Operator Logika Struktur Kontrol (if. do. switch.6 Tabel 1..$b $a = $a * $b $a = $a / $b $a = $a % $b $a = $a . whille......while) Operator Kombinasi Operator kombinasi merupakan gabungan dari operator aritmatik biasa dengan variabel itu sendiri.. lihatlah contoh berikut ini.= Penggunaan $a += $b $a -= $b $a *= $b $a /= $b $a %= $b $a .... Selain itu kita akan membahas statemen selain if.. Penggunaan ekspressi ini juga akan menghasilkan nilai true atau false terganting dari perbandingan... dan Looping Pada hari yang ke tiga ini kita masih melanjutkan materi yang sebelumnya yaitu operator.7 Operator Perbandingan Pada PHP Operator Nama == sama dengan === identik != tidak sama dengan <> tidak sama dengan < kurang dari Penggunaan $a == $b $a === $b $a != $b $a <> $b $a < $b Bab 1 .. seperti if.. switch..) Perulangan (for.. Struktur Kontrol. $a = $a + 5.. Kode diatas artinya sama dengan.. Saya sendiri bingung menjelaskannya.. Operator.. dan perulangan (looping) while.

. } anda dapat menulis statemen ini tanpa spasi seperti elseif atau dengan spasi else if. $a >= 0 && $a <= 10 PHP mendukung penggunaan operator AND. kita mungkin menemukan kasus nilai dari variabel $a berada diantara 0 sampai 10.. Karena jika pembeli yang berbelanja lebih dari 50000 meski sangat besar diskonnya tetap sama yaitu 15%..HTML dan PHP Statemen if.elseif.. 25 ... Sebagai contoh. hanya dapat memakai dua kondisi. Jika user tidak mengisi apa-apa Jika berbelanja kurang dari 25000 diskon 0% Jika berbelanja antara 25000 – 50000 diskon 5% Bab 1 .. kita gunakan operator AND. Untuk mengetes kondisi $a >= 0 dan $a <= 10. } elseif ($a > 0) { eksekusi kode.. Anda tentu menyadari pada script yang pernah kita yaitu proses_beli. Tabel 1. Statemen if.else. Pada script tersebut terdapat kondisi dimana kita memberikan diskon pada pembeli. maka script tersebut masih banyak kekurangan. Keduanya sama-sama valid.elseif.. juga sebaliknya True jika $a atau $b atau keduanya true. if ($a == 0) { eksekusi kode. Namun karena hanya menggunakan if. Ini dapat kita gunakan jika kita menghadapi persoalan dimana kita harus membuat keputusan dari banyak kemungkinan....8 Operator Logika Pada PHP Operator Nama Penggunaan ! NOT !$a || OR $a || $b && or and AND OR AND $a && $b $a or $b $a and $b Operator Logika Hasil True jika $a adalah false.. selain itu false True jika keduanya $a dan $b nilainya true. Masalah yang akan kita pecahkan adalah.else. } else if ($a < 0) { eksekusi kode. OR.php. dapat memiliki lebih dari dua kondisi alias buanyak. selain itu false sama seperti || sama seperti && Struktur Kontrol (lanjutan) Jika statemen if. XOR(eksklusif OR) dan NOT....PHP > <= >= lebih dari kurang dari atau sama dengan lebih dari atau sama dengan $a > $b $a <= $b $a >= $b Operator logika digunakan untuk mengkombinasikan hasil dari sebuah kondisi logika.

} $subtotal = $total .. Web Janarko Fungsi: untuk memproses file minimarket.HTML dan PHP . <?php /* NamaFile: proses_beli. $baygin_ttl + $silver_ttl. } elseif ($total >= 75000) { $diskon = 0.html */ //buat variabel untuk menanpung data dari minimarket. 7500).php untuk membuka file proses_beli.ELSEIF. } elseif ($total >= 25000 && $total <= 49000) { $diskon = 0. //diskon 15% $pesan_diskon = '<b>Diskon 15%</b>'. $baterei_ttl = $baterei $baygin_ttl = $baygin * $silver_ttl = $silver * $total = $baterei_ttl + * HARGA_BTR. exit. //diskon 5% $pesan_diskon = '<b>Diskon 5%</b>'. } if ($total > 0 && $total < 25000) { $diskon = 0. define('HARGA_BYN'..($total * $diskon).php Penulis: Mr... HARGA_SLR.1. 1750).05. ?> <html> 26 Bab 1 . define('HARGA_SLR'. Untuk mengaplikasikan statemen ini jalankan PHP DESIGNER 2006. $baygin = $_POST['baygin'].html $baterei = $_POST['baterei'].15.PHP Jika berbelanja antara 50000 – 75000 diskon 10% Jika berbelanja lebih dari 75000 diskon 15% PENERAPAN TEORI IF. } elseif ($total >= 50000 && $total <= 74000) { $diskon = 0. //diskon 0% $pesan_diskon = '<b>Diskon 0%</b>'. 2250). HARGA_BYN. if ($total <= 0) { echo "Anda tidak membeli apa-apa". # buat konstanta harga masing-masing produk define('HARGA_BTR'. //diskon 10% $pesan_diskon = '<b>Diskon 10%</b>'. Klik menu File-Open arahkan ke c:\Apache2\htdocs\webmaster\Bab1\hari-3\proses_beli.php Ubahlah kode script tersebut sehingga menjadi seperti script dibawah ini. $silver = $_POST['silver'].

'</td>'. if ($total <= 0) Perintah diatas berari jika $total kurang dari atau sama dengan 0 berarti user tidak mengisi apa-apa. Bab 1 .$baterei.HTML dan PHP 27 .'</td></tr>'.PHP <head> <title>Kasir Online . Maka tampilkan pesan lalu keluar script dengan perintah exit. Diskon 0% untuk 25000 kebawah dan seterusnya.. '<tr>'.$silver.. '<td>'. '<td>'. Kita menggunakan tanda >= (lebih besar dari atau sama dengan) dan < (kurang dari) untuk menentukan eksekusi kode. Kita masukkan kondisi kurang dari nol karena mungkin saja user memasukkan angka negatif. diskon 5%. '<tr>'. Tanda “&&” artinya adalah “dan”. Seperti yang tertera pada masalah yang ingin kita pecahkan.. PENJELASAN SCRIPT Karena script ini sudah pernah dibahas sebelumnya maka saya hanya menjelaskan beberapa hal yang baru yaitu mengenai if.$silver_ttl. "<b>SUBTOTAL SETELAH DISKON: $subtotal</b</p>". Pada bagian bawah ditambahkan tulisan yang menunjukkan diskon yang diperoleh pembeli. User tidak mengisi.'</td>'.'</td></tr>'. '<td>Baterei CBA</td>'.$baterei_ttl. "<p><b>TOTAL: $total</b><br>". '</table>'. Pada script diatas terdapat empat kondisi yang mungkin terjadi. selain menggunakan tanda “&&” kita juga dapat menuliskan nama operatornya yaitu “and”.$baygin_ttl.$baygin. '<td>Silver King</td>'. Pada elseif ketiga kita menggunakan "and" hal itu sama saja..'</td></tr>'. diskon 10% dan diskon 15%. '<td align="center">'.MiniMarket Janarko</title> </head> <body> <font size="4"><b>Pembelian Terproses</b></font><hr> <p><b>Berikut ini faktur pembelian anda</b></p> <table border="0"> <tr bgcolor="#cccccc"> <td align="center">Barang</td> <td align="center">Jumlah Beli</td> <td align="center">Bayar</td></tr> <?php echo echo echo echo echo echo echo echo echo echo echo echo echo echo echo echo ?> '<tr>'. '<td>'.'</td>'.. Itu berarti 25000 masuk pada diskon 10% sedangkan 75000 tidak termasuk. '<td align="center">'.elseif. </body> </html> Simpan kembali file tersebut lalu jalankan pada browser. '<td align="center">'. elseif ($total >= 25000 && $total < 75000) Pada kode di atas jika kita terjemahkan berarti selain itu jika harga total lebih besar dari 25000 dan harga total kurang dari 75000. '<td>Baygin</td>'. tidak ada diskon. "$pesan_diskon<br>".

HTML dan PHP 28 . case $total >= 50000 && $total < 75000. foreach. break. <html> <head> <title>No Looping</title> Perulangan (looping) Bab 1 . case $total >= 25000 && $total < 50000. Statemen if hanya mengenal true atau false. Kita akan membuat sebuah file HTML terlebih dahulu yang nantinya akan kita selesaikan dari sudut pandang looping. Ketika suatu kondisi tertentu ditemukan oleh statemen case seperti case $total == 0. $diskon = 0. break. while.. Sebelum membahas masing-masing perulangan satu per satu. switch($total) { case $total > 0 && $total < 25000.05. Pada switch kita dapat mengambil kondisi dari berbagai macam nilai dan tipe seperti string.. Statemen switch() Sebenarnya prisip kerja statemen switch hampir sama dengan if. PENERAPAN TEORI SWITCH. maka semua kode yang berada pada case tersebut akan dieksekusi sampai adanya statemen break. Pesan ini akan kita munculkan pada bagian bawah faktur bersama dengan TOTAL biaya.php dengan statemen switch. $diskon = 0. Anda dapat mengganti blok statemen if. break. Hasilnya akan sama persis.. Pada bahasan berikut ini kita akan membahas perulangan yang merupakan salah satu hal yang wajib dikuasai programmer.. Variabel $pesan_diskon berisi string berupa kode HTML yang bertujuan untuk memberitahu pengunjung berapa diskon yang mereka peroleh. $pesan_diskon = '<b>Diskon 15%</b>'. Khusus untuk foreach tidak dibahas kali ini melainkan pada materi selanjutnya yang berhubungan dengan array.. berikut ini..1.. } Karena yang ingin kita handel adalah kondisi dari variabel $total maka kita menuliskan statemennya dengan switch($total). Statemen break menandakan akhir dari suatu kondisi case. break.15. //diskon 10% $pesan_diskon = '<b>Diskon 10%</b>'.. $diskon = 0. //diskon 0% $pesan_diskon = '<b>Diskon 0%</b>'. $diskon = 0.. PHP memiliki empat type perulangan diantaranya for.... //diskon 5% $pesan_diskon = '<b>Diskon 5%</b>'. Untuk menangani kondisi yang kita inginkan digunakan statemen case. Seperti biasa kita jalankan software favorit kita yaitu PHP DESIGNER 2006 klik File-NewHTML/XHTML. Tapi switch mengijinkan kita untuk mengambil lebih dari dua nilai. case $total >= 75000.PHP $pesan_diskon = ‘<b>Diskon 10%</b>’. pada proses_beli... Salah satu kelebihan komputer adalah melakukan suatu pekerjaan berulang-ulang tanpa rasa bosan sedikitpun.....while. integer maupun double.elseif. dan do.

Perulangan while() while (indonesia: selama) merupakan perulangan paling sederhana dalam PHP.HTML dan PHP 29 .PHP </head> <body> <table border="0" cellpadding="4"> <tr bgcolor="#cccccc"> <td><b>Bensin (Liter)</b></td> <td><b>Harga (Rp. Seperti halnya statemen if.11: Output file bensin. Dengan menggunakan looping kita dapat menghemat waktu dan tenaga kita.11. Gambar 1. while bergantung pada suatu kondisi. Bab 1 . while mengeksekusi blok kode secara berulang-ulang selama kondisi itu true.Lho kok seperti promosi barang?!?.html Anda sebagai manusia pasti bosan jika harus mengetik dengan cara demikian.)</td></b></tr> <tr> <td align="right">5</td> <td align="right">22500</td></tr> <tr> <td align="right">10</td> <td align="right">45000</td></tr> <tr> <td align="right">15</td> <td align="right">67500</td></tr> <tr> <td align="right">20</td> <td align="right">90000</td></tr> <tr> <td align="right">25</td> <td align="right">112500</td></tr> </table> </body> </html> Simpan dengan nama bensin. Perbedaannya adalah jika statemen if mengeksekusi blok kode hanya sekali jika kondisi itu true.html pastikan Save as type-nya HTML Document sekarang coba jalankan pada browser hasilnya akan seperti gambar 1. Untuk itu telah hadir sebuah terobosan baru --.

Sebaliknya jika kondisi masih true dimana nilai $a masih kurang dari atau sama dengan 5 maka blok kode akan terus dieksekusi.html tetapi menggunakan looping pada PHP. kedua nilai $a akan ditambah 1. Pada awal setiap looping. Untuk penerapan teori while ini kita akan membuat file yang tampilannya persis seperti file bensin. echo '<td align="right">'.php. PENJELASAN SCRIPT Pertama kita membuat variabel bernama $liter yang menentukan nilai awal banyaknya bensin. while ($a <= 5) { echo $a. Selanjutnya kita membuat variabel $harga yang menampung nilai dari harga bensin 30 Bab 1 . $harga = 4500.HTML dan PHP . $a = 1. Arti dari $a++ adalah pertama nilai dari $a akan dikembalikan yakni 1.)</b></td></tr> <?php $liter = 5. while ($liter <= 25) { echo "<tr>". Struktur dasar dari perulangan while adalah: while(kondisi) ekspresi. while akan mengetes kondisi. Jalankan PHP DESIGNER 2006 klik FileNew-PHP salin kode berikut agar perulangan while nancap di memori otak kita.PHP Perulangan while dapat anda gunakan ketika anda tidak tahu berapa kali pengulangan itu harus dilakukan untuk membuat kondisi true.’<br>’. <html> <head> <title>While Loop</title> </head> <body> <table border="0" cellpadding="4"> <tr bgcolor="#cccccc"> <td><b>Bensin (Liter)</b></td> <td><b>Harga (Rp. PENERAPAN TEORI WHILE. } ?> </table> </body> </html> Simpan dengan nama bensin_while. } Pada loop while diatas output yang dihasilkan adalah angka 1 sampai dengan 5. echo "<td align=\"right\">$liter</td>".'</td></tr>'.. $a++..11.$liter * $harga. Di bawah ini adalah contoh sederhana penggunaan while. Sekarang nilai $a menjadi 2. $liter += 5. Jika kondisi false dalam hal ini jika nilai $a melebihi 5 maka blok kode tidak akan dieksekusi. selajutnya 2 akan ditambah 1 lalu menjadi 3 demikian seterusnya hingga mencapai 5. jika anda menjalankannya pada browser maka hasilnya akan sama persis seperti gambar 1.

while mengetes kondisi $liter apakah kurang dari atau sama dengan 25 jika ya maka true... Are You Understand Brother? Good. untuk menghapus kebingungan anda obatnya tidak lain adalah satu tablet PHP DESIGNER 2006 dan segelas kode for...html. disinilah anda merubah nilai variabel pengetes.$liter * $harga. ekspresi2) ekspresi3.'</td></tr>'.. Pada akhir dari perulangan kita modifikasi variabel pengetesnya.HTML dan PHP 31 .. Pada statemen while diatas. Karena pada blok while terdapat kode $liter += 5. disinilah anda letakkan kode yang ingin anda eksekusi. agar nanti anda mudah mempelajarinya ulang.. Maka pada eksekusi ke dua nilai variabel $liter tidak lagi 5 melainkan 10. Saya yakin anda pasti masih bingung.php. Perulangan for() Cara yang kita lakukan pada perulangan while sebelumnya adalah sangat umum dilakukan.good. while ($liter <= 25). kondisi: akan dites sebelum setiap kali perulangan dilakukan. disini kita biasanya menentukan nilai awal variabel..good. echo "<td align=\"right\">$liter</td>". Pada for sedikit berbeda. ekspresi1: dieksekusi satu kali pada saat mulai. kita menset variabel pengetes lalu kondisi yang diinginkan dan modifikasi variabel pengetes terletak dalam satu baris. Berarti blok while akan dieksekusi untuk pertama kali. echo '<td align="right">'.php untuk membuka file tersebut. <?php $harga = 4500. Ubahlah kode yang terletak pada tag PHP yaitu <?php dan ?> gantilah dengan script berikut. jika kondisi true maka blok tetap dieksekusi demikian sebaliknya jika false. ekspresi3: dieksekusi satu kali setiap perulangan. Dari sini kita dapat melihat penulisan for akan lebih sederhana dibanding while. $liter <= 25. Jalankan PHP DESIGNER 2006 klik File-Open arahkan ke file bensin_while. Output yang dihasilkan sama persis dengan bensin_while. PENERAPAN TEORI FOR. for ($liter = 5. Demikian seterusnya hingga nilai $liter = 25.PHP yaitu 4500.. ekspresi2: dieksekusi pada pada akhir dari setiap perulangan.php dan bensin. Struktur dasar penulisan for adalah seperti berikut. } ?> Save As file ini dengan nama bensin_for. kondisi. Karena setelah itu kondisi $liter tidak memenuhi syarat kondisi yang ditentukan while dimana $liter hanya boleh kurang dari atau sama dengan 25 jadi nilainya false. jika true lakukan eksekusi. $liter += 5) { echo "<tr>". Sebelum perulangan kita mengetes kondisi. for (ekspresi1. Maka blok while berhenti dieksekusi. yang artinya $liter = $liter + 5. Untuk menentukan harga total nantinya kita menggunakan operasi matematik perkalian ( * ). Bab 1 ..

ini dikarenakan pengetesan kondisi pada do... Perulangan for diatas kita menentukan nilai awal variabel $liter yaitu 5.. echo "<td align=\"right\">$liter</td>". sehingga kondisi menjadi false. Pada PHP DESIGNER 2006 bukalah file bensin_for. Itu tidak sesuai dengan kondisi yang diinginkan yaitu $liter <= 25. Maka looping berhenti dilakukan.while. Karena saya sudah menjelaskan script ini dua kali jadi saya rasa tidak perlu menjelaskannya ulang. do { echo "<tr>".WHILE.. <?php $harga = 4500.. Pada ekpresi 2 yaitu $liter += 5 yang artinya setiap kali blok kode selesai dieksekusi maka nilai $liter akan selalu ditambah 5.. $liter += 5. PENERAPAN TEORI DO. ?> Save As dengan nama bensin_do_while. Demikian seterusnya hingga nilai $liter mencapai 25. Bab 1 ... Jadi meskipun kondisi awal nilai variabel false blok kode pada do. echo '<td align="right">'.HTML dan PHP 32 . Pada do.while mesikipun nilai awal false kode minimal akan dieksekusi satu kali.while setidaknya akan tetap dieksekusi minimal satu kali.. Struktur dasar penulisan looping do.. $liter = 5. Untuk membuktikannya coba gantilah nilai $liter menjadi 30 maka kode akan diekskusi satu kali...while() Perulangan do.. Yang perlu anda ingat adalah jika for dan while akan melakukan pengetesan kondisi pada awal looping.while dilakukan pada akhir kode. } while ($liter <= 25). Ini tidak berlaku bagi for dan while.php. Selanjutnya nilai $liter akan dites apakah masih sesuai dengan kondisi dimana $liter tidak boleh lebih dari 25.while sebagai berikut.. do ekspresi.. Mengapa demikian. merupakan perulangan yang tergolong berbeda dari for dan while. Perulangan do(). Jadi pada eksekusi ke dua nilai $liter adalah 10. sehingga jika false blok kode tidak akan pernah dieksekusi..'</td></tr>'.$liter * $harga. pada eksekusi ke tiga nilai $liter menjadi 15. Gantilah kode yang berada pada tag <?php dan ?> dengan kode berikut ini.. Setelah itu blok kode tidak akan dieksekusi karena kondisi nilai $liter menjadi 30.php yang pernah anda buat.PHP PENJELASAN SCRIPT Hampir sama dengan while.. while (kondisi). Untuk itu kondisi dituliskan dengan menggunakan notasi $liter <= 25.

HTML dan PHP 33 .PHP Bab 1 .

File dan Array Untuk hari yang ke empat fokus materi yang akan kita pelajari meliputi interaksi PHP dengan file sistem dan array.PHP Hari Ke-4 Seperti biasa buatlah folder baru pada direktori C:\Apache\htdocs\webmaster\ Bab1\ beri nama folder baru tersebut hari-4. Garis Besar Pemrosesan File Terdapat tiga langkah untuk menulis ke file. Membuka file.HTML dan PHP 34 . Emangnya mau take off. 3. berapa banyak file yang akan kita baca dalam satu waktu. Pada hari ke empat ini anda diharapkan mengerti tentang: Menyimpan File Membuka File Menulis ke File Menutup File Membaca dari File Menghapus File Memahami Array Array dengan Index Numerik Array dengan Index String Meskipun dalam konsep diatas kelihatan banyak materi yang harus anda kuasai. Membuka File Bab 1 . Menulis data ke file. Menutup file Hampir sama dengan menulis. Menutup file. Khusus untuk mambaca data dari file. Menyimpan File Sebenarnya ada dua cara pada PHP untuk menyimpan data. Terutama jika menyangkut kecepatan akses dan keamanan. Penyimpanan data dengan file cukup sederhana tapi mempunyai banyak kekurangan. gunakan exit() untuk keluar dari program 2. Untuk membuka file pada PHP kita gunakan fungsi fopen(). Pada hari ke empat ini akan cukup sulit jadi mohon kencangkan sabuk pengaman anda. Tetapi pada kenyataannya tidak sebanyak itu karena untuk penyimpanan data kita nanti menggunakan database bukan file.html agar dapat menyimpan pembelian dari pengunjung. untuk membaca file juga terdapat tiga langkah: 1. Membaca data dari file. Dikenal dengan istilah File Mode. Membuka file. Untuk penerapan teori ini nantinya kita akan merubah file minimarket. 3. diantaranya: 1. Ini akan kita bahas lebih lanjut nanti. 2. Yaitu menggunakan file biasa dan database. Namun dalam beberapa situasi anda mungkin memerlukan pengetahuan tentang ini. Pada saat membuka file kita harus menentukan metode apa yang akan kita gunakan pada file ini. Jika file tidak ada.

Pada contoh kita menggunakan mode 'a' dimana setiap terjadi transaksi pembelian. coba dan buat secara otomatis. Pada saat anda ingin menulis file anda mungkin ingin menindih(overwrite) isi dari file atau menambahkannya(append). Isi dari file faktur tidak dihapus melainkan ditambah pada akhir dari isi. Fungsi fopen() minimal memerlukan 2 parameter. Jika file tidak ada buat secara otomatis. Anda mungkin hanya ingin membaca file saja. jika terdapat isi. Jika anda coba menulis ke file pada sistem yang membedakan file binari dan file text biasa. 3.. dimulai dari awal file Read Mode – artinya membuka file untuk dibaca dan ditulis. Daftar lengkap file mode yang tersedia dapat anda lihat pada tabel 1. Jika sudah ada tindih file tersebut. “ koma.9. Pada parameter anda dapat menggunakan tanda petik satu maupun petik dua. Dimana isi dari file tidak dihapus melainkan ditambah isi baru pada akhir baris. 2. Jika file tidak ada.HTML dan PHP 35 . Jika file tidak ada buat secara otomatis. Hal ini perlu dilakukan agar faktur dari pembeli lain tidak ikut terhapus. Jika fungsi fopen() berhasil membuka file tersebut isi dari file akan disimpan pada variabel $buka_file.txt' Sebaliknya jika file kita berada pada direktori yang diatasnya lagi maka kita gunakan tanda ". dimulai dari awal file Write Mode – artinya membuka file untuk ditulis. Yaitu parameter file yang akan diproses (parameter 1) dan file mode (parameter 2). Tabel 1. dimulai dari awal file. jika terapat isi." yang artinya pindah satu folder ke atas. b Binary Mode – artinya digunakan untuk menghubungkan satu mode dengan mode lainnya. dimulai dari awal file.txt’. w+ a a+ Write Mode – artinya membuka file untuk ditulis dan dibaca.. Setiap parameter dipisahkan oleh tanda “ . Menggunakan fopen( ) Kita asumsikan kita akan menulis faktur pembelian minimarket online Mr. Jika file tidak ada buat secara otomatis. parameter 1 parameter 2 $buka_file = fopen(‘faktur. Jika file anda berada pada subdirektori lagi misalnya “folderX”. atau keduanya membaca dan menulis file. Ada tiga pilihan yang dapat anda gunakan pada saat membuka file. Bab 1 . Jika sudah ada tindih file tersebut. Append Mode – artinya membuka file untuk menambahkan(menulis) dan dibaca dimulai dari akhir dari isi file. Web Janarko pada sebuah file. 1.txt' Maksud dari 'a' pada parameter 2 adalah mode file yang akan kita gunakan adalah append. Sehingga kita menuliskan parameter 1 menajdi '. Maka pada parameter 1 anda harus menuliskan 'folderX/faktur.9 File Mode yang tersedia untuk fopen() Mode r r+ w Keterangan Read Mode – artinya membuka file untuk dibaca./faktur.PHP File Mode merupakan sinyal yang harus diketahui oleh server agar server dapat menentukan mekanisme kerja yang harus diberikan pada file tersebut. ‘a’). Kita dapat membuka file ini dengan menggunakan perintah. anda harus menentukan ini. menulis file saja. dimulai dari akhir dari isi file. Append Mode – artinya membuka file menambahkan(menulis) saja.

php.$baygin baygin #.'</td></tr>'.$subtotal SubTotal\n" Kelihatannya rumit? tidak juga. Untuk itu ikuti langkah-lagkah berikut ini. Jalankan PHP DESIGNER 2006 klik File-Open Arahkan ke C:\Apache\htdocs\webmaster\Bab1\hari-4\. Menutup File Saat anda selesai menggunakan sebuah file anda harus menutupnya.PHP Menulis File Menulis file pada PHP relatif simpel kita cukup menggunakan fungsi fwrite().$silver silver king -#.$silver_ttl -#.'</td>'.$silver_ttl. ubahlah kode yang berada pada tag <?php dan ?> dengan menambahkan beberapa baris kode baru seperti berikut.$baterei.'</td>'.'</td></tr>'.$batereri baterei -#. PENERAPAN TEORI fopen().html lalu klik Open Save As file dengan nama yang sama dan letakkan di direktori C:\Apahe2\htdocs\webmaster\Bab1\hari-4\. '<td>Silver King</td>'.$baygin_ttl.'</td>'. Kita tentu harus membuat format file yang ingin kita tulis. '<td>Baygin</td>'.ini berguna untuk memisahkan setiap komponen untuk diubah menjadi array. Fungsi ini akan mengembalikan nilai true jika file berhasil ditutup atau false jika file gagal ditutup.$baygin. Jika anda perhatikan setiap elemen diberi tanda -#.$baterei_ttl.php dan menambahkan beberapa perintah baru. '<td>'.$baterei_ttl -#. '<tr>'. Hal yang sama berlaku untuk file proses_beli.*). Untuk format file yang akan kita tulis ke faktur adalah. '<td align="center">'. Pilih file marketing. Pada pemanggilan fungsi fwrite() diatas parameter pertama yaitu $buka_file merupakan file yang dibuka.'</td></tr>'. Files of type All files(*. fwrite().$silver. Untuk menutup file anda dapat menggunakan perintah fclose(). Contohnya fclose($buka_file). Penjelasan lebih lengkap pada materi selanjutnya. Parameter kedua merupakan string yang akan ditulis pada file tersebut dapat juga berupa variabel seperti contoh diatas. dan fclose() Untuk penerapan teori ini kita akan merubah file proses_beli.php Edit file proses_beli. '<td align="center">'. Kita dapat menggunakan fungsi fwirite dengan menuliskan: fwrite($buka_file. '<td >Baterei CBA</td>'. '<td>'. '<td align="center">'. Ini nantinya akan mempermudah kita dalam mengedit file tersebut terutama dalam array. $isi_faktur = "$tgl -#. '<tr>'. '</table>'.HTML dan PHP 36 . <?php echo echo echo echo echo echo echo echo echo echo echo echo echo '<tr>'. Bab 1 . '<td>'. $string_untuk_ditulis).$baygin_ttl -#.

File ini diletakkan satu folder bersama file pemroses karena tidak ada tanda khusus berupa masuk ke subdirektori lain atau pindah ke parent direktori (.$silver_ttl -#.txt coba buka file tersebut dengan notepad atau langsung lewat IE. $buka_file = fopen('faktur.txt'.php. arti dari fungsi fopen pada kode diatas adalah pertama PHP akan membuka file bernama faktur. if (!$buka_file) { echo "<p><b>Maaf. Pembelian anda tidak dapat diproses. echo "$pesan_diskon<br>". kita memilih ini karena dianggap paling mudah. date() merupakan fungsi built-in PHP untuk menampilkan format tanggal dan waktu. } fwrite($buka_file.php menulis data ke file faktur. exit. Sekarang pada direktori hari-4 terdapat file baru yaitu faktur.txt'. j F'). Jadi setiap file proses_beli.(kita akan mengetahuinya nanti pada pembahasan array). $tgl = date('H:i.html. echo "<b>SUBTOTAL SETELAH DISKON: $subtotal</b></p>". $isi_faktur). exit.$subtotal SubTotal\n". Kita akan membahasnya pada materi khusus yang membahas Tanggal dan Waktu. PENJELASAN SCRIPT Pada penambahan kode baru diatas terdapat variabel $tgl = date(H:i.. Mohon coba lagi nanti</b></p></body></html>".HTML dan PHP 37 .txt. Pembelian anda tidak dapat diproses. Tanda ini memberitahukan PHP agar berpindah ke baris baru (new line). Pada contoh setiap transaksi dipisahkan oleh baris baru.$baterei baterei -#.PHP echo "<p><b>TOTAL: $total</b><br>". } Pada statemen if diatas terdapat tanda " ! " didepan variabel $buka_file. echo '<p>Faktur telah tersimpan</p>'.$silver silver king -#. Sekarang coba jalankan file http://localhost/webmaster/Bab1/hari-4/marketing. 'a'). fclose($buka_file). ?> Setelah selesai simpan kembali file proses_beli. j F). 'a').txt ia akan menulis pada baris baru bukan dibelakang huruf paling akhir. Pada variabel $isi_faktur kita memisahkan setiap elemen dengan tanda -#. $isi_faktur = "$tgl -#. $buka_file = fopen('faktur. Maka munculkan pesan dan Bab 1 ./ ). Coba anda isikan sembarang angka dan klik tombol beli. Mohon coba lagi nanti</b></p><body></html>".$baygin baygin -#$baygin_ttl -#. if (!$buka_file) { echo "<p><b>Maaf.$baterei_ttl -#. Tanda ini dimaksudkan jika ada kesalalan pada proses fopen() sebelumnya. Yang perlu anda ketahui adalah tanda "\n".txt jika file itu tidak ada maka buat (ingat file mode ‘a’). pada akhir dari baris akan muncul tulisan faktur tersimpan berarti PHP berhasil menulis file faktur.

php setelah modifikasi Membaca File Sebenarnya PHP menyediakan banyak fungsi untuk membaca file. fwrite($buka_file. Namun yang paling mudah digunakan adalah fungsi readfile(). echo '<p>Faktur telah tersimpan</p>'.PHP akhiri jalannya script dengan fungsi exit.. Pada fungsi ini PHP akan membaca seluruh isi file sekaligus. $isi_faktur merupakan string yang akan kita tulis ke file faktur. Jika digunakan PHP akan mencari file pada direktori included_path yang ada pada konfigurasi PHP. [ gunakan_included_path] ). Parameter ke dua bersifat opsional artinya boleh digunakan atau tidak. Karena pada fungsi fopen() sebelumnya file mode yang kita gunakan ‘a’ maka saat menulis file fwrite() akan menambahkan data pada setiap akhir data pada file. Setelah file selesai ditulis maka sebagai pengguna yang baik kita harus menutupnya dengan fclose($buka_file) bukan begitu?.txt. $isi_faktur). Struktur dasar penulisan fungsi readfile() adalah readfile(string nama_file. Gambar 1. Ketik script dibawah ini. Karena script akan berhenti dieksekusi maka kita tutup dengan tag </body></html> pada akhir echo. fclose($buka_file). parameter pertama merupakan string nama file yang akan anda buka. PENERAPAN TOERI readfile( ) Jalankan PHP DESIGNER 2006 buatlah file PHP baru dengan mengklik File-New-PHP. <html> <head> <title>Minimarket Online .Lihat Faktur</title> Bab 1 . readfile() akan mencetak tampilan standar ke browser dan secara otomatis menutup file yang telah dibuka. Agar user mengetahui sebaiknya kita memunculkan pesan yang menunjukkan bahwa proses penyimpanan faktur telah berhasil.12: output proses_beli.HTML dan PHP 38 .

?> </body> </html> Simpan script diatas dengan nama lihat_faktur. PHP mendukung penggunaan dua tipe index array yaitu tipe numerik dan tipe string. Contoh penggunaan dari fungsi unlink adalah unlink('faktur.13: Daftar transaksi konsumen di minimarket Mr. Web Janarko dapat diubah menjadi array Bab 1 . Sebenarnya apa itu array?.txt'). Array dapat juga berisi array lainnya. Array juga memiliki banyak elemen.txt').14: Produk Minimarket Mr. Array Dari hari pertama sering kita jumpai kata array. Ini berbeda dengan variabel yang hanya meyimpan sebuah nilai. Saya kira tidak perlu dijelaskan masa cuma tiga baris kode saja dijelaskan?!?. Waduh. Web Janarko Menghapus File Jika anda ingin menghapus file anda dapat menggunakan fungsi unlink().. Array merupakan bagian penting dalam sebuah pemrograman. Mungkin anda mudah lupa akan fungsi ini karena biasanya untuk menghapus nama fungsinya biasanya ada embel-embel kata "delete". Setiap elemen pada array dapat menyimpan sebuah nilai. OK.HTML dan PHP 39 . Kegagalan unlink biasanya disebabkan file tidak ada atau permission(hak) atas file dibatasi. Array adalah sebuah variabel yang menyimpan sekumpulan atau beberapa nilai. sebaliknya jika false. Jalankan pada browser anda output tampilannya akan seperti gambar 1. Jika berhasil akan mengembalikan nilai true.Bingung?!?. seperti text atau angka. Maksudnya bukan isi dari array tersebut melainkan bagaimana memanggil array tersebut untuk mendapatkan nilai array tersebut.PHP </head> <body> <h2>Daftar Faktur Pembelian Konsumen</h2> <?php readfile('faktur.. Gambar 1.php.13. sabar sebentar “apotik contoh” belum buka nanti kalau buka saya belikan obatnya. Baterei CBA  Baygin  Silver King Gambar 1. array tipe ini disebut array multidimensi.

10 Variabel array $produk dan nilainya Variabel Nilai $produk[0] 'Baterei CBA' $produk[1] 'Baygin' $produk[2] 'Silver King' Ingat array dengan index numerik selalu diawali dengan index 0.. Setiap elemen mempunyai tanda pengenal berupa index yang digunakan untuk mengakses nilai dari elemen itu sendiri. Mengakses Isi Array Untuk mengakses isi dari variabel kita menggunakan nama variabel tersebut. dan seterusnya.4 produk terdiri dari tiga barang yaitu baterei CBA.. $produk[0] = 'Baterei CBA'..1. Tampilan yang dihasilkan dari perintah diatas adalah Baterei CBA Baygin Silver King Output 1 Selain dengan menggunakan perintah array(. Pada gambar 1. array() merupakan perintah yang digunakan pada PHP untuk membuat array. $produk = array(‘Baterei CBA’.2. Selanjutnnya kita akan bahas bagaimana mengakses array.. $produk[2] = 'Silver King'. 'Baygin'. Setiap nilai yang ada didalam array disebut elemen array.. Looping dalam array dengan index numerik Untuk mengakses nilai dari suatu array kita juga dapat menggunakan looping. “Apotik Contoh” telah buka rupanya untuk itu minumlah obat ini. Jika kita gambarkan pada tabel maka array dari $produk adalah Tabel 1. Pada kode diatas kita membuat array dengan nama $produk yang berisi tiga nilai yaitu Baterei CBA. Dan sangat melelahkan jika kita mengaksesnya secara manual.) anda dapat langsung membuat array $produk dengan mengetikkan variabel array dan indexnya secara langsung. Jika variabel itu beripe array maka kita gunakan index array tersebut. Baygin dan Silver King. Array dengan Index Numerik Array dengan tipe ini setiap elemen pada array diberi index mulai dari 0. Baygin..PHP Untuk gampangnya kita mengambil contoh produk dari minimarket dan akan kita jadikan array. $produk[] = 'Baygin'.HTML dan PHP 40 . ‘Baygin’. $produk[1] = 'Baygin'. Atau Dengan menggunakan perintah diatas anda anda akan memproleh hasil yang sama dengan perintah $produk = array('Baterei CBA'. $produk[] = 'Silver King'. $produk[] = 'Baterei CBA'. Jadi jika kita ingin menampilkan nilai array pada browser maka kita gunakan perintah. echo "$produk[0] $produk[1] $produk[2]". Looping sangat berguna jika kita mengakses array dalam jumlah yang sangat besar. Bab 1 .. 'Silver King') seperti pada output 1. dan Silver King. ‘Silver King’). index array selalu diletakkan dalam tanda [ ] ( kurung siku ). Ciri-ciri array lainnya..

while ($i<3) { echo "$produk[$i] ". mau ngelamar atau belajar nih. $i++. Untuk mendapatkan tampilan yang sama dengan output 1.?!?!?. } Looping array dengan foreach() Ini adalah satu satunya looping yang belum kita bahas. penulisan foreach untuk variabel $produk dapat kita ketikkan seperti berikut foreach($produk as $barang). Pada $i++ setiap kali blok kode selesai dieksekusi nilai $i akan selalu ditambah 1. Setelah itu kondisi yang kita tentukan adalah $i<3 artinya yang masuk dalam kondisi adalah 0. Kode while dibawah ini juga akan menghasilkan tampilan seperti output 1. $i<3. Nah saat inilah saat yang paling tepat untuk mengenal si foreach tersebut lebih jauh. Sekarang kita akan menggunakan for untuk mengakses nilai array. } Untuk variabel pengetes $i kita set nilainya 0 karena array $produk dimulai dari 0. Dimana: ekspresi1. merupakan variabel baru tempat menyimpan setiap nilai elemen array ekspresi3. $i++) { echo "$produk[$i] ".PHP Looping array dengan for() Pada hari ke-2 kita sudah pernah membahasnya. merupakan tempat anda meletakkan kode yang ingin dieksekusi untuk mendapatkan tampilan seperti output 1.1. Kita dapat menuliskan for dengan cara for ($i=0. Looping array dengan while() Untuk while juga sama hanya saja penempatan variabel pengetes dan kondisi berbeda letaknya. Struktur dasar dari perulangan foreach adalah foreach(eksperesi1 as ekspresi2) ekspresi3.. Bab 1 . Mengapa? Karena foreach() merupakan looping yang didesain khusus untuk array. { echo "$barang ". $i=0. Blok kode akan berhenti dieksekusi jika nilai $i lebih dari 2 karena tidak sesuai dengan kondisi yang ditentukan dimana $i kurang dari 3.2. merupakan variabel array yang akan dimanipulasi ekspresi2. Untuk setiap elemen array pada produk jadikan sebagai variabel barang kemudian tampilkan barang hingga elemen yang terakhir.. Kali aja orang tuanya setuju. } Jadi jika kita terjemahkan kedalam bahasa indonesia yang baik dan benar akan berbunyi.HTML dan PHP 41 . Looping for ini memang cocok digunakan untuk tipe array dengan index numerik.

Isi dari variabel barang tidak lain adalah nilai dari elemen array $produk. Sedikit berbeda dengan cara pembuatan array dengan index numerik. Jika pada tipe numerik penomoran index array dimulai dari 0. Sedangkan pada index 42 Bab 1 . } ?> </body></html> Simpan dengan nama array_index_numerik. Pada array dengan tipe index string kita dapat memberi nama index array sesuai dengan keinginan kita. Karena merupakan looping jadi $variabel akan diulang sampai array terakhir dalam hal ini tiga kali.. $i<3.. $i++. PENERAPAN TEORI ARRAY INDEX NUMERIK Agar anda lebih memahami penggunaan array dengan tipe index nuemrik ini jalankan PHP DESIGNER 2006 klik menu File-New-PHP untuk membuat file PHP baru.HTML dan PHP . 'Silver King'). $i++) { echo "$produk[$i] ". } //mencetak array menggunakan looping foreach. echo '<hr><p>Looping foreach</p>'. $i = 0. 1 dan seterusnya. 'slv'=>'Silver King').php. for ($i=0... Pada array index numerik kita hanya perlu mendifinisikan isi atau nilai dari array itu saja.PHP Pada looping ini setiap elemen dari variabel array $produk akan diubah menjadi variabel $barang. $produk = array('btr'=>'Baterei CBA'. echo "$produk[0] $produk[1] $produk[2]".. Lalu jalankan pada browser semua perintah looping akan mengarah pada hasil yang sama karena memang saya desain demikian agar mudah dimengerti. //mencetak array menggunakan looping while. echo "<hr><p>Looping while</p>". echo '<hr><p>Looping for</p>'. 'Baygin'. while($i<3) { echo "$produk[$i] ". 'byg'=>'Baygin'. Array dengan Index String Selain menggunakan angka atau numerik pengaksesan array pada PHP dapat juga menggunakan string (huruf). Ketik kode berikut <html> <head><title>Array index numerik</title></head> <body> <h2>Array dengan Index Numerik</h2> <?php //Membuat variabel $produk bertipe array dengan tiga nilai //mencetak array ke browser $produk = array('Baterei CBA'. } //mencetak array menggunakan looping for.. foreach($produk as $barang) { echo "$barang ".

’<br>’. Untuk mengakses nilai dari array produk kita dapat menuliskan nama array dan nama index array tersebut. Bab 1 .' '.HTML dan PHP 43 .’ >>> ’. foreach memiliki struktur yang cukup berbeda jika kita gunakan dalam tipe array ini. dan 'Silver King' merupakan nilai dari array $produk. $produk[‘btr’] = ‘Baterei CBA’. Tanda “=>” digunakan untuk menghubungkan antara nama index dan isinya. foreach($produk as $index_brg => $barang) { echo $index_brg. 'byg'. 'Baygin'.PHP string kita harus menentukan nama index dan nilai index array tersebut. atau yang lebih mudah. Karena setelah variabel $index_brg kita beri tanda "=>" maka variabel $index_brg akan dianggap sebagai index dari array. Contohnya echo $produk[‘btr’] $produk[‘byg’] $produk[‘slv’]. Selain menggunakan cara diatas kita juga dapat membuat array yang sama dengan cara: $produk = array(‘btr’=>’Baterei CBA’). output yang ditampilkan pada browser akan sama persis dengan output 1 pada bahasan sebelumnya. Sedangkan $barang yang berada disebelah kanan tanda “=>” akan dianggap sebagai isi dari array tersebut. } Bandingkan dengan perintah perintah berikut ini yang menampilkan isi array berserta nama indexnya sekaligus. $produk[‘slv’] = ‘Silver King’. 'Baterei CBA'. $produk = array(‘slv’=>’Silver King’). $produk[‘byg’] = ‘Baygin’.$barang. Anda juga dapat menggunakan cara penulisan seperti pada tipe numerik sebelumnya dengan hanya menampilkan isi array-nya saja seperti foreach($produk as $barang) { echo $barang. Pada contoh diatas 'btr'. dan 'slv' merupakan nama index dari array $produk. } //output 2 Output yang ditampilkan pada browser akan seperti btr >>> Baterei CBA byg >>> Baygin slv >>> Silver King Output 2 Pada statemen foreach yang ke dua kita menemukan notasi $index_brg => $barang. $produk = array(‘byg’=>’Baygin’). Looping dalam Array dengan Index String Looping array dengan foreach() Karena index dari array tipe ini bukan merupakan angka maka kita tidak dapat menggunakan looping for pada array jenis ini.

} Output tampilan yang dihasilkan kode diatas akan dengan output 2. merubah dan berhenti saat elemen array terakhir dicapai.HTML dan PHP 44 . pada kode diatas kita menggunakan list() untuk memecah index array ke variabel $index_brg dan isi dari array kita simpan pada variabel $barang. Tanpa menuliskan reset() hasil yang kita inginkan tidak keluar karena array yang aktif adalah index array terakhir. list($index_brg. $barang) = each($produk). Untuk menghasilkan output yang sama dengan output 2 kita dapat menggunakan list sebagai berikut reset($produk) while(list($index_brg. Looping while diatas kita gabungkan dengan fungsi each(). Sebagai alternatif anda dapat mengganti blok kode pada while diatas dengan kode berikut ini echo $barang[0]. Bab 1 .$barang['value'].' >>> '. akan mengembalikan elemen didalam array.’ >>> ‘.' >>> '. Untuk itu kita akan menggabungkan looping while dengan fungsi lain seperti each() dan list() dalam mengidentifikasi index elemen array. reset() digunakan untuk mengembalikan array yang aktif kembali ke posisi awal.$barang[1]. each() Untuk lebih memahami penggunaan each() pada looping while lihatlah contoh berikut: reset($produk). each() pada looping while. list() Ada cara lain yang dapat digunakan dalam mengakses array untuk menghasilkan tampilan yang sama. list() digunakan untuk memecah array menjadi index dan nilai dan memasukkan nilainya pada variabel yang telah ditentukan. $barang) = each($produk)) { echo $index_brg.’<br>’. key dan value merupakan keyword khusus yang digunakan untuk mengakses array.PHP Looping Array dengan while() Karena index array ini bertipe string kita tidak dapat menggunakan looping while seperti pada array numerik. while($barang = each($produk)) { echo $barang['key'].$barang. Pada kode diatas perintah each() akan mengembalikan empat index array. Jadi arti key dan value pada kode diatas bukan nama index yang kita buat melainkan semacam suatu keyword yang digunakan untuk mengakses array. } Karena pada kasus diatas kita letakkan list() pada looping maka index dan isi akan dicetak dari awal array sampai array yang terakhir. key untuk mengakses index array sedangkan value untuk mengakses isi array. key dan 0 akan merujuk pada nama index array yang aktif. sedangkan value dan 1 akan merujuk pada isi dari array yang aktif.

foreach( $produk as $index_brg => $barang ) { echo $index_brg. while (list($index_brg.$produk['byg']. 'slv'=>'Silver King'). // mencetak isi array menggunakan looping foreach.' '. // mencetak nilai array ke browser echo $produk['btr'].' >>> '.'<br>'.' >>> '. $barang) = each($produk)) { echo $index_brg.. } // mencetak nama index dan isi dari array menggunakan looping foreach echo '<hr><p>Looping foreach dengan nama index</p>'.$barang. reset($produk). echo "<hr><p>Looping foreach tanpa nama index</p>".'<br>'..' >>> '.'<br>'.HTML dan PHP 45 . reset($produk).$barang['value']. 'byg'=>'Baygin'. } // mencetak nama index dan isi dari array menggunakan while dan each() echo "<hr><p>Looping while dengan each()</p>". foreach( $produk as $barang ) { echo $barang.$barang.php lalu jalankan pada browser. Output tampilan script diatas dapat anda lihat pada gambar 1. Agar tangan anda tidak kaku ketiklah script berikut ini <html> <head><title>Array index String</title></head> <body> <h2>Array dengan Index String</h2> <?php $produk = array('btr'=>'Baterei CBA'.$produk['slv'].' '. } ?> </body></html> simpan dengan nama array_index_string.PHP PENERAPAN TEORI ARRAY INDEX STRING Jalankan PHP DESIGNER 2006 lalu buatlah file baru. } // mencetak nama index dan isi dari array menggunakan while.' '. while ($barang = each($produk)) { echo $barang['key']. list dan each() echo "<hr><p>Looping while dengan list() dan each()</p>". Bab 1 .15.

Dimana setiap baris menunjukkan produk dan setiap kolom menunjukkan attribut produk seperti kode. Jika kita ingin menyimpan produk minimarket Mr.php Array Multidimensi Apakah array jenis ini berasal dari dunia lain? Wah anda kebanyakan nonton film fiksi. dan harga. 1750)).16 seperti berikut: $produk = array(array('BTR'. p r o d u k Array dua-dimensi Kode  BTR  BYG  SLV  Nama Barang  Baterei CBA  Baygin  Silver King  Harga  7500  2250  1750 Gambar 1.16 menunjukkan penggunaan array duadimensi pada produk minimarket. Oleh karena itu kita dapat membuat array 2-dimensi dan 3-dimensi. Untuk mengakses array satu-dimensi seperti yang pernah kita buat. kita dapat menuliskannya seperti ini Attribut produk Bab 1 . 'Silver King'.15: output file array_index_string. Pada dua-dimensi juga tidak berbeda jauh hanya saja setiap elemen memerlukan dua index untuk baris dan kolom. 2250). Untuk menampilkan array $produk dua-dimensi diatas.PHP Gambar 1. 'Baygin'. Dengan menggunakan gaya penulisan seperti diatas kita akan lebih mudah mengidentifikasi setiap elemen baris dan kolom dari array tersebut.16: Kita dapat membuat produk minimarket menjadi array dua-dimensi. Baris paling atas indexnya 0 dan kolom paling kiri nilainya 0. 7500). nama. Array multidimensi dapat kita gambarkan sebagai sebuah matriks yang memilki baris dan kolom. array('BYG'. Dengan menggunakan PHP kita dapat menulis array dari gambar 1. kita perlu menuliskan nama array dan index dari array itu. Web Janarko lebih dari satu bagian kita dapat menggunakan array dua-dimensi. Gambar 1.HTML dan PHP 46 . 'Baterei CBA'. array('SLV'.

’#’.’#<br>’.’#’. echo ‘#’.’#’ .2 baru akan melanjutkan ke baris selanjutnya. Anda mungkin lebih suka dengan menggunakan index tipe string sebagai pengingat letak baris dan kolom. $kolom++) { echo ‘#’. } Hasil yang ditampilkan dari looping for diatas sama dengan output 3.$produk[1][1]. 'Nama Barang' => 'Silver King'. array('Kode' => 'SLV'.$produk[0][1]. Bab 1 . $baris++) { echo '#'. echo ‘#’.’#’. emang cewek!.$produk[0][0]. $produk_2 = array(array('Kode' => 'BTR'. $kolom<3.HTML dan PHP 47 . 'Harga' => 2250). $baris<3. Dengan menggunakan each() dan list() kita bisa mendapatkan index string tersebut.$produk_2[$baris]['Kode'].’#’. Dengan menggunakan array dengan tipe index string kita tidak perlu mengingat nilai yang diletakkan di [x][y]. output yang ditampilkan pada browser adalah: #BTR#Baterei CBA#7500# #BYG#Baygin#2250# #SLV#Silver King#1750# Output 3 kita dapat menyingkat penulisan kode diatas dengan menggunakan perintah looping. } echo ‘#<br>’.1.PHP echo ‘#’.’#’. 'Harga' => 7500). Looping for untuk kolom ini akan mencetak satu baris dahulu yang indexnya 0 dan kolomnya 0.$produk[2][1]. Menggunakan looping for kita bisa mendapatkan index bertipe numerik dari $produk. Dengan menggunakan looping for kode yang kita tuliskan akan lebih singkat dan enak dipandang.’#<br>’. untuk menghasilkan tampilan seperti output tiga kita dapat mengetikan secara manual seperti cara sebelumnya hanya saja index yang ke dua kita ganti dengan nama kolom misalnya untuk menampilkan BTR kita menuliskan $produk[0][‘Kode’].’#<br>’.$produk[$baris][$kolom]. 'Nama Barang' => 'Baterei CBA'. Setiap baris dalam $produk memiliki index bertipe string.$produk[0][2].$produk_2[$baris][‘Harga’]. array('Kode' => 'BYG'.’#’. Untuk looping for $kolom kita ingin mendapatkan nilai kolom dan mencetak index dan isi array. $baris<3.$produk[2][2]. for ($baris=0.$produk[1][0]. 'Harga' => 1750) ).$produk[2][0]. Lihatlah contoh berikut ini for($baris=0. 'Nama Barang' => 'Baygin'. Dibanding dengan menggunakan baris dan kolom yang susah diingat.$produk_2[$baris]['Nama Barang']. $baris++) { for($kolom=0.’#<br>’.$produk[1][2]. Dan akan diulang terus hingga nilai $baris mencapai 2.'#'. } Tujuan looping for $baris adalah untuk membuat nilai index baris dan berpindah ke baris baru.

Untuk memahai struktur array tiga dimensi lihatlah gambar 1. $barang) = each($produk_2[$baris])) { echo '#'. list() pada kode diatas akan mengembalikan nilai variabel $index_brg sebagai index array numerik. Alternatif lain jika anda ingin menampilkan index array-nya. } Sekedar mengingatkan reset() digunakan untuk mengembalikan posisi array kembali ke index yang awal akibat adanya perintah each(). Output pada browser dari kode diatas adalah sebagai berikut. Bab 1 .HTML dan PHP 48 . 'Baygin'. 1750) ). } echo '#<br>'.$barang. 'Silver King'. 2250).17: contoh array 3-dimensi mengizinkan kita untuk menambahkan kategori produk Dari gambar diatas kita dapat membuat array tiga dimensi dengan menuliskan kode seperti dibawah ini $produk = array(array(array('BTR_KECIL'. Output kode diatas sama dengan output 3. $baris<3. 7500). array('SLV_KECIL'. $baris++) { while(list($index_brg. anda bisa merubah perintah echo diatas dengan: echo ' # '.17 dibawah ini Gambar 1.PHP reset($produk_2).' -> '. Sedangkan $barang akan menyimpan isi dari variabel array. 'Baterei CBA'. for($baris=0. # Kode -> BTR # Nama Barang -> Baterei CBA # Harga -> 7500 # # Kode -> BYG # Nama Barang -> Baygin # Harga -> 2250 # # Kode -> SLV # Nama Barang -> Silver King # Harga -> 1750 # Array tiga-dimensi Sama halnya dengn array dua-dimensi array tiga dimensi juga memiliki baris dan kolom plus lapisan.' '.$index_brg. array('BYG_KECIL'.$barang.

Namun akan lebih mudah memecahkan permasalahan dengan menggunakan array dua atau tiga-dimensi. >> # BTR_KECIL # Baterei CBA # 7500 # # BYG_KECIL # Baygin # 2250 # # SLV_KECIL # Silver King # 1750 # << Kategori 1. $baris++) { for ($kolom=0. array('SLV_SEDANG'. Anda bisa membuat array empat-dimensi. 3500) ). array('SLV_JUMBO'.HTML dan PHP 49 . 'Baygin'. Lihat contoh berikut Bab 1 . Fungsi-fungsi pada Array Suatu waktu anda mungkin ingin merubah variabel biasa menjadi variabel array atau sebaliknya. array('BYG_JUMBO'. 15000).$produk[$kategori][$baris][$kolom]. } echo '<br>'. 'Baygin'.PHP array(array('BTR_SEDANG'. $kategori++) { echo "<< Kategori $kategori. 'Baterei CBA'. array('BYG_SEDANG'. 5250) ) ). Karena array yang kita buat diatas hanya memiliki index numerik maka kita dapat menggunakan looping for untuk mengakses nilai dari array. } Output dari kode diatas adalah seperti berikut << Kategori 0. $kolom<3. >> # BTR_JUMBO # Baterei CBA # 22500 # # BYG_JUMBO # Baygin # 6750 # # SLV_JUMBO # Silver King # 5250 # Dari pembuatan array tiga-dimensi diatas dapat anda lihat kalau sebenarnya pembuatan array tidak hanya terbatas pada tiga-dimensi saja. 4500). array(array('BTR_JUMBO'. for ($kategori=0. $kategori<3. } echo " #<br>". $baris<3. 'Silver King'. >> # BTR_SEDANG # Baterei CBA # 15000 # # BYG_SEDANG # Baygin # 4500 # # SLV_SEDANG # Silver King # 3500 # << Kategori 2. 22500). 'Silver King'. count() dan sizeof() Fungsi count() dan sizeof() keduanya sama-sama digunakan untuk menghitung jumlah elemen dalam suatu array. >><br>". $kolom++) { echo ' # '. Untuk itu kita dapat menggunakan beberapa fungsi built-in yang disediakan PHP dalam mengatasi permasalahan tersebut. 6750). limadimensi dan seterusnya. for ($baris=0. 'Baterei CBA'.

string yang akan dipisah. 'Silver King'). $produk). Tampilan yang akan keluar pada browser jika dijalankan adalah Baterei CBA-|-Baygin-|-Silver King end(). Untuk menyatukan elemen array tersebut kita gunakan: $produk = array('Baterei CBA'. Hasil dari perintah echo count($produk) adalah 3. echo $satukan. Bab 1 . [limit]) Parameter ketiga bersifat opsional. Fungsi end() akan menuju ke posisi elemen array yang terkakhir. implode() lebih mulia karena dapat menyatukan bangsa dan negara yang tercerai berai. explode() Fungsi explode() memecah string menjadi array dengan ketentuan tanda pemisah yang telah ditentukan. Struktur dasar penulisan implode() adalah implode(string penghubung. echo $pecahkan[0].$pecahkan[1].$pecahkan[2]. current(). 'Baygin'.'<br>'. $produk = 'Baterei CBA-#-Baygin-#-Silver King'. Saya ini ngomong apa ya?. next() dan prev() Keempat fungsi diatas adalah untuk memudahkan kita dalam mengakses elemen array sesuai dengan posisi yang kita inginkan. $produk). array yang ingin digabung) Misalnya kita mempunyai variabel array $produk yang isinya Baterei CBA. $satukan = implode('-|-'. echo count($produk). Dengan explode isi dari variabel itu dipecah menjadi array. Baygin dan Silver King. 'Baygin'. Output pada browser dari kode diatas adalah Baterei CBA Baygin Silver King implode() Kalau explode() memecah string menjadi array. Sedangkan prev() akan menuju posisi array sebelumnya dari posisi array yang aktif.'<br>'. Pada kode diatas implode akan menggabungkan elemen pada variabel $produk dan menyatukannya ke dalam variabel $satukan dengan memberikan tanda pemisah berupa “-|-“. hal yang sama berlaku untuk fungsi sizeof(). 'Silver King'). Jadi variabel $pecahkan pada kode diatas otomatis menjadi variabel array. boleh tidak ditulis. next() akan menuju posisi array berikutnya dari posisi array yang aktif.PHP $produk = array('Baterei CBA'. current() akan menunjuk posisi array yang aktif saat ini. implode() akan menyatukan array ke dalam variabel biasa dengan memberikan tanda pemisah yang kita inginkan. spasi pun dapat menjadi tanda pemisah. Struktur dasar penulisan explode() adalah explode(string pemisah. Tanda pemisah tidak harus simbol.HTML dan PHP 50 . $pecahkan = explode('-#-'. dapat anda lihat tanda pemisah yang kita tentukan adalah “-#-“.

$buka_file = file(‘fileku.8 baygin -#.18000 -#. 'Baygin'. $barang = end($produk).' '. 51 Bab 1 . $barang = prev($produk). //output Aku Baris 2 PENERAPAN TEORI MEMBACA ARRAY DARI FILE Kali ini kita akan mempraktekkan teori yang kita pada bahasan-bahasan tentang array sebelumnya. Fungsi ini memiliki satu parameter yaitu nama file yang akan dibuka. <html> <head><title>Catatan Faktur Pembelian</title></head> <body> <h2>Daftar Faktur Pembelian Pengunjung</h2> <?php // buka file faktur.txt dengan perintah file() bukan readfile() // file() akan memecah setiap baris atau pembelian menjadi array $faktur = file('faktur.txt’).10 silver king -#.txt di direktori yang sama dengan script PHP. } Output dari kode diatas adalah Silver King Baygin Baterei CBA Anda lihat bahwa susunannya terbalik bukan?. $produk = array('Baterei CBA'.67500 SubTotal Untuk menjadikan setiap baris pada file menjadi elemen array.HTML dan PHP . Untuk lebih memperjelas lihat contoh berikut. 'Silver King'). Selanjutnya dalam blok while kita menuliskan $barang = prev($produk) artinya setiap eksekusi elemen array mundur satu elemen hingga menemui elemen terakhir.PHP Untuk next() dan prev() biasanya diletakkan didalam looping.txt'). 16 November -#. Web Janarko pada file faktur.txt'). Ini berarti elemen terakhir dari array $produk yaitu Silver King. Membaca Array dari File Sebelumnya kita telah menyimpan pembelian para pengunjung Minimarket Mr.17500 -#. Dengan asumsi letak fileku. kita dapat menggunakan fungsi file(). Isinya adalah Aku baris 1 Aku baris 2 Untuk mengubahnya menjadi array kita gunakan fungsi file('fileku. Sebelum looping while kita tentukan variabel $barang yang isinya adalah end($produk). //output Aku Baris 1 echo $buka_file[1]. Untuk itu jalankan PHP DESIGNER 2006 lalu ketik kode dibawah ini. // hitung jumlah array atau pembelian $jml_pembelian = count($faktur). while ($barang) { echo $barang. Misalnya ada sebuah file bernama fileku.5 baterei -#.txt. format yang kita gunakan untuk menyimpan setiap pembelian konsumen adalah sebagai berikut 20:38. echo $buka_file[0].37500 -#.txt.

Kok sepi tidak ada yang beli</b></p>".'<th>Total Rp.PHP // jika $jml_pembelian == 0 maka tidak ada pembelian if ($jml_pembelian == 0) { echo "<p><b>Waduh.18: output file lihat_faktur2.'<th>Baygin</th>' . $index++) { // pecah setiap bagian menjadi array $bagian = explode(' -#. Jalankan pada browser anda.HTML dan PHP 52 . // x silver king $bagian[7] = intval($bagian[7]).18 Gambar 1. // x baygin $bagian[5] = intval($bagian[5]).'. } //buat tabel untuk menampilkan faktur echo '<table border="1" cellpadding=2>' . for($index=0. // rubah variabel dari tipe string ke integer dengan intval() // supaya angkanya saja yang dicetak $bagian[1] = intval($bagian[1]). $faktur[$index]). $jml_bagian<8. // x subtotal // cetak ke layar echo '<tr>'. ?> </body></html> Simpan script diatas dengan nama lihat_faktur2. for ($jml_bagian=0.php. output script diatas akan terlihat seperti gambar 1.'</td>'.</th>' .'<tr bgcolor="#cccccc">' .$bagian[$jml_bagian].'<th>Baterei CBA</th>' .'<th>Tanggal Beli</th>' .'<th>Silver King</th>' .php Bab 1 . } echo '</tr>'.'</tr>'. } echo '</table>'. // x baterei $bagian[3] = intval($bagian[3]).</th>' . $jml_bagian++) { echo '<td align="right">'. $index<$jml_pembelian.</th>' .'<th>Sub Total + diskon</th>' .'<th>Total Rp.'<th>Total Rp.

. Isi dari $bagian[1] sebelumnya adalah x baterei (dimana x adalah jumlah baterei).. Maklum dulu saya juara I pidato bahasa Inggris ( tapi dalam mimpi. $index++) Untuk mencetak setiap pembelian kita menggunakan looping for.. right?.'</td>'.$bagian[nomor index array]... Bab 1 .. Setelah diubah dengan fungsi intval($bagian[1]) maka isi dari variabel $bagian[1] menjadi x saja (hanya berupa angka). Untuk menangkap adanya kemungkinan tidak ada pembeli.“ dimana setiap text yang berada diantara tanda ini akan diubah menjadi variabel array. // x baterei $bagian merupakan variabel array karena didalamnya ia menggunakan fungsi explode untuk memecah suatu string.. selama delapan kali berturut-turut. PENJELASAN SCRIPT Variabel $faktur pada script diatas secara otomatis akan berubah menjadi array.. Untuk mengidentifikasi setiap barang dan harga dari baris pembelian kita perlu memecahnya menjadi array lagi.txt digunakan fungsi count($faktur). Jadi perintah yang ada pada blok for ini akan diulang sebanyak $jml_pembelian yang tidak lain adalah banyaknya baris. Demikian juga untuk $bagian[3]. $bagian[5] dan $bagian[7]..HTML dan PHP 53 . . Maka kita menggunakan fungsi intval() untuk merubah variabel dari tipe string menajdi tipe integer sehingga hurufnya tidak ikut tercetak. Jumlah elemen array kita masukkan ke dalam variabel $jml_pembelian... for ($jml_bagian=0...... $jml_bagian<8. String yang akan dipecah dalam hal ini adalah isi dari variabel array $faktur[index array yang sedang aktif dari looping for]....... $index<$jml_pembelian. baygin. Ini dimaksudkan agar data tersebut dapat dimaksukkan dalam tabel... Untuk mengetahui berapa banyak baris / pembelian yang ada pada file faktur. Ini dikarenakan fungsi file(‘faktur....... $faktur[$index]). $bagian[1] = intval($bagian[1]).... Keep this life as simple as possible. Karena yang ingin kita tampilkan pada kolom baterei CBA. )... Tanda pemisah yang digunakan adalah “ -#. Maka kita gunakan statemen if yang menguji jumlah dari pembelian yang tidak lain juga merupakan jumlah baris.. Yang akan menghitung jumlah elemen dalam suatu array.'.PHP Pahamilah array dengan baik terutama pada perintah loopingnya karena ini akan sering kita gunakan pada aplikasi berskala besar... dan silver king hanya angkanya saja... Jika jumlahnya sama dengan nol maka tidak ada pembelian untuk kita kita munculkan pesan. for($index=0...txt’) akan membaca dan merubah setiap baris dari file menjadi array... $bagian = explode(' -#. $jml_bagian++) Looping for diatas dimaksudkan agar kita tidak perlu capek-capek menulis echo '<td align="right">'.

HTML dan PHP 54 .PHP Bab 1 .

PHP Hari Ke-5 Sebelum melanjutkan materi pada hari kelima ini. Maka output pada browser hanya akan menampilkan satu spasi saja yaitu “ ada spasi diawal dan diakhir “ (tanpa tanda petik). Bab 1 . // isi variabel $a sekarang adalah "ada spasi diawal dan diakhir". Jika kita simpan email user dalam database dan kita ingin mengirimkan email ke alamat tersebut maka email tidak akan terkirim karena format email tidak valid. Manipulasi String dan REGEX Pada hari yang ke lima ini kita akan mempelajari tentang manipulasi string dan regular expression pada PHP. Memformat String Anda akan sering harus memfilter string terutama dari Form HTML. $a = " ada spasi diawal dan diakhir ". Untuk menghilangkan spasi diawal dan diakhir string kita gunakan fungsi trim(). pada contoh diatas variabel $a pada awal dan akhir string terdapat spasi. Misalnya anda ingin membersihkan atau memformat input dari user sebelum dimasukkankan ke dalam database(akan dibahas lebih lanjut pada materi selanjutnya). ltrim( ). Setelah melalui hari ke lima ini diharapkan anda dapat menguasai tentang: Memformat String Menggabung dan Memecah String Menggunakan Fungsi-fungsi String PHP Menggunakan Regular Expression (REGEX) Menggunakan Ulang Kode Pada materi kali ini anda dapat menggunakan Fungsi String dari PHP untuk memformat dan memanipulasi text. Lalu user itu secara tidak sengaja menekan spasi tanpa ia ketahui lalu tetap menuliskan alamat emailnya. Karena mungkin saja user keliru mengetikkan karakter dan sebagainya. Jika anda menjalankan perintah echo $a. Menghilangkan Spasi: trim( ). Text box tersebut kita peruntukkan untuk pengisian alamat email. Buatlah sebuah folder baru pada direktori C:\Apache2\htdocs\webmaster\Bab1 Beri nama folder tersebut hari-5.HTML dan PHP 55 . Ini dikarenakan HTML mengabaikan karakter whitespace (banyak spasi). trim($a). Fungsi ini akan sangat berguna pada banyak hal. dan chop( ) Ketika kita menyediakan suatu user input misalnya berupa text box. Ini yang menjadi masalah karena isi variabel $a akan disimpan apa adanya. Hal itu tidak masalah tetapi bagaimana jika kita menyimpan isi variabel $a ke sebuah file atau memasukkannya ke dalam database.

Sekarang buatlah file PHP baru dengan mengklik menu File-New-PHP.html File ini nantinya akan memproses data yang dikirim dari form kritik dan saran. <html> <head><title>Kritik dan Saran</title></head> <body> <?php 56 Bab 1 .PHP Untuk ltrim() hampir sama hanya saja ltrim() hanya menghilangkan spasi di sebelah kiri string sedangkan chop() di sebelah kanan string.html. PENERAPAN TEORI TRIM() Untuk lebih memahami manipulasi string dengan trim().HTML dan PHP . File ini akan memproses kritik dan saran dari file kontak_kami. Gambar 1. Ketik kode HTML dibawah ini <html> <head><title>Kontak Kami</title></head> <body> <h2>Kritik dan Saran Untuk MiniMarket Mr.19: output file kontak_kami.html. Web Janarko</h2> <form action="proses_kontak. Buatlah file HTML baru pada PHP DESIGNER 2006 dengan mengklik File-New-HTML.php" method="post"> <b>Nama Anda:</b><br> <input type="text" name="nama" size="30"><br> <b>Email Anda:</b><br> <input type="text" name="email" size="30"><br> <b>Pesan atau Kritik:</b><br> <textarea name="pesan" cols="40" rows="10"></textarea><br> <input type="submit" value="Kirim"> </form> </body> </html> Simpan kode diatas dengan nama kontak_kami. Seiring dengan bertambahnya materi kita nanti akan menambahkan beberapa kode baru pada script ini.

Jalankan pada browser hasilnya akan seperti gambar 1. $isi_email. Web Janarko selaku pemilik MiniMarket. string subject.PHP //buat variabel untuk data yang dikirim $nama = $_POST['nama']. Karena kritik dan saran ini akan dilayangkan ke Mr.HTML dan PHP 57 .com'. $isi_email = 'Nama Konsumen: '. $pesan = $_POST['pesan'].php.com'. Web tersebut. $emailku = 'Web@janarko. $email = trim($email).20: muncul pesan peringatan tidak memiliki program mail server (seperti hMailServer) PENJELASAN SCRIPT Pertama kita buat variabel untuk menampung data yang dikirim lewat method POST. $pesan = trim($pesan)."\n" . string isi email. // kirim email dengan fungsi mail() mail($emailku. Struktur dasar penulisan fungsi mail() adalah sebagai berikut: mail(string alamat."Pesan atau Kritik: \n"."\n". [parameter tambahan] Bab 1 . $header). //trim() untuk menghilangkan spasi diawal dan diakhir $nama = trim($nama). $header = 'From: MiniMarket@online. $email = $_POST['email']. $subject. Selanjutnya kita hilangkan spasi diawal dan diakhir setiap data yang dikirim dengan fungsi trim(). [header]. Untuk mengirim email PHP menyediakan fungsi mail().$nama.$pesan. ?> </body> </html> Simpan dengan nama proses_kontak.20.'Email Konsumen: '. Gambar 1. Maka kita kirim pesan ini ke alamat email Mr. //buat variabel untuk memudahkan pengiriman email $subject = "Kritik dan Saran dari Konsumen"."\n" . echo '<h2>Pesan Terkirim</h2>'.$email.

Agar penulisan fungsi mail() lebih mudah dan tidak membingungkan maka kita buat variabel string untuk masing-masing parameter.HTML dan PHP 58 . Ketika kita mengklik tombol Kirim pada halaman saran dan kritik. $subject. Bab 1 .11 Fungsi Pengubah String Pada PHP Fungsi Penjelasan Penggunaan strtoupper() Mengubah string strtoupper($subject) ke huruf KAPITAL strtolower() Mengubah string ke strtolower($subject) huruf kecil ucfirst() Mengubah awal awal ucfirst($subject) string ke huruf besar ucwords() Mengubah setiap ucwords($subject) awal kata ke kapital Mengubah Format Huruf pada String Hasil KRITIK DAN SARAN DARI KONSUMEN kritik dan saran dari konsumen Kritik dan saran dari konsumen Kritik Dan Saran Dari Konsumen addslashes() dan stripslashes() User tidak hanya mengisi huruf biasa pada box pesan. $isi_email. Karena nama biasanya pada awal kata selalu diawali huruf kapital. Atau anda sudah menginstal program mail server seperti hMailServer.php on line 25 Ini karena pada komputer kita tidak terdapat aplikasi Mail Server yang menghandel port 25 atau SMPT. $isi_email dan $header merupakan variabel-variabel yang akan kita masukkan pada fungsi mail. Header merupakan informasi tambahan pada email seperti From atau Reply-To. Kali ini kita hanya menggunakan informasi tambahan From.mail]: Failed to connect to mailserver at "localhost" port 25. ‘. Meskipun ini tidak banyak digunakan pada aplikasi kita nanti namun ada beberapa kasus yang dapat kita tangani dengan merubah format huruf pada string. Ketika kita akan memasukkan data ke database. Variabel $emailku. Sehingga penulisan fungsinya menjadi: mail($emailku.PHP Tiga parameter pertama wajib untuk anda isi.ini or use ini_set() in I:\Apache2\htdocs\webmaster\Bab1\hari-5\proses_kontak. Untuk instalasi hMailServer lihat pada pendahuluan. Maka kita menggunakan fungsi ucwords('nama dia'). Mereka mungkin ingin memasukkan karakter “ (petik dua) atau ‘ (petik satu). dan karakter kosong (NULL karakter) akan menjadi masalah security jika kita tidak menanganinya dengan serius. Pesan ini tidak akan muncul jika kita berada pada webserver yang sebenarnya. Anda juga dapat mengubah format dari huruf pada suatu string. verify your "SMTP" and "smtp_port" setting in php. //hasilnya Nama Dia Berikut ini tabel fungsi-fungsi yang dapat anda gunakan dalam merubah format huruf string Tabel 1. $header). Misalnya pada input Nama seseorang mengisikan nama dia. Kita hanya berada pada webserver virtual. Sedangkan dua yang terakhir sifatnya hanya opsional. karakter-karakter seperti “. Maka akan muncul pesan peringatan seperti ini Warning: mail() [function. $subject. Ingat karakter \n merupakan garis baru dan hanya bisa berada pada petik dua. Misalnya mengubah huruf kecil menjadi huruf kapital juga sebaliknya.

strlen() digunakan untuk mengecek panjang suatu string. strlen() memiliki satu parameter yaitu string yang akan dicek panjangnya. ?> sehingga menjadi seperti berikut. $pesan = stripslashes($pesan). //cek panjang string if (strlen($nama) < 3) { echo "<b>Masa. Ini pada aplikasi sesungguhnya jelas tidak mungkin. nama kok kurang dari 3 huruf". Bab 1 . exit. <?php //buat variabel untuk data yang dikirim $nama = $_POST['nama']. String yang akan ditampilkan setelah penggunaan stripslashes() akan menghilangkan tanda \ dan escaping karakter lainnya. Karakter karakter seperti \” dan \\ disebut sebagai escaping character. Fungsi addslashes() memerlukan satu parameter yaitu string yang akan di beri escaping character. Ini berguna jika kita ingin mengecek isi dari suatu variabel apakah kosong atau tidak. empty() digunakan untuk mengecek isi dari variabel. Seperti contoh berikut: if (empty($nama)) { echo “Nama Tidak Boleh Kosong”. $pesan = addslashes($pesan).. Ubahlah kode yang berada dalam tag <?php . Jika anda ingin menulis tanda “ dan ingin memasukkannya didatabase anda dapat menggunakan tanda \” (backslashes petik dua) untuk menggantinya. Daripada menuliskannya seperti diatas kita dapat menggunakan fungsi dari PHP untuk mencetak escaping character.HTML dan PHP 59 . exit. Oleh karena itu sebelum memproses data kita perlu mengetahui apakah user telah mengisi field atau belum.php memiliki banyak kekurangan diantaranya jika user tidak mengisi apa-apa script akan tetap memproses data. Saat anda ingin menampilkan string dari database tersebut jangan lupa untuk menghilangkan tanda escaping charakter dengan menggunakan fungsi stripslashes(). Dan jika ingin menampilkan tanda \ anda dapat menggantinya dengan tanda \\. String tersebut akan diberi escaping karakter. $pesan = $_POST['pesan'].. } PENERAPAN TEORI strlen() Jalankan PHP DESIGNER 2006 lalu buka file proses_kontak. strlen() dan empty() Script proses_kontak. Saat anda menggunakan addslashes() untuk menyimpan data ke database.php. Yaitu dengan menggunakan addslashes(). Jika isi dari variabel itu kosong maka nilainya true. $email = $_POST['email'].PHP Kita harus menentukan cara agar karakter-karakter tersebut dapat dimengerti oleh database seperti MySQL.

"\n" . Maka akan muncul pesan Anda belum mengisi nama PENJELASAN SCRIPT Mengapa kita tidak mengecek menggunakan fungsi empty()?.com'. Jika kondisikondisi yang kita tentukan tadi tidak terpenuhi maka tampilkan pesan dan akhiri eksekusi script dengan exit. jika mengecek menggunakan empty() dan selanjunya kita juga menggunakan strlen() untuk mengecek. echo '<h2>Pesan Terkirim</h2>'. Sekarang coba anda klik tombol beli tanpa mengisi apapun. } //trim() untuk menghilangkan spasi diawal dan diakhir $nama = trim($nama). untuk menentukan kondisi yang kita inginkan..elseif.com'."\n" . $pesan = trim($pesan).. } elseif(strlen($pesan) < 10) { echo "<b>Komentar terlalu pendek</b>". Maka penggunaan empty() akan tidak efisien karena dengan strlen() kita juga bisa memastikan bahwa variabel itu terisi karakter atau tidak dengan menghitung panjang string pada variabel. exit. if (strlen($nama) < 3) { echo "<b>Masa.. $email = trim($email).$email. ?> Simpan kembali file tersebut lalu jalankan pada browser. Pada kode diatas kita tentukan panjang string $nama harus lebih dari 2. Kita gunakan logika kita.'Email Konsumen: '. //kirim email dengan fungsi mail() mail($emailku.$header)."\n".$nama.$pesan. $isi_email = 'Nama Konsumen: '. Untuk mengecek panjang string kita gunakan strlen(). $header = 'From: Web@janarko. //buat variabel untuk memudahkan pengiriman email $subject = "Kritik dan Saran dari Konsumen". $subject. nama kok kurang dari 3 huruf". $isi_email. } Sama seperti sebelumnya kita gunakan statemen if... exit. Untuk $email harus lebih dari 5 sedangkan untuk $pesan harus lebih dari 9. exit. $emailku = 'Web@janarko. substr() Bab 1 ."Pesan atau Kritik: \n".HTML dan PHP 60 .PHP } elseif(strlen($email) < 6) { echo "<b>Email anda tidak valid</b>".

Bab 1 . $format = substr($subject. Output dari $format diatas adalah Konsumen Lalu bagaimana jika saya hanya ingin mencetak 6 karakter awal saja?. -9). Untuk mencetak hanya sejumlah karakter saja mulai dari awal anda dapat menggunakan parameter yang ketiga. Fungsi ini biasanya berguna jika kita ingin memformat suatu string kedalam bentuk lain. untuk penggantian format tulisan kita lakukan setelah diperoleh hasil akhir. -8). 6 karakter awal dalam variabel $subject berarti Kritik. angka yang merupakan banyaknya string yang ingin anda tampilkan. echo $format. Jika kita mengganti isi dari $format menjadi seperti berikut $format = substr($subject. 2). 0 artinya kita mulai dari karakter yang paling awal yaitu K. kode diatas berarti ambil karakter antara karakter ke-11 dan karakter ke-9 dari akhir. Pada kode diatas string sumber adalah isi dari variabel $subject.PHP Dengan menggunakan substr() anda dapat mengakses string-string yang berada pada string tersebut (Sub String).-. Kita hanya memerlukan angkanya saja. Kita tidak mungkin melakukan perhitungan matematik jika isi variabel terdapat Rp. Paramater ke tiga(opsional). 6 merupakan jumlah karakter yang ingin diambil.xxx. Maka kita harus mempunyai format khusus untuk mata uang tersebut. 6). $format = substr($subject. Dan 2 merupakan posisi string yang akan dimulai. [panjang string]) Pararameter pertama. Format Angka: number_format() Karena website yang kita buat berhubungan dengan “uang”. angka untuk memulai string. Output dari kode diatas adalah Saran dari. kita harus menentukan string yang akan kita jadikan rujukan(string sumber) Parameter ke dua. $format = substr($subject. Lihatlah contoh berikut ini $subject = "Kritik dan Saran dari Konsumen". Struktur dasar penulisan fungsi substr() adalah substr(string awal. Output dari kode diatas adalah itik dan Saran dari Konsumen Huruf K dan r tidak diikutkan karena kita memasukkan angka 2 pada parameter string yang dimulai sehingga dua huruf pertama dilewatkan. 0. Anda bertanya pada orang yang tepat. 11. xxx. Artinya kita akan mencetak isi dari $subject mulai dari 8 karakter terakhir.HTML dan PHP 61 . merupakan angka dari 0 sampai banyaknya string dari string sumber yang ingin anda tampilkan.

//hasil -> 1000000@00 echo number_format($angka.PHP Untuk melakukan format mata uang kita dapat menggunakan fungsi number_format(). Karena kita hidup di negara yang sedang krisis yaitu Indonesia. Mengganti String: str_replace() Bab 1 . 'Kritik')) { echo 'Kritik Konsumen'. 2. //satu juta echo number_format($angka. karena berisi angka yang ingin anda rubah formatnya. Anda dapat menggunakan strstr() untuk keperluan tersebut. Catatan: jika anda mengisi parameter 3 maka anda harus mengisi parameter 4. if (strstr($subject.000.000@00 echo number_format($angka. 1. Parameter 2(opsional): berapa banyak angka yang ingin anda tampilkan dibelakang angka. $angka = 1000000. 0.00 echo number_format($angka. 2). } Jika strstr() menemukan string yang kita cari ia akan mengembalikan nilai true jika tidak maka false. [string pemisah angka dibelakang]. '. ''. '@'.000. Mencari String: strstr() Kadang kala anda ingin mencari suatu kata atau string pada string yang lain. ''. berupa angka 0. Struktur dasar penulisan strstr adalah strstr(string asal.-'. Maka kita gunakan format mata uang rupiah. Parameter 3(opsional): string yang digunakan sebagai tanda pemisah antara angka yang diubah dengan angka dibelakang. Misalnya pada kata ‘kritik’ jika kita menggunakan fungsi strstr() seperti pada kode diatas maka hasilnya akan false karena strstr() membedakan huruf kecil dan huruf besar (case sensitive). Kita hanya perlu menambahkan echo 'Rp '.Format ini yang akan kita gunakan terus pada aplikasi proyek kita nantinya. '').'. '.').000.'). '@'. number_format(angka yang dirubah.number_format($angka.'). string yang dicari) lihatlah contoh berikut untuk memperjelas pemahaman anda tentang strstr() $subject = 'Kritik dan Saran dari Konsumen'. //hasil -> 1. Nampaknya mereka saling mencintai hingga tak mau pisah. [angka dibelakang]. Saya yakin anda pasti bingung membaca penjelasan diatas. [string pemisah ribuan]) Parameter 1: sifatnya wajib diisi.000 Dari contoh diatas rasanya format yang terakhir yang cocok untuk rupiah. //hasil -> 1. Dan memang obat yang paling mujarab saat ini hanyalah contoh. Struktur dasar penulisan fungsi number_format() adalah sebagai berikut. //hasil -> 1. 2. Hampir sama dengan strstr() terdapat fungsi lain untuk mencari yaitu stristr() hanya saja fungsi ini tidak membedakan huruf kecil dan besar.HTML dan PHP 62 . //hasil -> Rp.000. '.000. Parameter 4(opsional): string pemisah antar bilangan ribuan.000. 0.

... PENERAPAN TEORI STR_REPLACE( ) Jalankan PHP DESIGNER 2006 buka file proses_kontak. Selama masih ada kata kotor pada $pesan maka str_replace($kata... Struktur dasar penulisan fungsi ini adalah str_replace(string yang dicari. Anda juga dapat menentukan sekumpulan karakter seperti Bab 1 .......php.$pesan dibawah echo '<b>Pesan Terkirim</b>' . Regular Expression (REGEX) Regular Expression atau sering disebut juga REGEX..... ‘k’ dan sebagainya. Untuk itu jika anda ingin membatasi karakter tertentu saja misalnya hanya karakter dari a sampai z gunakan: [a-z] Semua karakter yang berada didalam [............ sialan... '!@#$%'... fuck... Sisipkanlah kode berikut ini sebelum komentar // trim() untuk menghilangkan spasi diawal dan dan pada akhir scipt tambahkan .$pesan.] hanya cocok dengan satu karakter saja.. Dan itulah yang dimiliki str_replace().... Juga cocok dengan regex ‘kri’... '!@#$%'... } //trim() digunakan untuk menghilangkan spasi diawal dan diakhir. Lihatlah pada browser kata-kata kotor yang ada didaftar akan diubah menjadi !@#$%.. //filter kata-kata kotor $kotor = array('brengsek'.... akan dieksekusi. Untuk membuktikannya coba anda masukkan kata-kata kotor tersebut pada pada box kritik dan saran lalu tekan kirim.PHP Mencari dan mengganti string merupakan fungsi yang sangat berguna.. dan biadab..... Jadi $kata isinya bisa salah satu dari kelima kata kotor tersebut... $pesan). string sumber. 'bangsat'.. [jumlah yang dicari]).. PENJELASAN SCRIPT Variabel kotor merupakan array yang berisi kumpulan kata-kata kotor yang akan difilter menggunakan str_replace().. 'fuck'........ ‘ri’.... Sebagai contoh kata ‘kritik’ cocok dengan dengan regex ‘kritik’. Namun metode ini memiliki kelemahan karena masih membedakan huruf kecil dan huruf besar maka kata ‘brengsek’ dianggap berbeda dengan ‘Brengsek’... Kita akan menutupi kelemahan ini dengan REGEX... echo '<h2>Pesan Terkirim</h2>' ....... string pengganti.. echo ‘<b>Pesan anda tidak sopan</b><br>’.... Fungsi ini dapat mencari string dan menggantinya dengan karakter yang telah ditentukan sebelumnya. Dengan regex anda dapat membuat pola yang lebih spesifik sesuai dengan keinginan anda. foreach ($kotor as $kata) { $pesan = str_replace($kata.......HTML dan PHP 63 .. ‘ri’. $pesan)...... 'biadab').... Merupakan suatu cara untuk mendeskripsikan pola dalam suatu text. Dan gantinya adalah string '!@#$%'.... bangsat........... Untuk mengulang pencarian terus menerus kita gunakan looping foreach(). Setiap kata pada array $kotor kita pecah dan masukkan pada variabel $kata... ‘k’ dan dapat juga ‘#k’...... . Pada contoh sebelumnya ‘kritik’ juga cocok dengan ‘kri’.... 'sialan'.. Pada kode diatas kata-kata yang difilter sebanyak lima kata yaitu brengsek............

Wih. nampaknya bakalan njlimet nih! Jangan pesimis begitu santai saja.1..PHP [a-zA-Z] akan cocok dengan segala huruf dari a sampai z atau A sampai Z(KAPITAL).wih.1.HTML dan PHP 64 . Untuk daftar karakter spesial dapat anda lihat pada tabel 1..3 dan 1.wih. tapi jika diluar kurung siku lain lagi. Mencocokkan Karakter Spesial Jika anda ingin mencocokkan karakter-karakter spesial seperti . Kita akan segera mengetahuinya. Pola seperti ini sangat berguna terutama untuk mengecek kevalidan suatu string yang berpola aneh seperti email. Pola Diawal atau Diakhir String Anda dapat meletakkan pola khusus yang harus ada pada awal.. Tanda ^ (caping) didalam kurung siku artinya tidak. Anda dapat juga menentukan karakter yang tidak boleh ikut dari sekumpulan karakter. " atau ' anda dapat menggunakan tanda \ (backslashes) didepan karakter spesial tersebut. $. Simbol ^ (caping) digunakan pada regex untuk menentukan pola yang harus ada pada awal string.. [^a-z] Artinya cocok dengan segala karakter kecuali a sampai z. Sabar OK.. Selain itu anda dapat menentukan sekumpulan karakter yang ingin dicocokkan. {. diakhir atau bahkan keduanya. Sebaliknya tanda $ digunakan pada regex untuk menentukan pola yang harus ada pada akhir string Contohnya. dibawah ini akan cocok dengan web pada awal string: ^web dan ini akan cocok dengan janarko pada akhir dari string: janarko$ yang terakhir penggunaan ^ diluar kurung siku: ^[a-z] pola diatas berarti cocok dengan satu karakter dari a sampai z pada awal string.. Jika ingin menampilkan tanda \ maka anda harus menuliskannya \\.12 Karakter Spesial REGEX diluar kurung siku Karakter Keterangan \ escape character ^ sesuai dengan awal dari string $ sesuai dengan akhir dari string .4 Tabel 1.13 Karakter spesial REGEX didalam kurung siku Bab 1 . cocok dengan semua karakter kecuali (\n) garis baru | mulai dari tanda kurung (dibaca OR) ( mulai dari subpattern ) akhir dari subpattern * ulang 0 atau beberapa kali + ulang 1 atau beberapa kali Tabel 1.

Parameter 3 bersifat opsional. exit. Seperti kita tahu script proses_kontak. lalu setidaknya ada huruf. dan sebagainya. .co. eregi(string pola regex. Pola yang terakhir ini untuk .com. } Bab 1 . Perbedaannya jika ereg() membedakan huruf kecil dan huruf besar(case sensitive). //cek panjang string if (strlen($nama) < 3) { echo "<b>Masa. } elseif(strlen($email) < 6) { echo "<b>Email anda tidak valid</b>".[a-zA-Z0-9_\-\. Kita dapat menggunakan regex untuk proses validasi email pada form.]+$ artinya “harus ada tanda .). PHP memiliki dua fungsi untuk keperluan ini yaitu ereg() dan eregi(). atau kombinasi dari semua itu”. Kita menggunakan tanda \ didepan – karena minus merupakan karakter spesial. tanda – (minus). Meskipun tidak 100% dapat memfilter email. tanda . atau titik lain jika diperlukan sampai akhir dari string.id dan sebagainya. angka.[a-zA-Z0-9_\-\. Tapi pola seperti ini setidaknya akan mempermudah penanganan situasi. Tambahkan kode validasi email berikut ini. Fungsi eregi() memiliki struktur dasar seperti berikut. Pola kedua ini untuk nama hosting. [array]) Fungsi akan akan mencari pola regex yang diinginkan pada string sumber.php memiliki banyak kelemahan dalam mendeteksi kevalidan email. angka. Pola kedua @[a-zA-Z0-9\-]+ artinya “harus ada simbol @ lalu setidaknya ada huruf. Dimana script tersebut hanya mengecek panjang string tidak mengecek awal string. Untuk mengecek kevalidan email kita dapat menggunakan pola regex seperti berikut: ^[a-zA-Z0-9_\-]+@[a-zA-Z0-9\-]+\. _(underscore).HTML dan PHP 65 . REGEX Untuk Validasi Email Mencari String dengan REGEX Mencari string merupakan pekerjaan tujuan utama dari pembuatan pola regex. tanda @.]+$ Pola pertama yaitu ^[a-zA-Z0-9_\-]+ artinya “email setidaknya diawali satu karakter yang berupa huruf.php yang pernah kita buat sebelumnya. exit.PHP Karakter \ ^ - Kerangan Escape Character Tidak diantara menyatakan sekumpulan karakter Dari beberapa kelebihan regex yang disebutkan diatas. eregi() tidak membedakan huruf kecil dan huruf besar(not case sensitve). angka atau tanda ( . PENERAPAN TEORI EREGI() Jalankan PHP DESIGNER 2006 buka file proses_kontak. nama kok kurang dari 3 huruf". string sumber. Pola ketiga \.

Struktur dasar penulisan eregi_replace() adalah: eregi_replace(string pola.php. Anda malas kali ni. string sumber).[a-zA-Z0-9_\-\. Mengganti String dengan REGEX Menggunakan Ulang Kode Prinsip kerja programmer adalah kerja seefisien mungkin dengan waktu. //cek kevalidan email if (!eregi('^[a-zA-Z0-9_\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9_\-\. $pesan). Jadi if akan mengeksekusi blok kode jika memang ada kesalahan atau pola tidak cocok dengan input dari user. Pada regex kita dapat menggunakan dua fungsi yaitu ereg_replace() dan eregi_replace(). PENERAPAN TEORI EREGI_REPLACE() Jalankan PHP DESIGNER 2006 buka file proses_kontak. '!@#$%'. '!@#$%'. tenaga dan biaya seminimal mungkin. $email)) { exit('<b>Email Tidak Valid</b>').]+$'. } PENJELASAN SCRIPT Saya rasa yang perlu saya jelaskan disini hanyalah penggunaan fungsi eregi() saja. Kata-kata kotor yang menggunakan huruf besar pun dianggap masuk kategori. exit('<b>Email Tidak Valid</b>'). Perbedaannya sama seperti sebelumnya ereg_replace() membedakan huruf kecil dan huruf besar.. Anda dapat menggunakan cara yang sama dengan cara sebelumnya untuk mencari string dengan str_replace().PHP elseif(strlen($pesan) < 10) { echo "<b>Komentar terlalu pendek</b>". gantilah blok kode pada foreach menjadi seperti berikut $pesan = str_replace($kata. $pesan).HTML dan PHP 66 .]+$'.. Karena didepan eregi terdapat tanda ! (seru) yang berarti jika ada kesalahan atau tidak cocok. string pengganti. Mode seperti diatas lebih singkat dibanding menulis dua perintah sekaligus yaitu echo dan exit. Sehingga difilter dan diganti dengan !@#$%. Untuk itu daripada menulis kode baru kita lebih baik menggunakan ulang kode yang pernah kita tulis. Lihatlah cuplikan script berikut if (!eregi('^[a-zA-Z0-9_\-]+@[a-zA-Z0-9\-]+\. $email)) Kita gunakan statemen if untuk menentukan kondisi. ganti dengan: $pesan = eregi_replace($kata. Tapi tentu saja dengan regex pola yang kita tentukan lebih spesifik dan mengena. exit. Bab 1 . Ini bukan masalah malas atau tidak. } Tambah kode berikut dibawah dari kode diatas tadi. Perintah exit juga dapat diisi parameter berupa string. Sedangkan eregi_replace() tidak.?. Setelah anda mengganti kode tersebut.

Pake ruangan contoh saja. PHP menyediakan dua fungsi yang dapat kita gunakan untuk memanggil ulang kode kita.php pada browser hasilnya akan seperti gambar 1.HTML dan PHP 67 .php. ?> Simpan dengan nama utama. ?> Simpan dengan nama require.php').php.<br>'.php PENJELASAN SCRIPT require() dan include() keduanya memiliki satu parameter yaitu string nama file. Ketik kode berikut ini. yaitu fungsi require() dan include(). Sedangkan include() hanya memberikan pesan warning. ?> Simpan dengan nama include.<br>'. ketik kode berikut ini <?php echo 'Saya adalah File require. Jalankan PHP DESIGNER 2006 klik File-New-PHP. Jangan lupa simpan ketiga file diatas pada folder hari-5.php. Sekali lagi buatlah file baru ketik kode berikut ini <?php echo 'Saya adalah File include.PHP Dengan menggunakan ulang kode yang pernah kita buat kita akan banyak menghemat waktu dan tenaga kita. dan include.php. require.php. include('include.21: Output file utama. Yang membedakan adalah jika ada kesalahan misalnya file tidak ada maka require() akan memberikan pesan fatal error. Jalankan file utama. Keduanya tampaknya sama lantas apa yang membedakan?. <?php require('require. echo 'Saya adalah File utama.<br>'. Mari kita bedah satu persatu. Bab 1 .php').php.21 Gambar 1. Maaf dok ruang operasi belum siap!. Menggunakan require() dan include() Untuk memperjelas pemahaman anda kita akan membuat tiga file yaitu file utama. Lalu buatlah kode PHP baru.

Pengembalian nilai mungkin berguna pada beberapa situsai seperti berikut. Fungsi yang paling penting dari kedua fungsi ini adalah kita dapat memanggil class dan fungsi yang berada pada file lain.PHP Satu lagi include() dapat mengembalikan nilai sedangkan require() tidak.HTML dan PHP 68 .php’). Bab 1 . if ($hasil === true) //jika file ada { //eksekusi kode } Hal seperti diatas tidak dapat anda lakukan jika menggunakan require(). $hasil = include(‘nama_file. Sehingga kita tidak perlu menulis ulang kode yang sama.

Bab 1 .HTML dan PHP 69 .

beri nama folder tersebut admin File-file yang akan kita buat untuk membangun website minimarket online ditunjukkan oleh tabel 1. Proyek yang akan kita kerjakan masih sama yaitu website MiniMarket Online milik pengusaha asal kota cyber yaitu Mr.php lihat_faktur.php Fungsi untuk menampilkan halaman utama(pembelian) untuk memproses form pembelian untuk menampilkan bagian atas website untuk menampilkan bagian bawah website untuk menampilkan form kontak untuk memproses form kontak untuk menampilkan daftar buku tamu untuk menampilkan form buku tamu untuk memproses form buku tamu Direktori Proyek-Bab1\admin Fungsi untuk menampilkan pesan peringatan untuk menampilkan bagian atas halaman admin untuk menampilkan daftar faktur pembelian untuk menampilkan data kontak yang masuk untuk menyimpan daftar faktur pembelian untuk menyimpan data kontak kami untuk menyimpan data buku tamu Nama File index.php buku_tamu..php lihat_kontak..banyak sekali!.php proses_bt. Direktori Proyek-Bab1 Nama File index. Beri nama forder baru tersebut hari-6. Tabel 1. Fitur-fitur yang terdapat pada website kita nantinya adalah: Fasilitas kasir online Pencatatan faktur Pencatatan pesanan untuk pengiriman Buku tamu Kontak kami Halaman administrator untuk melihat faktur dan kontak Untuk itu ikuti langkah-langkah berikut Buat folder baru pada direktori C:\Apache2\htdocs\webmaster\Bab1.Proyek Aplikasi Bab 1 Hari Ke-6 Proyek Aplikasi Bab 1 – MiniMarket Online Setelah menguasai teknik-teknik dasar PHP saatnya kita membuat website yang lebih terstruktur dan dinamis meskipun belum ada database. Web Janarko.php proses_beli.php proses_kontak.php header. Itu karena kita masih dalam tahap awal pembelajaran.php isi_bt. namai folder tersebut Proyek-Bab1.php footer.php kontak. iya memang.txt Wah.14 File-file pembangun website Minimarket online.html header_admin. Dengan menambahkan beberapa fitur baru. Namun kita akan membangun website ini lebih kompleks lagi.txt kontak. Lalu masuk pada folder C:\Apache2\htdocs\webmaster\Bab1\hari-6 Buat folder baru lagi.php buku_tamu.14.php faktur.HTML dan PHP . Masuk pada folder C:\Apache2\htdocs\webmaster\Bab1\Proyek-Bab1 Buat folder baru. Setelah kita mengenal database dan teknik-teknik PHP tingkat lanjut jumlah file kita akan lebih 70 Bab 1 .

ketik kode dibawah ini untuk membuat file footer.. Mungkin anda merasa kurang familiar dengan kode-kode yang berada pada tag: <style type="text/css"> .php">Home</a></td> <td><a href="kontak. Disana terdapat penjelasan yang lengkap tidak hanya CSS namun juga HTML secara lebih mendetail. Web Janarko</h1></td> </tr> </table> </body> </html> Simpan dengan nama footer.php">Buku Tamu</a></td> <td width="70%"></td></tr> </table> Simpan dengan nama header. font-size: 11} a{font-family: comic sans ms. File header.judul{font-family: comic sans ms.php">Kontak Kami</a></td> <td><a href="buku_tamu..php <p></p> <table border="0" width="100%"> <tr bgcolor="#ff6600"> <td align="right"><h1>(c) Copyright 2005 . Web Janarko</title> <style type="text/css"> . Script dari file header..php. font-size: 16.. Cukup basa-basinya langsung saja jalankan PHP DESIGNER 2006 untuk mengetik kode pertama kita yaitu header.Proyek Aplikasi Bab 1 sedikit. buat file baru kembali ketik kode berikut ini untuk membuat file index. Script dari file footer. font-weight: bold. font-size: 22.. Lanjut.!. File ini sangat singkat karena fungsinya hanya untuk menampilkan bagian bawah website. </style> Jika anda masih memerlukan penjelasan panjang lebar mengenai CSS. 71 Bab 1 ..php. Selanjutnya bualah file baru lagi.HTML dan PHP .php. textdecoration: none} a:hover{color: #ff6600. font-weight: bold} td{font-family: verdana. font-weight: bold} body{font-family: verdana.Mr. Jangan lupa letakkan pada folder Proyek-Bab1.php.Mr. font-size: 32.php. font-size: 12} </style> </head> <body> <table border="0" width="100%"> <tr bgcolor="#ff6600"> <td class="judul">MiniMarket Online</td></tr> </table> <table border="0"> <tr bgcolor="#cccccc"> <td><a href="index. Klik File-New-PHP lalu ketik kode berikut ini.php <html> <head> <title>MiniMarket Online . font-size: 18} h1{font-family: comic sans ms. Silahkan download ebook “Mastering Kode HTML”.php hanya berisi kode HTML saja tanpa ada kode PHP.

7500</td> <td><input type="text" name="baterei" maxlength="3" size="3"></td></tr> <tr> <td>Baygin</td> <td>Rp. Jika pada suatu direktori tidak terdapat file index. Bab 1 .Proyek Aplikasi Bab 1 Script dari file index.php bukan lainnya. Contohnya seperti direktori hari-5 atau direktori lainnya. Output file index.php').html atau index.HTML dan PHP 72 .php nantinya bagian atasnya akan sama dengan tampilan file header. Pada file index.php').php kita memanggil file header.php dengan menggunakan include('header.php ditunjukkan oleh gambar 1.php <?php include('header.php.php. Mengapa diberi nama index. Dimana didalamnya tidak terdapat file index. ?> Simpan script diatas dengan nama index. ?> <center> <h1>Selamat Datang</h1> <p>Silahkan pilih barang kesukaan anda lalu klik Beli</p> <form method="post" action="proses_beli.php. Oleh karena itu yang ditampilkan adalah daftar file yang ada pada direktori tersebut. Hal sama juga berlaku untuk file footer.php atau index.php.22.php"> <table border="0"> <tr bgcolor="#ff6600"> <td colspan="3" align="center"><b>PEMBELIAN</b></td></tr> <tr bgcolor="#ff6600"> <td><b>Barang</b></td> <td><b>Harga</b></td> <td><b>Jumlah</b></td></tr> <tr> <td>Baterei CBA</td> <td>Rp. 1750</td> <td><input type="text" name="silver" maxlength="3" size="3"></td></tr> <tr> <td colspan="3">Alamat Anda:</td></tr> <td colspan="3"><input type="text" name="alamat" size="25"></td></tr> <tr> <td colspan="3"><input type="submit" value="B e l i"></td></tr> </table> </form></center> <?php include('footer. 2250</td> <td><input type="text" name="baygin" maxlength="3" size="3"></td></tr> <tr> <td>Silver King</td> <td>Rp. Jadi file index.html maka server akan menampilkan daftar file yang ada pada direkoktori tersebut.php').

html $baterei = $_POST['baterei'].php <?php include('header. include('footer. // cek alamat if (strlen($alamat) < 8) { echo "<p>Alamat anda kurang lengkap</p>". $alamat = $_POST['alamat'].php').php').22: output file index.php Untuk memproses form pembelian yang ada pada halaman utama kita akan membuat file PHP baru bernama proses_beli. HARGA_BYN. } $baterei_ttl = $baterei $baygin_ttl = $baygin * $silver_ttl = $silver * $total = $baterei_ttl + * HARGA_BTR. 1750). // buat variabel untuk menanpung data dari minimarket. 2250).php yang pernah anda buat sebelumnya hingga menjadi seperti berikut.HTML dan PHP 73 . Script dari file proses_beli.php. HARGA_SLR. 7500). $silver = $_POST['silver']. $baygin = $_POST['baygin']. Anda juga dapat mengedit file proses_beli. Bab 1 . define('HARGA_BYN'.Proyek Aplikasi Bab 1 Gambar 1. # buat konstanta harga masing-masing produk define('HARGA_BTR'. exit. $baygin_ttl + $silver_ttl. define('HARGA_SLR'.

</p>'. ".'</td>' .$silver silver king -#.$baygin baygin -#$baygin_ttl -#.'). //diskon 0% $pesan_diskon = '<b>Diskon 0%</b>'.-</b><br>" .'<tr>' .($total * $diskon).'</td>' .$baterei baterei -#. } elseif ($total >= 75000) { $diskon = 0.$baygin. } elseif ($total >= 50000 && $total <= 74000) { $diskon = 0.'). exit. ''.'<tr>' . $tgl = date('H:i.$silver_ttl. //diskon 5% $pesan_diskon = '<b>Diskon 5%</b>'.$silver.05.'<td align="center">'.$baterei_ttl -#. } $subtotal = $total .number_format($subtotal.'</table>' .$baterei.Proyek Aplikasi Bab 1 // cek apakah total kurang dari atau sama dengan 0 if ($total <= 0) { echo '<p>Anda tidak membeli apa-apa.'</td></tr>' .'</td></tr>' . ''.'<td align="center">'.'<td>Baygin</td>' .$baterei_ttl. //keluar dari program } if ($total > 0 && $total < 25000) { $diskon = 0.'<td>'.'<td >Baterei CBA</td>' . Bab 1 .-</b></p>".$baygin_ttl.'</td>' . '. 0. } elseif ($total >= 25000 && $total <= 49000) { $diskon = 0.$silver_ttl -#.number_format($total. j F'). " . include('footer.php').'<td>Silver King</td>' . '.1.'<td>'. // diskon 15% $pesan_diskon = '<b>Diskon 15%</b>'. ?> <font size="4"><b>Pembelian Terproses</b></font><hr> <p><b>Berikut ini faktur pembelian anda</b></p> <table border="0"> <tr bgcolor="#cccccc"> <td align="center">Barang</td> <td align="center">Jumlah Beli</td> <td align="center">Bayar</td></tr> <?php echo '<tr>' .15."."<b>SUBTOTAL SETELAH DISKON: Rp.'<td align="center">'."$pesan_diskon<br>" . 0.$subtotal Subtotal -#$alamat\n". $isi_faktur = "$tgl -#.HTML dan PHP 74 ."<p><b>TOTAL: Rp.'</td></tr>' .'<td>'.". //diskon 10% $pesan_diskon = '<b>Diskon 10%</b>'.

php').php" method="post"> <b>Nama Anda:</b><br> <input type="text" name="nama" size="30"><br> <b>Email Anda:</b><br> <input type="text" name="email" size="30"><br> <b>Pesan atau Kritik:</b><br> <textarea name="pesan" cols="40" rows="10"></textarea><br> <input type="submit" value="Kirim"> </form> <?php include('footer.php.).23. Selanjutnya kita akan membuat file kontak.txt'.HTML dan PHP 75 .php'). fclose($buka_file). Web Janarko</h1> <form action="proses_kontak. Hal baru yang kita tambahkan adalah fungsi include() tentunya. ?> Simpan dengan nama kontak."<p>Barang akan segera kami antar ke alamat $alamat dalam 1 jam. 'a'). if (!$buka_file) { echo "<p><b>Maaf. Output dari script diatas akan terlihat seperti gambar 1. Pembelian anda tidak dapat diproses.php').php <?php include('header.php yang menampilkan form kontak kami. Yang kita tambahkan adalah fungsi number_format() dan $isi_faktur kita tambahkan variabel $alamat karena pada form terdapat field isian alamat. $isi_faktur). include('footer. echo '<p>Faktur telah tersimpan</p>' .. Bab 1 . } // tulis ke file dengan fwrite lalu tutup dengan fclose fwrite($buka_file. ?> PENJELASAN SCRIPT Tidak ada yang banyak berubah dari script yang pernah kita buat pada hari sebelumnya. Ketik kode berikut ini Script dari file kontak. ?> <h1>Kritik dan Saran Untuk MiniMarket Mr. Mohon coba lagi nanti</b></p><body></html>". Untuk itu buatlah file PHP baru pada PHP DESIGNER 2006. Kita akan mengirim barang ke alamat tersebut dengan menggunakan alat transportasi baru abad 21 yaitu Web Flash Car(bercanda.Proyek Aplikasi Bab 1 $buka_file = fopen('admin/faktur.</p>". exit..

$pesan = $_POST['pesan']. // buat variabel untuk data yang dikirim $nama = $_POST['nama']. } // cek kevalidan email if (!eregi('^[a-zA-Z0-9_\-]+@[a-zA-Z0-9\-]+\.php Form kontak sudah ada. 'biadab'. 'bangsat'. exit.4: output file kontak.Proyek Aplikasi Bab 1 Gambar 1. Buatlah file PHP baru dengan mengklik File-New-PHP lalu salin kode berikut ini. Script dari file proses_kontak. foreach ($kotor as $kata) Bab 1 .2.php. exit. 'shit'). } // filter kata-kata kotor $kotor = array('brengsek'.php'). 'sialan'.]+$'. nama kok kurang dari 3 huruf".php <?php include('header. $email)) { exit('<b>Email Tidak Valid</b>'). // cek panjang string if (strlen($nama) < 3) { echo "<b>Masa.HTML dan PHP 76 . } if(strlen($pesan) < 10) { echo "<b>Komentar terlalu pendek</b>".[a-zA-Z0-9_\-\. Selanjutnya kita akan membuat file yang akan memproses data yang dikirim dari form kontak. 'fuck'. $email = $_POST['email'].

?> Simpan dengan nama proses_kontak.txt'. // jika $jml_posting == 0 maka tidak ada yang posting if ($jml_posting == 0) { 77 Bab 1 .$email -#.HTML dan PHP . "<br>". Untuk bagian script lainnya masih sama dengan sebelum-sebelumnya.php">isi SEKARANG!</a><hr> <p><b>DAFTAR BUKU TAMU</b></p> <?php $buku_tamu = file('admin/buku_tamu. } // trim() untuk menghilangkan spasi diawal dan diakhir $nama = trim($nama).'<p><b>Terima Kasih</b></p>'. Ketik script dibawah ini lalu simpan dengan nama buku_tamu. Namun untuk sekarang kita akan menggunakan file biasa sebagai media penyimpanan buku tamu. // ganti karakter ENTER dengan <br> $pesan = str_replace("\n". <a href="isi_bt.php Script dari file buku_tamu. if (!$buka_file) exit('Tidak dapat menulis ke file'). '!@#$%'. $isi_kontak = "$tgl -#.txt $buka_file = fopen('admin/kontak. $pesan). Form ini banyak kita temui di berbagai website. Sekarang kita coba untuk membuatnya. // hitung jumlah array $jml_posting = count($buku_tamu).MiniMarket Online</h1> Belum mengisi. $pesan = trim($pesan). Ini kita akan praktekkan pada bab-bab selanjutnya. d-m-Y'). Pada script diatas setiap karakter \n pada pesan yang dihasilkan user karena penekanan tombol ENTER akan kita rubah menjadi format html yaitu <br>. echo '<h1>Saran atau kritik anda telah tersimpan</h1>' . $email = trim($email). $tgl = date('H:i.$nama -#.php'). Kita tidak memasukkan fungsi mail() karena kita belum di server sebenarnya. $pesan).Proyek Aplikasi Bab 1 { $pesan = eregi_replace($kata.txt').php.php'). Namun biasanya buku tamu yang kompleks menggunakan database. Lagipula jika dengan mail() kita juga harus terhubung dengan internet untuk membaca email yang masuk. ?> <h1>Buku Tamu . fwrite($buka_file. // catat data kontak ke file kontak. fclose($buka_file). Berikutnya kita akan membuat form buku tamu. Lebih baik kita membacanya dari website kita langsung karena akan lebih cepat. $isi_kontak).$pesan\n".php <?php include('header. 'a'). include('footer.

$bagian[1]. Format penulisan ini pada file yang memproses form buku tamu yaitu proses_bt. Ketik kode berikut ini.'</table>' .'<td><b>Oleh: </b>'.php').php <?php include('header. $bagian[0] merupakan array paling kiri yaitu tanggal.'</td></tr>' . $bagian[1] merupakan nama pengririm dan $bagian[1] merupakan komentar. } Masing-masing komentar dari user kita letakkan pada tabel sendiri-sendiri. Jika pada file buku_tamu.'<td><b>Email: </b>'. Oleh karena itu perintah untuk menampilkan tabel yaitu echo '<table> . $bagian merupakan array dari setiap data yang dipisahkan oleh tanda -#.'<tr bgcolor="#ff6600">' .sama seperti sebelum-sebelumnya.'<td><b><font color="white">Di-post pada: '. //untuk memberi jarak antar komentar user } include('footer. Untuk membuat form isian buku tamu buat file PHP baru. exit. $index<$jml_posting.</p>".'. include('footer. Juga terdapat link untuk mengisi buku tamu bagi yang belum yaitu link isi Sekarang!. ?> PENJELASAN SCRIPT Pada halaman buku_tamu. Jika user mengklik link isi Sekarang maka akan muncul form isian buku tamu.'<tr>' . $buku_tamu[$index]).php').php').HTML dan PHP 78 . Cuplikan kode yang mengontrol kondisi ini adalah if ($jml_posting == 0) { echo "<p>Tidak ada posting untuk saat ini.php'). Sehingga pembuatan tabel akan diulang sebanyak jumlah posting yang ada.Proyek Aplikasi Bab 1 echo "<p>Tidak ada posting untuk saat ini.'<tr>' .'<p><hr></p>'.. Script dari file isi_bt.'</td></tr>' .php kita akan langsung menampilkan komentar-komentar yang sudah di-post.</p>".php. exit.'</font></bold></td></tr>' .$bagian[3]. </table>' kita letakkan pada blok kode for.'<tr>' .$bagian[0] . echo '<table border="0" cellpadding="4" width="70%">' . $index++) { //pecah setiap bagian array $bagian = explode(' -#.'</td></tr>' . ?> Bab 1 .$bagian[2]. include('footer. } // buat tabel untuk masing-masing posting for($index=0.'<td><p><b>Komentar: </b></p>'..txt yang berada di direktori admin isinya kosong maka tidak ada yang posting.

php Script dari file proses_bt.php'). $email = $_POST['email']. 'sialan'. 'fuck'.2. ?> Simpan dengan nama isi_bt.5: output file buku_tamu. // filter kata-kata kotor $kotor = array('brengsek'.]+$'. $komentar = $_POST['komentar']. Bab 1 .php. 'biada'. if (strlen($nama) < 3) exit('<p>Nama terlalu pendek</p>').php" method="post"> <b>Nama: </b><br> <input type="text" name="nama"><br> <b>Email: </b><br> <input type="text" name="email"><br> <b>Komentar: </b><br> <textarea name="komentar" cols="50" rows="8"></textarea><br> <input type="submit" value="KIRIM"> </form> <?php include('footer.Proyek Aplikasi Bab 1 <h1>Isi Buku Tamu</h1> <form action="proses_bt.php <?php include('header. 'shit'). 'bangsat'. if (strlen($komentar) < 10) exit('<p>Komentar terlalu pendek</p>').php'). // buat variabel dari data yang dikirim $nama = $_POST['nama']. if (!eregi('^[a-zA-Z0-9_\-]+@[a-zA-Z0-9\-]+\. Tidak ada yang spesial pada script ini jadi saya tidak perlu menjelaskannya OK.HTML dan PHP 79 . Selanjutnya kita akan membuat file untuk memproses form isian buku tamu yaitu file proses_bt.[a-zA-Z0-9_\-\.php Gambar 1. $email)) exit('<p>Email tidak valid</p>').

File buku_tamu.txt'. $email = trim($email).php kita letakkan pada folder admin.php juga akan merubah karakter \n akibat tombol ENTER pada komentar dengan format html untuk garis baru yaitu <br>.php’. $buku_tamu). $komentar).html.HTML dan PHP 80 .txt $buka_file = fopen('admin/buku_tamu. '!@#$%'. Jadi pada fopen() kita menuliskan ‘admin/buku_tamu. "<br>".$email -#. $tgl = date('H:i.Proyek Aplikasi Bab 1 foreach ($kotor as $kata) $komentar = eregi_replace($kata.php file proses_bt. ?> PENJELASAN SCRIPT Hampir sama dengan dengan proses_kontak. // ganti karakter ENTER dengan <br> $komentar = str_replace("\n". include('footer. Karena fokus kita adalah database maka untuk manajemen administrator yang kompleks akan kita bahas pada bab-bab selanjutnya. 'a'). if (!$buka_file) exit('Tidak dapat menulis ke file').Admin Page</title> </head> <body> <h1>Akses Ditolak</h1> </body> Bab 1 . d-m-Y'). Hal ini berguna agar tampilan yang keluar sesuai dengan keinginan user. Akhir dari file yang berada pada direktori Proyek-Bab1 File-File untuk Administrator File-file ini hanya bertujuan untuk menampilkan faktur dan kritik atau pesan dari konsumen. $buku_tamu = "$tgl -#. // trim() untuk menghilangkan spasi diawal dan diakhir $nama = trim($nama). // catat data kontak ke file kontak. File ini hanya bertujuan untuk menampilkan pesan “bohongan”. $komentar = trim($komentar). $komentar).$nama -#. fclose($buka_file).php').'<p><b>Terima Kasih</b></p>'.$komentar\n". Agar daftar file pada direktori admin tidak dapat dilihat secara langsung maka buatlah file index. echo '<h1>Komentar anda berhasil di-post</h1>' . Untuk membuatnya klik File-NewHTML/XHTML Script dari file index.html <html> <head> <title>Akses Ditolak . fwrite($buka_file. Simpanlah file-file adiministrator ini pada direktori admin.

Hanya itu? Ya namanya juga “bohongan”.php <html> <head> <title>MiniMarket Online . Kok sepi tidak ada yang beli</b></p>". Web Janarko</title> <style type="text/css"> td{font-family: verdana. color: white} h1{font-family: comic sans ms.php">Edit Buku Tamu</a></td> <td width="70%"></td></tr> </table> <p></p> Simpan pada direktori admin dengan nama header_admin. Tujuan satu-satunya adalah agar server tidak menampilkan daftar file yang ada di direktori admin. Untuk menampilkan faktur pembelian dari konsumen kita akan membuat file PHP baru yang bernama lihat_faktur.php">Lihat Kontak</a></td> <td><a href="edit_bt. font-size: 12} </style> </head> <body> <table border="0" width="100%"> <tr bgcolor="#ff6600"> <td class="judul"><h1>Admin Area . font-size: 22. Script ini hampir sama dengan yang pernah kita buat pada hari ke3. Seperti biasa buatlah file PHP baru pada PHP DESIGNER 2006 klik File-New-PHP lalu ketik listing kode berikut Script dari file lihat_faktur. Script dari file header_admin. //hitung jumlah array $jml_pembelian = count($faktur). } Bab 1 .php">Lihat Faktur</a></td> <td><a href="lihat_kontak.php. font-size: 11} th{font-family: verdana. // buka file faktur. font-weight: bold} body{font-family: verdana. Untuk bagian atas website file ini kita namakan header_admin. File lain yang membutuhkan file ini cukup memanggil dengan include(). Isi dari file hanya berisi kode HTML saja. font-size: 11.txt').php').html. //jika $jml_pembelian == 0 maka tidak ada pembelian if ($jml_pembelian == 0) { echo "<p><b>Waduh.php.HTML dan PHP 81 .txt dengan perintah file() bukan readfile() // file() akan memecah setiap baris atau pembelian menjadi array $faktur = file('faktur. Jika anda mengakses alamat http://localhost/webmaster/Bab1/hari-5/Proyek-Bab1/admin/ maka yang muncul adalah pesan Akses Ditolak.MiniMarket Online</h1></td></tr> </table> <table border="0"> <tr bgcolor="#cccccc"> <td><a href="lihat_faktur.php.Proyek Aplikasi Bab 1 <html> Simpan pada direktori admin dengan nama index.php <?php include('header_admin.Mr.

'<th>Alamat</th>' . $faktur[$index]). for ($jml_bagian=0.php yang ada pada parent direktori (direktori diatas admin) dengan menggunakan tanda .php.. Jika belum baca lagi tentang looping pada array.HTML dan PHP 82 . Kita cukup panggil file footer./ yang artinya pindah satu direktori ke atas... // x subtotal // cetak ke layar echo '<tr>'. include('.'<th>Total Rp./footer.'<th>Silver King</th>' .'<tr bgcolor="#ff6600">' .'<th>Baterei CBA</th>' .Proyek Aplikasi Bab 1 // buat tabel untuk menampilkan faktur echo '<table border="0" cellpadding=2>' . $jml_bagian++) { echo '<td align="right">'.'<th>Baygin</th>' . $faktur[$index]). Untuk mengakses halaman ini arahakan browser anda ke http://localhost/webmaster/Bab1/hari-5/Proyek-Bab1/admin/lihat_faktur. $jml_bagian<9. Karena bagian bawah tampilan website kita buat sama maka kita tidak perlu membuat file untuk bagian bawah lagi.'<th>Total Rp. Sehingga perintah ini akan diulang sebanyak jumlah baris yang ada pada file faktur.. for($index=0. include('.'<th>Tanggal Beli</th>' . PENJELASAN SCRIPT Saya akan menjelaskan beberapa bagian script yang mungkin masih mengganjal pada pikiran anda. } echo '</table>'. $bagian = explode(' -#. // x silver king $bagian[7] = intval($bagian[7]). // x baygin $bagian[5] = intval($bagian[5]).'</tr>'.'<th>Sub Total + diskon</th>' .'<th>Total Rp. pada eksekusi pertama nilai $index adalah 0. // rubah variabel dari tipe string ke integer dengan intval() // supaya angkanya saja yang dicetak $bagian[1] = intval($bagian[1]). } echo '</tr>'.php.</th>' .php').. $index<$jml_pembelian. jangan memusingkan pikiran anda sendiri.$bagian[$jml_bagian]. // x baterei $bagian[3] = intval($bagian[3]).. Dengan demikian isi dari $bagian otomatis akan mengikuti $index yang aktif. pada eksekusi ke-2 nilai $index adalah 1 dan begitu seterusnya./footer. $index++) { // pecah setiap bagian menjadi array $bagian = explode(' -#.txt. Bab 1 .'</td>'.php').'. ?> Jangan lupa simpan di direktori admin dengan nama lihat_faktur.</th>' . Pada $faktur[$index] nilai $index pada saat eksekusi akan berubah.'.</th>' . INGAT kode ini terletak didalam blok looping yaitu for. PAHAM? Bagus.

Buat file PHP baru lalu ketik kode berikut ini Script dari file lihat_kontak. // hitung jumlah kontak yang ada $jml_kontak = count($sumber). Bab 1 .'.$bagian[$jml_bagian]. for ($jml_bagian=0.'</td>'.'<th>Email</th>' . $jml_bagian<4.php pada admin area Berikutnya kita akan membuat file lihat_kontak. $sumber[$index]).'<th>Nama</th>' . } echo '<table border="0" cellpadding="4">' . $sumber = file('kontak. // buat baris untuk setiap data kontak echo '<tr>'. $jml_bagian++) { echo '<td>'. $index<$jml_kontak. Seperti namanya file ini akan menampilkan daftar kontak yang masuk ke administrator lewat form kontak kami.'<th>Pesan</th>' . if ($jml_kontak == 0) { echo "<b>Tidak ada faktur yang tercatat</b>".php <?php include('header_admin.php'). for ($index=0.php.HTML dan PHP 83 .'<tr bgcolor="#ff6600">' . } echo '</tr>'.'<th>Tanggal</th>' .Proyek Aplikasi Bab 1 Gambar 1. $index++) { // pecah setiap bagain $bagian = explode(' -#.2.6: output file lihat_faktur.txt').'</tr>'.

htm. Oleh karena itu untuk alasan keamanan selalu buatlah file index diatas meskipun isinya kosong./footer.26: Output file lihat_kontak. include('. index.php maka web server akan menampilkan daftar file yang ada pada direktori tersebut.HTML dan PHP 84 .'<p></p>'.html atau index. ********** Bab 1 . ?> Gambar 1.php pada admin area Jika pada suatu direktori tidak terdapat file index.php').Proyek Aplikasi Bab 1 } echo '</table>' ..

Berikutnya Pada bab berikutnya kita akan mempelajari bagaimana membuat fungsi. mengaplikasikan OOP dan teknik-teknik PHP lainnya.HTML dan PHP 85 . Bab 1 .

Bab 2 Fungsi OOP (Object Oriented Programming) Teknik PHP Lainnya Sebelum melanjutkan ikuti langkah-langkah berikut: Masuk pada direktoriC:\Apache2\htdocs\webmaster\ Buat folder baru dan beri nama Bab2 ********** 86 .

Seperti fungsi phpinfo() yang merupakan fungsi untuk menampilkan versi PHP dan lingkungan servernya. Secara garis besar fungsi merupakan kode yang memiliki modul. Jadi untuk memanggilnya kita cukup mengetikkan phpinfo(). Kita sebelumnya sering memanggil fungsi-fungsi built-in PHP seperti fopen().765). strlen() dan lain-lain. melakukan beberapa tugas. //parameter ini bertipe double nama_fungsi($variabel). Beberapa fungsi dapat dipanggil dengan cara seperti diatas. Selain string parameter juga dapat berupa interger. dan dapat mengembalikan suatu nilai. Contoh pemanggilan fungsi yang memiliki parameter adalah sebagai berikut nama_fungsi(‘parameter’). dan Teknik PHP Lainnya 87 . Bab 2 . Fungsi phpinfo() tidak memiliki parameter. OOP. Pada contoh diatas paramter yang digunakan adalah tipe string. double atau merupakan variabel bahkan array. nama_fungsi(18). //parameter ini bertipe integer nama_fungsi(25. Namun sebagian besar fungsi memiliki satu atau lebih parameter untuk melakukan tugasnya. //parameter ini merupakan variabel Fungsi Tidak Dikenal Jika kita memanggil fungsi yang tidak terdifinisi maka akan muncul pesan error seperti gambar 2. Setelah membaca materi fungsi ini anda diharapkan mengerti tentang: Definisi Fungsi Membuat Fungsi Penamaan Fungsi Parameter Mengembalikan Nilai dari Fungsi Scope (Jangkauan) Memanggil Fungsi nama_fungsi().0. Sebenarnya apa sih fungsi itu?.Fungsi.Fungsi dan OOP Hari ke-7 Seperti biasa karena ada pergantian hari maka ikuti langkah berikut: Masuk pada direktori C:\Apache2\htdocs\webmaster\Bab2 Buat folder baru berinama folder tersebut hari-7 F UN G S I Dari pertama pembicaraan kita tentang PHP anda sering mendengar kata fungsi. Kode dibawah ini contoh sederhana pemanggilan fungsi yang tidak memiliki parameter.

Jadi penamaan pada fungsi berbeda dengan variabel. Memang pengedar??? Penamaan Fungsi Bab 2 . Variabel membedakan huruf kecil dan huruf besar. Untuk kasus diatas ada dua hal yang perlu anda selidiki: 1.0: fungsi yang tidak dikenal Pesan error seperti diatas sangatlah membantu kita.Fungsi.0. Misalnya tugasnya mencetak pesan error maka nama fungsinya dapat anda buat cetakerror() atau cetak_error(). Apakah fungsi itu ada pada versi PHP yang anda gunakan? Mengecek nama suatu fungsi tidaklah selalu mudah contohnya. Bandingkan dengan strip_tags() yang memisahkan kata dengan tanda underscore. tadi. Nama-nama fungsi berikut adalah legal: nama() _nama() nama3() nama_tiga() Sedangkan nama-nama fungsi berikut ini ilegal: 3nama() nama-tiga() fopen() fopen adalah legal jika fungsi ini belum ada. file mana yang error dan terletak di baris keberapa. Perlu anda ketahui kalau nama fungsi tidak membedakan huruf kecil dan huruf besar. Namun karena sudah merupakan fungsi built-in PHP maka akan dianggap ilegal. Salah mengetikkan nama fungsi atau fungsi tersebut tidak ada akan memunculkan pesan error seperti gambar 2.Fungsi dan OOP Gambar 2. OOP. Dan akan ditangkap oleh pihak kepolisian polda PHP Jaya. Apakah nama fungsi sudah tertulis dengan benar? 2. Karena kita akan tahu jenis dari kesalahan. $nama berbeda dengan $NaMa. Jadi fungsi nama_fungsi() sama dengan NAMA_FUNGSI() atau naMa_Fungsi() dan sebagainya. Namun pada buku ini kita akan membuat fungsi yang semuanya menggunakan huruf kecil. Berikut ini contoh penamaan fungsi yang boleh(legal) dan tidak diperbolehkan (ilegal). Tapi kalau fungsi nama() sama dengan NaMa(). Fungsi addslashes() menggabungkan dua kata sekaligus. Sebaikknya nama fungsi yang anda buat mencerminkan tugas dari fungsi itu sendiri. dan Teknik PHP Lainnya 88 .

"2. Dengan menulis fungsi sendiri anda dapat melakukan sesuatu sesuai keinginan anda. Untuk itu ada baiknya anda membuat sebuah file yang khusus berisi fungsi-fungsi yang sering anda gunakan. Untuk lebih memperjelas pemahanan anda kita akan coba gunakan fungsi tersebut. dan blok kode. server dan masih banyak lagi. Jika anda menulis suatu blok kode dan blok kode itu sering anda gunakan pada tempat atau file lain.$param2. parameter jika ada. Maka sekarang kita akan coba membuat fungsi yang memiliki parameter. OOP. $param2) { echo "Isi dari parameter 1 adalah ". Untuk memanggil fungsi ini kita cukup mengetikkan fungsiku(). PHP 5.04 Isi dari parameter 2 adalah 2."<br>". PHP 5. echo "Isi dari parameter 2 adalah ".04"."<br>". Parameter Fungsi Jika fungsi sederhana diatas tidak memiliki parameter. database.01 Bab 2 . Tetapi fungsi yang kita buat sendiri hanya tersedia pada file tempat fungsi itu dibuat. Output yang akan ditampilkan oleh browser dari pemanggilan fungsi diatas adalah Isi dari parameter 1 adalah 1.Fungsi dan OOP Mengapa Harus Membuat Fungsi Buatan Sendiri? Fungsi-fungsi built-in yang sudah ada pada PHP sudah sangatlah kompleks.$param1. Diantaranya mengijinkan anda berinteraksi dengan filesystem. } Pada fungsi_2 diatas kita memliki dua parameter yaitu $param1 dan $param2. Anda dapat menulis blok kode itu kedalam suatu fungsi.Fungsi. Struktur Dasar Fungsi Untuk membuat suatu fungsi selalu diawali dengan mendeklarasikan keyword function lalu diikuti nama fungsi. MySQL 4. } Pada kode diatas kita mendeklarasikan sebuah fungsi dengan nama fungsiku. dan Teknik PHP Lainnya 89 . output yang ditampilkan pada browser adalah Fungsiku dipanggil Fungsi built-in pada PHP akan dapat diakses diseluruh script anda. MySQL 4. Kode anda mungkin gabungan dari fungsi built-in PHP maupun fungsi buatan anda sendiri. Contoh sederhana pembuatan fungsi adalah sebagai berikut function fungsiku() { echo "Fungsiku dipanggil". Untuk menjalankan fungsi tersebut kita dapat menuliskan fungsi_2("1. Namun bagaimanapun juga suatu waktu anda ingin melakukan sesuatu yang tidak terpikirkan oleh pembuat program.01"). Untuk memanggilnya kita dapat menggunakan fungsi include() atau require(). Lihatlah contoh berikut function fungsi_2($param1.

Ini disebut variabel local. Variabel yang dapat dilihat baik diluar ataupun didalam fungsi disebut variabel superglobal. Untuk membuat parameter yang bersifat opsional kita harus menentukan nilainya dulu. peringatan('PERINGATAN. } $var = "Aku variabel <b>global</b>". 'blue'). Contoh jika parameter kedua tidak ditulis adalah peringatan('PERINGATAN.04” sedangkan $param2 akan diganti dengan “2.$warna. $warna = 'red') { echo '<font size="4" color="'. Parameter juga ada yang bersifat opsional artinya boleh ditulis boleh tidak. ANDA GAGAL!!!'). Keyword global dapat digunakan untuk membuat variabel lokal yang ada didalam fungsi menjadi variabel global.Fungsi dan OOP Dari contoh diatas dapat anda simpulkan kalau variabel $param1 dan $param2. Penggunaan include() atau require() tidak mempengaruhi scope. ANDA GAGAL!!!'. Jika statemen include() berada dalam fungsi maka yang berlaku variabel lokal. Ini disebut variabel global. Untuk lebih jelas lihatlah contoh berikut function peringatan($pesan. Pada PHP ada beberapa ketentuan dari scope variabel diantaranya: Variabel yang dideklarasikan didalam fungsi hanya dapat dilihat pada fungsi tersebut saja. dan Teknik PHP Lainnya 90 . function fungsiku() { echo "Isi \$var didalam fungsi: $var <br>". Pada contoh diatas $param1 akan diganti dengan “1. } Pada fungsi diatas parameter pertama wajib ditulis sedangkan parameter kedua oleh ditulis atau tidak. ANDA GAGAL!!! Jika kita menulis parameter kedua maka kita harus menulis warna yang ingin ditampilkan. PERINGATAN ANDA GAGAL!!! Scope (Jangkauan) Scope variabel mengontrol dimana variabel itu dapat dilihat dan digunakan.'<font>'. Variabel yang dideklarasikan diluar fungsi pada suatu script dapat dilihat diseluruh bagian script tapi tidak didalam fungsi. Output dari fungsi diatas adalah: PERINGATAN. echo "Isi \$var didalam fungsi: $var <br>".01”. MySQL 4. OOP. Yang ada pada blok kode fungsi_2 akan diganti sesuai dengan input yang diberikan user ketika fungsi itu dipanggil. Bahasa pemrograman satu dengan lainnya mungkin memiliki peraturan yang berbeda dalam hal scope variabel. Jika statemen itu diluar fungsi yang berlaku adalah variabel global. Contoh berikut akan mengganti warna asal yaitu merah dengan biru.'">'. PHP 5. Contoh-contoh berikut akan menambah pemahaman anda tentang scope variabel pada fungsi. Bab 2 . $var = "Aku variabel <b>lokal</b>".$pesan.Fungsi.

function fungsiku($a. $var yang berada diluar fungsi tidak terpengaruh jadi tetap dicetak Aku variabel global. $var yang berada pada fungsi merupakan variabel lokal. echo "Isi \$var diluar fungsi: $var <br>". OOP. Jika anda ingin variabel $var bertipe global maka kita dapat menambahkan keyword global didepannya. Pada fungsi berikut akan membandingkan dua angka. Sehingga pada baris ketiga $var sudah memiliki nilai. Untuk menghentikan eksekusi pada suatu fungsi dapat digunakan keyword return. Output dari kode diatas adalah sebagai berikut: Isi $var didalam fungsi: Isi $var didalam fungsi: Aku variabel lokal Isi $var diluar fungsi: Aku variabel global Karena tanda $ merupakan karakter spesial agar tidak dicetak isinya maka kita gunakan escape karakter yaitu \. fungsiku(). Jika pada saat eksekusi angka yang ingin dibandingkan tidak diset maka fungsi akan keluar. kemudian fungsi fungsiku() dipanggil. else if ($a == $b) 91 Menghentikan Eksekusi Fungsi Bab 2 . dan Teknik PHP Lainnya . echo "Isi \$var diluar fungsi: $var <br>". Lihat contoh Kode berikut function fungsiku() { global $var. Baru pada baris kedua $var didefinisikan. $var = "Aku variabel <b>didalam</b>". } $var = "Aku variabel <b>diluar</b>". return.Fungsi. } if ($a < $b) echo "$a lebih kecil dari $b <br>".Fungsi dan OOP fungsiku(). echo "Isi \$var didalam fungsi: $var <br>". Ingat fungsi tidak akan dieksekusi jika tidak dipanggil. Jadi kode yang dieksekusi pertama kali yaitu $var = "Aku variabel <b>global</b>". Output dari kode diatas adalah: Isi $var didalam fungsi: Aku variabel didalam Isi $var diluar fungsi: Aku variabel didalam Perhatikan kalau isi dari $var yang diluar fungsi tertindih oleh $var didalam fungsi karena adanya keyword global $var. Ketika pada suatu fungsi menemui keyword return maka eksekusi akan dihentikan. Yang isinya Aku vaiabel lokal. Blok kode yang ada didalam fungsiku dieksekusi. $b) { if (!isset($a) || !isset($b)) { echo "Fungsi ini memerlukan dua angka". Karena pada baris pertama $var masih belum didefiniskan maka isinya kosong.

Output yang akan ditampilkan browser adalah 8 lebih kecil dari 10 10 lebih besar dari 8 Bab 2 . $b) { if (!isset($a) || !isset($b)) { return false. Output yang akan ditampilkan browser adalah 8 lebih kecil dari 10 10 lebih besar dari 8 Fungsi ini memerlukan dua angka Pada kode diatas kita gunakan isset() untuk mengetes suatu variabel apakah nilainya sudah diset(ditentukan) sebelumnya. fungsiku($x. OOP. $x). Mengembalikan Nilai dari Fungsi Daripada memberikan perintah echo pada suatu fungsi. $y). fungsiku($z. $y). Yang artinya belum/tidak diset. Dari fungsi sebelumnya kita dapat memodifikasi fungsi sebelumnya menjadi seperti berikut. Jadi fungsi akan keluar. 10. Pada output kode diatas tepatnya baris yang ke tiga. else return "$a lebih besar dari $b <br>". else if ($a == $b) return "$a sama dengan $b <br>". } $x = 8. Akan lebih baik jika kita hanya mengembalikan nilainya saja. Fungsi keluar dari rutin karena variabel $z tidak diset sebelumnya. else echo "$a lebih besar dari $b <br>". } if ($a < $b) return "$a lebih kecil dari $b <br>". fungsiku($x. Dengan demikian kita dapat memodifikasi bagaimana cara menampilkan hasilnya. dan Teknik PHP Lainnya 92 . $y = 10. Jadi pada kode diatas dapat kita terjemahkan “jika a tidak diset atau jika b tidak diset”. $x).Fungsi. fungsiku($z. fungsiku($y. $y). } $x = $y = echo echo echo 8.Fungsi dan OOP echo "$a sama dengan $b <br>". fungsiku($y. function fungsiku($a. Fungsi akan akan mengeksekusi blok kode if tersebut jika kondisinya true artinya ada variabel yang belum diset. Karena kita ingin mengetes apakah jika variabel itu belum diset maka fungsi yang kita gunakan adalah !isset(). $y).

} //fungsi sederhana yang menampilkan teks berjalan function animation($input_teks) { $anim = "<MARQUEE>$input_teks</MARQUEE>". OOP. Ketik kode berikut ini dengan sersan..Fungsi. //panggil file fungsi. font-size: 10px}" .php echo HTML_header('Aku Memanggil Fungsi')."</STYLE>" . PENERAPAN TEORI FUNGSI Seperti biasa bukalah program favorit kita PHP DESIGNER 2005. } //ini untuk bagian bawah halaman sebagai penutup tag function HTML_footer() { $footer = "</BODY>" .. $teks = "<h2>Aku memanggil fungsi dari file fungsi."</HTML>"."<BODY>". echo HTML_footer().php</h2>". Loh kok."<TITLE>$judul</TITLE>" . Sekarang buatlah kembali sebuah file PHP baru klik File-New-PHP."body{font-family: verdana.php akan kita panggil menggunakan include().php'). ketik kode berikut ini... <?php //ini untuk bagian keterangan halaman seperti judul dan CSS function HTML_header($judul) { $header = "<HTML>" . return $header. return $footer."<HEAD>" . Pada kode dibawah ini kita akan coba membuat fungsi-fungsi sederhana untuk menghasilkan tampilan HTML. dan Teknik PHP Lainnya 93 . Fungsi yang tidak menampilkan hasil biasanya memiliki nilai true atau false untuk mengindikasikan fungsi tersebut sukses atau tidak.. <?php include('fungsi."<STYLE>" .Fungsi dan OOP Karena $z tidak ada maka hasilnya tidak ditampilkan karena false. return $anim. maksudnya serius tapi santai. } ?> Simpan kode diatas dengan nama fungsi.. Nantinya file fungsi. echo animation($teks)."</HEAD>" . ?> Bab 2 .php dan jangan lupa letakkan pada folder hari-7.

Masing-masing fungsi tersebut akan mengembalikan nilai. Seperti judul halaman dan style CSS. Oleh karena itu kita panggil fungsi HTML_header() terlebih dahulu untuk mencetak header halaman. Untuk membuat halaman HTML yang benar tentu harus diawali dengan tag <html>. Fungsi ini memiliki satu parameter yaitu string untuk nama judul. Hasilnya akan seperti gambar 2. jika otak anda menganggap ini mudah maka ini akan mudah. public dan protected Memanggil Class Inheritance(Pewarisan) Bab 2 .php Aku Memanggil Fungsi.Fungsi.php kita memiliki tiga fungsi yaitu HTML_header().php. Itu tergantung otak anda. dan Teknik PHP Lainnya 94 .1: output file panggil_fungsi. Kita gunakan statemen include('fungsi. Agar fungsi-fungsi pada file fungsi. Fokus yang harus anda pahami untuk materi ini diantaranya Konsep OOP Membuat Class Variabel $this Properti private. Setelah itu kita gunakan fungsi HTML_footer() untuk menutup tag body dan html. Oleh karena itu untuk menampilkan nilainya kita gunakan perintah echo(). OOP. Sedangkan untuk HTML_footer() tidak memiliki parameter karena hanya bertugas mencetak tag penutup untuk body dan html. Tapi kalau anda sudah beranggapan sulit pasti sulit pula otak anda dalam memahaminya.php dapat dikenali didalam file panggil_fungsi. Sama dengan HTML_header() animation() juga mempunyai satu paramter yaitu teks yang ingin dianimasikan. OOP (Object Oriented Programming) Wah dari namanya saja serem begitu pasti sulit nih. Lalu pada body halaman kita akan mencetak teks yang bergerak menggunakan fungsi animation(). HTML_footer() dan animation().Fungsi dan OOP Simpan dengan nama panggil_fungsi. Modifikasilah sesuka hati anda karena seperti kata pepatah “Pengalaman adalah Guru yang Terbaik”. Pada kode diatas judul halaman dari file fungsi.php. HTML_header($judul) merupakan fungsi untuk mencetak header dari halaman.php').php PENJELASAN SCRIPT Pada file fungsi.1 Gambar 2. Fungsi animation($input_teks) bertugas untuk menampilkan animasi teks berjalan dengan menggunakan elemen HTML yaitu marquee.php lalu jalankan pada browser Internet explorer anda di http://localhost/webmaster/Bab2/hari-7/panggil_fungsi.

. Metode merupakan suatu aksi yang dimiliki oleh objek tersebut juga bisa disebut fungsi yang didukung oleh objek itu. Untuk setiap orang diaplikasi tersebut kita dapat memisahkan suatu kejadian dari class ini yang menunjukkan informasi dari orang yang bersangkutan. Melainkan kita akan memahami OOP dan menerapkannya pada website kita nantinya.. Itulah tujuan utama kita!. kita dapat memisahkan kedua aksi atau kejadian dengan memanggil metode beriNama($nama).. Class nama_class { . Didalam OOP dikenal apa yang dinamakan class. Dimana PHP versi ke-4 masih belum 100% OOP. Bingung? Tentu saja karena dokter contoh masih belum datang jadi tunggu saja. Namun disini kita tidak akan membahas kelebihan OOP pada PHP 5..Fungsi dan OOP PHP 5 memiliki perubahan yang drastis menyangkut OOP.. Lihat ilustrasi dibawah ini. Misalnya kita memiliki sebuah class orang.Fungsi. Properti merupakan data dari objek yang berarti sebuah variabel milik dari objek tersebut.3: Ilustrasi class orang Misalnya ada dua orang bernama Jono dan Joni. Bab 2 . //daftar properti dan metode . function cetak_string($string). Pemrograman berorientasi objek merupakan konsep pemrograman yang menganggap sebuah objek memiliki properti dan metode. } Seperti yang kita tahu class merupakan kumpulan dari fungsi atau metode dan properti atau variabel. dan Teknik PHP Lainnya Membuat Class 95 . class nama_class { private $myvar. Struktur dasar penulisan class adalah seperti berikut. Sekarang PHP sudah bisa dikatakan bahasa yang mendukung OOP sepenuhnya. class orang metode: beriNama($nama) panggilNama() Konsep OOP   properti: $nama Gambar 2. Class merupakan sebuah tempat bagi objek yang mendeskripsikan metode dan properti apa yang dimiliki objek ini. { $this->myvar = $string. Untuk membuat class kita dapat mendeklarasikannya dengan menggunakan keyword class dan diikuti nama class. OOP. Dengan demikian kita dapat memanipulasi dua orang ini berdasarkan nama mereka yang ada pada variabel $nama..

public dan protected Kebanyakan bahasa pemrograman yang mendukung OOP mempunyai tiga keyword untuk identitas akses yaitu private. Properti private. } } Jika pada PHP 3 dan 4 hanya mengenal penggunaan var sebagai deklarator variabel dalam suatu class. Meskipun demikian. OOP. protected hampir sama dengan private hanya saja protected dapat diakses dari class turunan. } } Pada kode diatas kita membuat variabel $nama sebagai properti dari class orang dengan menggunakan keyword private. Dari gambar 2. untuk menjaga kompatibilitas dengan versi lama PHP 5 tetap membolehkan penggunaan keyword var. Pada PHP 3 dan 4 pendeklarasian properti hanya dengan keyword var. Tabel 2. Kemudian kita membuat dua fungsi sebagai metode dari class orang yaitu beriNama($strNama) dan panggilNama(). public dan protected. public dan protected Keyword private public protected Keterangan private hanya dapat diakses dari dalam metode objek saja dan tidak dapat diakses diluar objek. PHP 5 memiliki tiga deklarator yaitu private. function beriNama($strNama) { $this->nama = $strNama.Fungsi.3 kita dapat membuat suatu class dengan nama orang yang memiliki dua metode dan satu properti. Sedangkan panggilNama() akan mengembalikan nilai dari metode beriNama(). public juga dapat diakses pada class turunan. Jadi pada kode $this->nama = $strNama diatas isi dari properti nama sama dengan isi dari parameter metode beriNama($strNama). dan Teknik PHP Lainnya 96 . Variabel $this Saat eksekusi berlangsung pada metode dari suatu objek. private tidak dapat diakses dari class turunan. Contohnya $this->nama (jangan gunakan tanda $ sebelum nama dari properti) akan merujuk pada properti nama. Variabel $this secara otomatis didefinisikan sendiri oleh PHP.Fungsi dan OOP echo $this->myvar. Untuk lebih jelasnya lihatlah tabel 2.1. Bab 2 . } function panggilNama() { return $this->nama. yang artinya sama dengan public di PHP 5.1 Perbedaan properti private. Maka kodenya akan seperti berikut: class orang { private $nama. Pada PHP 5 kita mendeklarasikan properti dengan keyword private. Metode beriNama() akan menset properti dari $nama menjadi sesuai dengan input dari user. $this merujuk pada objek itu sendiri. public atau protected. public dan protected. public dapat diakses baik dari dari dalam metode objek saja atau diluar objek.

Untuk memanggil metode dalam objek kita gunakan tanda ->. Maksud dari inheritance adalah pembuatan class baru berdasarkan class yang sudah ada. Struktur dasar penulisan penurunan class adalah class B extends A { . $orang2->beriNama('Joni'). $orang1->beriNama('Jono'). Jadi metode dan properti dari class A dapat diakses dari objek yang menggunakan class B (jika tidak bersifat private atau protected). $orang->beriNama('Jono') artinya pada objek $orang1 kita memanggil metode beriNama dengan paramater string berisi Jono. Sekarang properti nama sudah memiliki nilai kita tinggal memanggil isi dari objek $orang1 dengan perintah $orang1->panggilNama(). echo $orang1->panggilNama().Fungsi dan OOP Hal yang sama juga berlaku untuk metode. Setelah itu baru kita dapat menggunakan metode dan properti dari class yang dipanggil. Untuk membuat class baru yang diturunkan dari class parent kita gunakan keyword extends. OOP. Dimana variabel itu akan menyimpan objek dari class yang dipanggil. Sebagai contoh kita akan mewariskan class orang ke class orangbaru. Memanggil Class Sedikit berbeda dengan memanggil suatu fungsi.Fungsi. Jika kita ingin memanggil class maka kita harus membuat sebuah variabel."<br>". } Kode diatas berarti turunkan class A pada class B.. Dengan cara yang sama kita dapat memanggil class orang.."<br>". echo $orang2->panggilNama(). dan Teknik PHP Lainnya 97 . Wah dipikiran anda kok uang saja. Dengan menambahkan metode baru yaitu beriAlamat() dan cariAlamat(). Sekarang kita mempunyai objek dengan nama $a yang merupakan representasi dari class nama_class. $orang2 = new orang. Struktur dasar pemanggilan class adalah: $a = new nama_class. Class baru tersebut sering disebut dengan class turunan(child) sedangkan class asal disebut class induk(parent). Class orang yang pernah kita buat akan kita turunkan ke class orangbaru. Kode dari class orang: class orang { Bab 2 . Inheritance (Pewarisan) Pewarisan? Ini mau buat surat wasiat atau bagaiamana?. $orang1 = new orang. Jika anda ingin mendeklarasikan metode yang bersifat private maka anda dapat menulis private function(). Output yang ditampilkan pada browser dari kode diatas adalah: Jono Joni Pada kode diatas kita membuat dua objek yaitu $orang1 dan $orang2.

$orang2->beriNama('Joni'). Jadi pada halaman yang ingin kita rubah tampilannya kita cukup memberi tanda khusus seperti tag {namatag}. $orang1->beriNama('Jono').Jl. Ketik kode berikut ini class skin 98 Bab 2 . Untuk lebih jelasnya jalankan PHP DESIGNER 2005 klik File-New-PHP untuk membuat file PHP baru.".". dan Teknik PHP Lainnya . Ini dikarenakan class orang baru merupakan turunan dari class orang.Fungsi." . } } Kode dari class orangbaru yang merupakan turunan dari class orang: class orangbaru extends orang { private $alamat. echo $orang1->panggilNama()." . $orang1->beriAlamat('Jl. echo $orang2->panggilNama(). function beriNama($strNama) { $this->nama = $strNama. function beriAlamat($strAlamat) { $this->alamat = $strAlamat. Dapat menggunakan metode beriNama() dan panggilNama() yang ada pada class orang. $orang2 = new orangbaru.$orang1->cariAlamat(). $orang1 = new orangbaru. } } Dibawah ini contoh penggunaan class orang baru. Output yang ditampilkan pada browser adalah: Jono . Jalan Santai Joni . PENERAPAN TEORI CLASS Pada contoh kali ini kita akan coba membuat class yang berfungsi sebagai template atau skin suatu halaman. } function cariAlamat() { return $this->alamat."<br>"."<br>".Jl. OOP.Fungsi dan OOP private $nama.$orang2->cariAlamat(). Buntu'). Buntu Jadi $orang1 dan $orang2 yang merupakan objek dari class orangbaru. Jalan Santai'). } function panggilNama() { return $this->nama. $orang2->beriAlamat('Jl. Tetapi class orang tidak dapat menggunakan metode dan properti dari class orangbaru.

php.php akan diubah sesuai dengan string yang diinginkan user. OOP. $judul). } } Simpan dengan nama template. Selanjutnya buatlah file PHP baru lalu ketik kode berikut: <html> <head> <title>PENERAPAN OOP</title> </head> <body> <center>{JUDUL}</center> <p>{UTAMA}</p> </body> </html> Simpan dengan nama file_skin. $skin->ganti_tampilan(). } function ganti_skin($namafile) { $this->file_skin = $namafile.Fungsi. $this->halaman). $judul = "<h2>OOP untuk file template</h2>". $this->halaman). foreach($this->tag as $str_dicari => $str_baru) { $this->halaman = ereg_replace($str_dicari. $this->halaman = implode("". private $halaman. $skin->ganti_tag('{UTAMA}'. function ganti_tag($namatag. <?php include('template.Fungsi dan OOP { private $tag = array(). dan Teknik PHP Lainnya 99 . } echo $this->halaman. private $file_skin. Jika anda menjalankan file ini yang muncul hanyalah tulisan {JUDUL} dan {UTAMA}. ?> Bab 2 . $skin->ganti_skin('file_skin. $str_pengganti) { $this->tag[$namatag] = $str_pengganti.php.php</h2>". $utama). $skin = new skin. kemudian ditampilkan pada file utama.php').php'). Kedua tag inilah yang akan kita ganti dengan string lain menggunakan objek dari class skin. Dan yang terakhir buatlah file PHP baru kembali dan ketik listing kode berikut. } function ganti_tampilan() { $this->halaman = file($this->file_skin). $str_baru. $skin->ganti_tag('{JUDUL}'. $utama = "<p>Tag yang ada pada file file_skin.

untuk itulah kita gunakan array. function ganti_skin($namafile) { $this->file_skin = $namafile. Jadi isi dari properti file_skin merupakan $namafile. Pada file template. Gambar 2. Mengapa? Karena kita tahu tag yang ada pada file yang kita gunakan sebagai template dalam kasus ini file_skin. $this->halaman = implode("". $this->halaman). } Metode ganti_skin() hanya memiliki satu properti yaitu $namafile yang merupakan string dari nama file yang ingin digunakan sebagai template. OOP. Dan $str_pengganti digunakan untuk mengganti $namatag. ganti_skin() dan ganti_tampilan().php dan jangan lupa simpan ketiga file diatas pada fodler hari7. foreach($this->tag as $str_dicari => $str_baru) { Bab 2 . function ganti_tampilan() { $this->halaman = file($this->file_skin). dan Teknik PHP Lainnya 100 . Output dari kode diatas akan seperti gambar 2. Tetapi beberapa tag. Setelah menentukan nama file dan tag yang ingin diganti metode yang terkakhir adalah tinggal mengganti dan mencetak ke layar.4: output file utama.php tidak hanya terdiri dari satu tag saja. Untuk mengetehui hasilnya arahkan browser anda ke alamat http://localhost/webmaster/Bab2/hari-7/utama. $namatag merupakan tag yang akan diganti.Fungsi.Fungsi dan OOP Simpan dengan nama utama.php juga terdapat tiga metode diantaranya metode ganti_tag().php. Jadi untuk setiap tag nantinya akan diganti dengan string tertentu. Untuk menentukan file yang digunakan kita menggunakan metode ganti_skin().php kita membuat tiga properti dan salah satunya bertipe array yaitu properti $tag. } Seperti yang anda lihat.4. $str_pengganti) { $this->tag[$namatag] = $str_pengganti. Untuk dapat mengganti tag pada file yang diinginkan tentu harus kita menentukan tag dari file mana yang akan diganti isinya. metode ganti_tag memiliki dua parameter yaitu $namatag dan $str_pengganti. Metode yang melakukan tugas tersebut adalah ganti_tampilan(). function ganti_tag($namatag. tag ini berada pada file yang memiliki tag yang akan diganti.php PENJELASAN SCRIPT Pada file template.

Untuk itu kita gunakan fungsi implode("". Isi dari properti halaman merupakan file yang telah kita tentukan dari metode ganti_skin(). OOP. $this->halaman). Langkah terakhir adalah mencetak isi dari halaman menggunakan echo $this->halaman. Bab 2 . Langkah pertama adalah kita membuka file tersebut dengan pertintah file($this->file_skin). Artinya kita menggabungkan array halaman tanda diberi tanda pemisah. dan Teknik PHP Lainnya 101 . } echo $this->halaman.Fungsi dan OOP $this->halaman = ereg_replace($str_dicari. Sekarang isi dari properti halaman adalah array dari setiap baris file yang dibuka. Sehingga akan tampil apa adanya sesuai yang dikehendaki. Ingat tanda => pada foreach berarti disebelah kiri tanda tersebut berarti index array sedangkan disebelah kanan merupakan nilai dari array. Yang menarik adalah penggunaan looping foreach untuk mengganti setiap tag dengan string yang diinginkan.Fungsi. Agar dapat dibaca secara utuh kita akan menggabung kembali array dari halaman. Pada blok looping ini kita menggunakan fungsi ereg_replace() untuk mengganti tag yang dicari dengan string baru. $str_baru. } Pada metode ini kita menentukan isi dari properti halaman. $this->halaman).

Bab 2 .Fungsi. dan Teknik PHP Lainnya 102 . OOP.

Masuklah pada direktori C:\Apache2\htdocs\webmaster\Bab2\ Buat folder baru pada direktori tersebut Namai folder itu hari-8 Teknik PHP Lainnya Pada materi Teknik PHP Lainnya ini kita akan membahas teknik-teknik PHP lainnya. yaitu “00” sampai “59” 103 Bab 2 . yaitu “00” sampai “23” Menit dalam format yang didahului angka nol. d F Y'). Output yang ditampilkan pada browser adalah 11-12-2005. “Februari” dan seterusnya Jam dalam format 12 jam tanpa didahului angka nol. Tanda “-“ kita gunakan sebagai pemisah antar tanggal. bulan dan tahun. dan Teknik PHP Lainnya . yaitu “0” sampai “23” Jam dalam format 12 jam dengan didahului angka nol. “Mon” dan seterusnya Nama bulan dalam format penuh seperti “January”. yaitu “01” samapai “12” Jam dalam format 24 jam dengan didahului angka nol. m merupakan bulan sekarang dan Y adalah tahun sekarang dalam 4 digit. Diharapkan setelah membaca materi ini anda dapat menguasai tentang: Tanggal dan Waktu Session Pada PHP Menggunakan $_GET Upload File Direktori dan File Tanggal dan Waktu Pada bab 1 kita sudah pernah menggunakan fungsi tanggal dan waktu. 11 December 2005 Fungsi date() memiliki banyak sekali format tampilan.2 berikut. Yaitu dengan memanggil fungsi date(). Untuk lebih lengkapnya lihatlah tabel 2. yaitu “1” sampai “12” Jam dalam format 24 jam tanpa didahului angka nol. Bandingkan dengan contoh berikut echo date('l.Fungsi. Fungsi date() memiliki satu parameter yaitu bertipe string.Teknik PHP Lainnya Hari Ke-8 Seperti biasa setiap kita menginjak hari yang baru kita akan membuat direktori baru. Tabel 2. Huruf d mengindikasikan tanggal sekarang. OOP. Lihatlah contoh berikut echo date('d-m-Y'). Output dari kode diatas adalah Sunday. Kode Keterangan a “am” atau “pm” A d D F g G h H i “AM” atau “PM” Tanggal sekarang dalam format 2 digit yaitu “01” sampai “31” Nama hari dalam format 3 huruf misalnya “Sun”.2 Format kode untuk fungsi date().

"Kamis". "Juni". "September". yaitu “00” sampai “59” Akhiran “th”. mana hafal? Buat apa dihafal kalau lupa tinggal lihat saja. misalnya “28”. “29”. Bab 2 . Deadline pada rahasia-webmaster. misalnya “MDT” Kode hari dalam angka. Kita akan mencoba membuat fungsi untuk menampilkan deadline hari tertentu. // tahun format 4 digit $jml_hari = date('t'). "Rabu". Anda tentunya ingat ketika mengunjungi website rahasiawebmaster. //tentukan $tglplus = $blnplus = $thnplus = jumlah penambahan dari tanggal sekarang 2. dan Teknik PHP Lainnya 104 . misalnya “0” untuk Sunday. // kode hari 0=minggu 1=senin dan seterusnya $bulan = date('n') . Maka seyogyanya kita menggunakan nama hari dan bulan sesuai negara kita. PENERAPAN TEORI TANGGAL DAN WAKTU Pada penerapan teori kali ini. //buat variabel $nama_bulan bertipe array $nama_bulan = array("Januari". $hari_ini = $nama_hari[$hari]. "November". dan “rd” pada tanggal Jumlah hari dalam bulan sekarang. "Juli". “Monday” dan seterusnya Mengembalikan “0” jika tahun sekarang bukan kabisan dan “1” jika sekarang merupakan tahun kabisat Bulan dalam format yang didahului angka nol. “nd”.com adalah dua hari setelah user mengunjunginya. "Sabtu"). "Maret". Namun ada beberapa yang penting seperti d. OOP. "Februari".Teknik PHP Lainnya I j l L m M n O r s S t T w y Y z Menampilkan “1” jika Daylight Saving Time dan “0” jika tidak Tanggal sekarang dalam format yang tidak didahului nol. m. "Desember"). "Agustus". "Mei". misalnya “2005” Hari ke sekian dalam satu tahun. “1” untuk Monday dan seterusnya Tahun sekarang dalam format 2 digit. // kita tetapkan deadline-nya 2 hari 0. "April". tanggal. Y.Fungsi. "Senin". 0. "Jumat". “Feb” dan seterusnya Bulan dalam format yang tidak didahului angka nol. // dikurangi 1 agar index awal = 0 $tahun = date('Y'). yaitu “1” sampai “365” Wih banyak sekali. misalnya “Jan”. yaitu “1” sampai “12” Perbedaan waktu dengan GMT. yaitu “1” sampai “31” Nama hari dalam format utuh seperti “Sunday”. Kita akan coba membuat fungsi untuk menampilkan deadline tersebut. yaitu “01” sampai “12” Nama bulan dalam format 3 huruf. 16 Oct 2005 20:10:22 +0700” Detik dalam format yang didahului angka nol. misalnya “05” Tahun sekarang dalam format 4 digit. “30” atau “31” Pengaturan timezone pada mesin. bulan dan tahun sekarang $tanggal = date('j'). Karena kita tinggal di negeri kita Indonesia tercinta.1. misalnya “Sun. // jumlah hari dalam bulan sekarang //buat variabel $nama_hari bertipe array $nama_hari = array("Minggu". "Selasa". Untuk itu jalankan PHP DESIGNER 2005 buat file PHP baru dnegan mengklik File-New-PHP ketik listing kode berikut ini <?php function show_deadline($pilihan) { // buat ketentuan hari. // tanggal format 1 sampai 31 $hari = date('w').com. "Oktober". misalnya “+0700” untuk (Indonesia) Tanggal dalam format RFC 822.

$tgl_nanti. '. } } else { //tahun kabisat if ($tgl_nanti > 29){ $tgl_nanti = $tgl_nanti . $blnplus = 1.30.' '.Teknik PHP Lainnya $bulan_ini = $nama_bulan[$bulan]. $thnplus = 1. dan Teknik PHP Lainnya 105 .28. $blnplus = 1. $blnplus = 1. $blnplus = 1.Fungsi.$bln_nanti. } } else if ($jml_hari == 30) { if ($tgl_nanti > 30) { $tgl_nanti = $tgl_nanti . } } //buat variabel bln_nanti untuk menampilkan Bulan $bln_nanti = $nama_bulan[$bulan + $blnplus]. $hari_nanti = $nama_hari[$hari + $tglplus]. // jika index bulan takterdefinisi maka index array bulan berarti 12 //maka kita anggap bulan Januari if ($bln_nanti == null) { $bln_nanti = "Januari". } //buat variabel thn_nanti untuk menampilkan Tahun $thn_nanti = $tahun + $thnplus.31. $tgl_nanti = $tanggal + $tglplus. OOP. else if ($hari_nanti == null && $hari_ini == "Sabtu") $hari_nanti = "Senin".'. return $hari_deadline. } else if ($pilihan == 0) Bab 2 . if ($hari_nanti == null && $hari_ini == "Jumat") $hari_nanti = "Minggu". // jika pilihan = 1 maka tanggal deadline yang ditampilkan // jika pilihan = 0 maka tanggal hari ini yang ditampilkan if ($pilihan == 1) { $hari_deadline = $hari_nanti.29. } } else if ($jml_hari == 28) { if ($tgl_nanti > 28) { $tgl_nanti = $tgl_nanti .' '. if ($jml_hari == 31) { if($tgl_nanti > 31) { $tgl_nanti = $tgl_nanti . $thn_nanti.

Bab 2 .'. tahun dan jumlah hari bulan sekarang. $nama_hari[1] adalah Senin dan seterusnya hingga elemen ke-7 yaitu $nama_hari[6] yang berisi Sabtu. Hal berikutnya yang kita lakukan adalah menentukan penambahan hari.2 jika masih kurang jelas. Hal yang sama berlaku untuk array $nama_bulan.$tahun. } else exit('Nilai paramater pertama dari show_deadline() harus 0 atau 1'). $hari_nanti akan menampilkan hari deadline dengan cara menambahkan index array dari $nama_hari dengan isi dari $tglplus yang sudah kita tetapkan yaitu 2.' '. OOP. dan $thnplus. 16 Oktober 2005 .php lalu jalankan pada browser." . $hari_nanti = $nama_hari[$hari + $tglplus]. Khusus untuk $tglplus penambahannya sudah kita tetapkan yaitu 2. Yaitu $pilihan dimana 0 untuk menampilkan tanggal hari ini. Seperti yang ditetapkan sebelumnya kalau isi dari $hari adalah date('w').Fungsi. Kesemuanya bertipe integer atau angka. Fungsi ini memiliki satu paramater. Variabel yang kita buat untuk mengindikasikan penambahan adalah $tglplus.hari ini Senin. } //ini akan menampilkan tanggal hari ini echo show_deadline(0). dan Teknik PHP Lainnya 106 .$bulan_ini.Teknik PHP Lainnya { $hari_biasa = $hari_ini. Sehingga isi dari $hari_ini akan merujuk pada string nama hari sekarang. $blnplus. Ini dimaksudkan agar kita mudah untuk mengolahnya dengan array. ?> Simpan dengan nama tanggal.deadline". Dimana baisanya hari pertama yang disebut adalah Monday atau Minggu. return $hari_biasa. bulan dan tahun dari waktu sekarang. bulan. Selanjutnya kita membuat variabel untuk hari.hari ini<br>". //ini akan menampilkan tanggal deadline echo show_deadline(1). Maka mau tidak mau kita juga harus mengikutinya.' '. Anda dapat melihat kembali tabel 2. Yang unik dari kode diatas adalah cara kita mendapatkan index array dari variabel $nama_hari. hanya saja karena nilai yang dikembalikan $nama_bulan adalah 1 sampai 12. '. if ($hari_nanti == null && $hari_ini == "Jumat") $hari_nanti = "Minggu"." . Output di browser anda tergantung dari tanggal hari ini. 18 Oktober 2005 . Jadi $hari akan mengembalikan nilai 0 sampai 6 sesuai dengan hari sekarang. Jadi isi dari $nama_hari[0] adalah Minggu.deadline PENJELASAN SCRIPT Pada kode diatas kita membuat sebuah fungsi yaitu show_deadline(). Senin dan seterusnya. tanggal. Output yang akan ditampilkan pada browser akan seperti berikut jika hari ini merupakan hari Minggu tanggal 16 Oktober 2005. Dan 1 untuk menampilkan deadline dua hari ke depan. Begitu pula dengan $bulan_ini. $bulan_ini = $nama_bulan[$bulan]. $hari_ini = $nama_hari[$hari]. Jadi kita akan membuat variabel $nama_hari yang bertipe array dengan tujuh elemen yaitu Minggu.$tanggal. Minggu. Kita harus menguranginya dengan angka 1 agar sesuai dengan index array yaitu 0 sampai 11. Karena standar hari komputer mengikuti orang-orang bule.

'. Maka deadlinenya menjadi 32. Kode diatas berguna untuk menghandel index array yang tidak terdefinisi(null). Isi dari $blnplus awalnya adalah 0. if ($jml_hari == 31) { if($tgl_nanti > 31) { $tgl_nanti = $tgl_nanti . } $thn_nanti = $tahun + $thnplus. $bulan akan mengembalikan nilai dari 0 hingga 11 setelah kita kurangi satu pada awal kode diatas. return $hari_deadline. Namun akan menjadi 1 jika isi dari $tgl_nanti lebih dari jumlah tanggal sekarang. Karena index 8 tidak terdefinisi maka kita tetapkan hari $hari_nanti menjadi dua hari ke depan yaitu Senin. itu hanya untuk tanggal 1 awal bulan sampai 2 tanggal terakhir dari bulan sekarang misalnya 28 atau 29. OOP. $bln_nanti = $nama_bulan[$bulan + $blnplus]. 32? Mana ada tanggal 32 bung!!.31. Karena pada $nama_bulan index 12 tidak ada maka kita tetapkan isi $bln_nanti menjadi Januari. Contohnya jika hari ini Jumat maka index $hari_nanti adalah 5 + 2 = 7... $blnplus = 1. Untuk itu kita menentukan isi dari $hari_nanti menjadi dua hari kedepan yaitu Minggu.. $thn_nanti. Kita ambil contoh misalnya bulan sekarang Desember yang jumlah harinya 31. Begitu pula jika hari ini adalah sabtu maka haka index $hari_nanti 6 + 2 = 8. if ($bln_nanti == null) { $bln_nanti = "Januari". if ($pilihan == 1) { $hari_deadline = $hari_nanti. Jika tanggal deadline yang isinya pada $tgl_nanti lebih dari 31 maka kita kurangi dengan 31. Agar $bln_nanti menjadi satu bulan kedepan. Untuk itu kita buat variabel $hari_deadline dengan isi yang merupakan variabel-variabel yang isinya Bab 2 . } } Untuk apa kita membuat blok kode if diatas. Maka blok if pada kode if ($jml_hari == 31) dijalankan.'.' '.Fungsi. Berarti ada pergantian bulan maka $blnplus kita set menjadi 1. Isi dari $bln_nanti merupakan isi dari array $nama_bulan. } Selanjutnya kita tinggal menentukan nilai balik dari fungsi show_deadline(). Tapi.' '. Karena index $nama_hari hanya sampai 6 maka $hari_nanti menjadi tidak terdefinisi.$bln_nanti. Untuk itu kita perlu mengetahui jumlah hari dalam bulan sekarang agar kita dapat menentukan pengurangnya. $thnplus = 1. Pada blok if diatas jika nilai $bln_nanti tak terdefinisi(null) maka index arraynya adalah 12. Misalnya $tgl_nanti isinya 32 maka kita kurangi 31 sekarang $tgl_nanti menjadi 1. Jika $pilihan yang diisikan user pada parameter adalah 1. Jika kita tidak menambahkan blok if diatas maka jika maksimal tanggal pada bulan sekarang 31 dan tanggal sekarang 30.Teknik PHP Lainnya else if ($hari_nanti == null && $hari_ini == "Sabtu") $hari_nanti = "Senin". Otomatis tahun akan berubah jadi kita tetapkan isi dari $thnplus menjadi 1 agar tahun bertambah 1. dan Teknik PHP Lainnya 107 . Maka yang ditampilkan adalah deadline.$tgl_nanti. Tanpa kode blok if diatas sebenarnya fungsi ini sudah berjalan dengan normal.

Arti dari time() – 3600 arinya adalah 3600 detik yang lalu dalam jam berarti 1 jam yang lalu."<br>". OOP. Lalu ketik kode berikut <?php ob_start(). Jalankan pada browser hasilnya akan seperti berikut. Kita mulai dari cookie terlebih dahulu.$_COOKIE['mycookie']. Anda dapat menggunakan fungsi setcookie() untuk membuat cookie. Misalnya setcookie('mycookie'. [string path]. echo "Isi dari mycookie adalah ".Teknik PHP Lainnya adalah 2 hari kedepan. 'Halo Cookie'). Untuk mengakses isi dari cookie mycookie kita menggunakan $_COOKIE['mycookie'].3600). Cookie biasanya menyimpan informasi pada suatu sesi tertentu. ''. ?> Simpan dengan nama cookie1. Jika tidak 0 atau 1 maka keluar dari program. Sehingga dapat ditampilkan ketika dipangil dengan echo. Karena lampau maka otomatis mycookie dihapus. Kita gunakan return $hari_deadline untuk mengembalikan nilainya.Fungsi. setcookie memiliki enam parameter namun yang wajib diisi hanya satu yaitu nama dari cookie. setcookie('mycookie'. Kita akan membahasnya satu persatu.php</a>'. Bab 2 . Struktur dasar dari penulisan setcookie() adalah setcookie(string nama cookie. Untuk menghapus cookie yang telah anda buat kita harus membuat cookie dengan nama yang sama tapi waktunya kita set pada waktu lampau. Session Pada PHP Cookie Cookie adalah sekumpulan informasi kecil yang diletakkan pada komputer klien. PENERAPAN TEORI COOKIE Jalankan PHP DESIGNER 2005 lalu buat file PHP baru dengan mengklik File-New-PHP. shopping chart dan lain-lain. COOKIE Isi dari mycookie adalah Halo Cookie Ke halaman cookie2. Biasanya session diimplementasikan pada sistem login. [string domain]. echo "Isi dari cookie mycookie adalah ". 'Halo Cookie').php">Ke halaman cookie2. time() . echo '<a href="cookie2. dan Teknik PHP Lainnya 108 . Contoh berikut mengilustrasikan cookie dengan nama mycookie dan isinya adalah Halo Cookie. [angka kadalwarsa]. [string nilai].php Selanjutnya buat kembali file PHP baru dan ketik kode berikut.php. $_COOKIE['mycookie']. Jika $pilihan sama dengan 0 maka yang ditampilkan adalah tanggal hari ini. Untuk session kita dapat menggunakan cookie atau PHP Session. echo "<b>COOKIE</b><br>". Pada dasarnya session digunakan untuk melacak user selama ia berada pada suatu website. setcookie('mycookie'. [string secure]).

php PENJELASAN SCRIPT Fungsi ob_start() pada baris awal mengaktifkan output buffering yang dibutuhkan untuk menciptakan cookie. Tanpa adanya ob_start() maka akan muncul pesan seperti berikut: Warning: Cannot modify header information . proses_login. <html> <head> <title>Sistem login Sederhana</title> </head> <body> <h2>Silahkan Login</h2> <form action="proses_login. member."<br>".php">Kembali ke cookie1. PHP Session Selain menggunakan cookie kita juga dapat menggunakan PHP Session untuk menyimpan informasi pada sesi tertentu.Fungsi. ?> Simpan dengan nama cookie2.php:4) in I:\Apache2\htdocs\webmaster\Bab2\hari-8\cookie1.$_COOKIE['mycookie']. Langkah-langkah yang perlu kita lakukan untuk berinteraksi dengan PHP Session antara lain: Memulai Session dengan perintah session_start() Mendaftarkan variabel session dengan $_SESSION[‘nama_session’] Menggunakan variabel session tersebut Menghapus dan menghancurkan variabel session dengan unset() dan session_destroy() Fungsi session_start() akan mengecek apakah sudah ada session yang aktif. OOP. Ketik kode berikut. PENERAPAN TEORI SESSION Pada penerapan teori session ini kita akan membuat empat file yaitu login. Keempat file itu kita gunakan untuk membangun sebuah member area sederhana.php.headers already sent by (output started at I:\Apache2\htdocs\webmaster\Bab2\hari-8\cookie1.php lalu jalankan pada browser. Tapi jika sudah ada maka session_start() akan membaca session tersebut agar dapat kita gunakan. Buat file PHP baru klik File-New-PHP untuk membuat file PHP baru. maka akan dibuat session baru. echo '<a href="cookie1.php.php tetapi juga cookie2.php. dan Teknik PHP Lainnya 109 . COOKIE dari halaman cookie1 Isi dari mycookie adalah Halo Cookie Kembali ke cookie1. Hasilnya akan seperti berikut.php.php</a>'.php dan logout.php" method="POST"> Username: <input type="text" name="username" size="16"><br> Password: <input type="password" name="password" size="16"><br> <input type="submit" value="Login"> Bab 2 . echo "Isi dari mycookie adalah ". Jika belum.Teknik PHP Lainnya <?php echo "<b>COOKIE dari halaman cookie1</b><br>".php on line 5 Dapat anda lihat cookie mycookie tidak hanya dapat dilihat dari halaman cookie1.

'<br>'. Ketik kode berikut ini untuk membuatnya <?php session_start().Teknik PHP Lainnya </form> <a href="member. $password = $_POST['password']. echo 'Anda login sebagai '. $sesiku = $_SESSION['login']. Selanjutnya buat file PHP baru lagi dan ketik kode berikut. Gambar 2.'.php">Logout</a>'.php. } ?> Simpan kode diatas dengan nama proses_login.'.php">Member Area</a> untuk melihat member area. echo 'Klik <a href="login.php">Login</a> untuk mencoba lagi.Fungsi. <?php session_start(). $username = $_POST['username'].5: output file login. username atau password salah<br>'.php">Member Area</a> </body></html> Simpan dengan nama login.php.$_SESSION['login']. echo 'Silahkan klik <a href="member. } else Bab 2 .php Selanjutnya kita akan membuat file member. if ($username == 'test' && $password == 'pas123') { $_SESSION['login'] = $username. echo $sesiku. echo '<a href="logout.php.5. Jalankan pada browser hasilnya akan seperti gambar 2. if (isset($sesiku)) { echo "<h2>Member Area</h2>". } else { echo 'Login gagal." Selamat datang di member area<br>". OOP. dan Teknik PHP Lainnya 110 .

Jadi kita harus ingat dua nama ini jika kita akan memprosesnya. Tugas utama dari file ini hanya untuk menampilkan form login.php yang kita dapat lewat metode POST. Silahkan <a href="login. Maka login gagal.'. Jika ya maka user ini user yang berhasil login.php">Login</a> kembali. Caranya dengan menggunakan $_SESSION['login'] = $username. } ?> Simpan dengan nama logout. Maka tampilkan member area.php lalu isikan username dengan test dan password dengan pas123. Kita tidak perlu membuatkan sesi untuk user ini karena dia gagal melakukan login.php">Login</a> dulu. Masing-masing namanya adalah username dan password.'. Selanjutnya kita buat variabel $username dan $password yang isinya masing-masing dari login. Tidak ada yang spesial didalamnya. Coba jalankan file login.Teknik PHP Lainnya { echo 'Anda belum login Silahkan <a href="login. yang memberitahu bahwa proses login gagal. } else { echo 'Anda belum login.php. $sesiku = $_SESSION['login']. Jika $sesiku tidak memiliki nilai maka 111 Bab 2 . Pada file member. Disini kita membuat dua input yaitu text dan password.php kita membuat variabel $sesiku yang isinya adalah session login.php">Login</a> dulu. Setelah mendapatkan isi dari $username dan $password kita akan mencocokkannya dengan menggunakan statemen if. Jika username tidak sama dengan test dan password tidak sama dengan pas123. } ?> Dan yang terakhir ketik kode berikut ini <?php session_start(). PENJELASAN SCRIPT Kita mulai pembahasan kita dari file yang pertama yaitu login. untuk itu kita tidak akan membuatkan sesi untuk user ini. if(isset($sesiku)) { unset($sesiku). session_destroy().php.php. echo 'Anda telah logout. Pada file ini kita akan memproses form login dari file login. Silahkan <a href="login. maka anda akan dibawa ke member area. Kita gunakan fungsi isset() untuk mengecek apakah $sesiku memiliki nilai. Lalu klik tombol login.Fungsi. Karena pada file ini kita akan menggunakan session maka pada awal script kita panggil fungsi session_start(). OOP. Blok kode pada else akan dijalankan. dan Teknik PHP Lainnya . Berikutnya adalah file proses_login. if ($username == 'test' && $password == 'pas123') Pada kode diatas jika isi dari $username sama dengan test dan isi dari $password sama dengan pas123 Maka login berhasil.php.'. karena user berhasil login maka kita buat session dengan nama login yang berisikan username dari user yang berhasil login.

Bab 2 . OOP. dan Teknik PHP Lainnya 112 .Teknik PHP Lainnya user tidak berhasil login maka jangan tampilkan member area. Lalu menghancurkan session menggunakan menggunakan session_destroy(). Untuk itu blok kode pada else yang akan dieksekusi. File yang terakhir yaitu logout.Fungsi.php bertugas menghapus session login dengan perintah unset().

OOP.Teknik PHP Lainnya Bab 2 . dan Teknik PHP Lainnya 113 .Fungsi.

php?action=news">Berita Terbaru</a></p>'.'<form>' .. dan Teknik PHP Lainnya 114 .'Password: <input type="password"><br>' .php?action=login">Login</a></p>'.'Melemahnya rupiah terhadap Dollar AS berdapak pada. PENJELASAN SCRIPT Bab 2 . Pada URL tersebut data yang akan kita ambil adalah test dan berada pada variabel ref.'<p><a href="pilihan. Jika anda mengklik link Berita Terbaru maka yang muncul adalah halaman berita. Untuk itu ikuti langkahlangkah berikut: Masuk ke direktori C:\Apache2\htdocs\webmaster\Bab2 Buat folder baru pada direktori tersebut Beri nama folder itu hari-9 Teknik PHP Lainnya (2) Menggunakan $_GET Penggunaan $_GET yang paling sering digunakan adalah jika kita mengambil data dari URL. OOP. Contoh fileku.php. <?php // buat variabel untuk menampung data dari URL $action = $_GET['action']. // tentukan aksi yang dilakukan jika action kosong if ($action == '') $action = 'login'. Klik menu File-New-PHP lalu ketik kode berikut. Tidak usah berlama-lama kita langusng saja mempraktekkan teori ini..Fungsi.'<p><a href="pilihan.' .'<input type="submit" value="Login"><br>' .'</form>' . Jalankan pada browser maka yang muncul adalah halaman form login.Teknik PHP Lainnya Hari Ke-9 Seperti biasa setiap pergantian hari baru kita akan buat folder baru. Misal fileku. Menarik bukan? satu file tapi memiliki dua tampilan. if ($action == 'login') { echo '<h2>Form Login</h2>' . } else if ($action == 'news') { echo '<h2>Berita Terbaru</h2>' . } ?> Simpan dengan nama pilihan.php?ref=test.'<b>Penjualan Komputer Menurun</b><br>' .'Username: <input type="text"><br>' . Untuk membuat lebih dari satu variabel pada URL kita dapat menggunakan tanda & untuk memisahkan antar data.php?proses=hapus&user=test. PENERAPAN TEORI $_GET Jalankan PHP DESIGNER 2005.

<html> <head> <title>File Upload</title> </head> <body> <h2>File Upload. Untuk menampung file dari form upload kita gunakan variabel array superglobal yaitu $_FILES. Jadi jika isi dari action kosong maka yang dijadikan nilai mula-mula adalah login.. Upload File Salah satu fungsi yang cukup berguna pada PHP adalah mendukung penggunaan HTTP Upload.php" method="post"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000"> Upload file ini: <input type="file" name="userfile" size="50"> <input type="submit" value="Upload File."> </form> </body> </html> Simpan kode HTML diatas dengan nama upload. Untuk itu kita gunakan statemen if ($action == '')..Fungsi.html. Dimana isi dari data yang akan kita ambil terletak pada action.</h2> <form enctype="multipart/form-data" action="upload. PENERAPAN TEORI UPLOAD FILE Jalankan PHP DESIGNER 2005 klik menu File-New-HTML/XHTML untuk membuat file HTML baru. Pada tampilan login kita memberi link berita terbaru yang linknya di http://localhost/webmaster/Bab2/hari-9/pilihan. Upload merupakan kebalikan dari download. OOP. dan Teknik PHP Lainnya 115 . Oleh karena itu kita gunakan $_GET['action'].6. Lalu isi dari $_GET['action'] kita tampung pada variabel $action.. Karena isi dari action adalah news maka blok pada else if ($action == 'news') akan dijalankan. Selanjutnya kita tentukan jika action berisi login maka blok kode pada statemen if ($action == 'login') dijalankan. Output dari kode diatas kan terlihat seperti gambar 2. Hanya saja didalam tag <form> kita menuliskan attribut enctype = "multipart/form-data". Untuk menampilkan form upload tidak jauh berbeda dengan form biasa.php?action=news. Maka yang muncul dibrowser hanyalah tampilan putih bersih tidak ada apa-apa. Upload kebalikannya yaitu pengiriman file dari komputer kita ke server. Jika download adalah proses pengiriman file dari server ke komputer kita.php.Teknik PHP Lainnya Pada kode diatas pertama yang harus kita lakukan adalah menamngkap isi dari data dari URL.. Karena pada saat memanggil file ini yang URL yang dipanggil hanyalah http://localhost/webmaster/Bab2/hari-9/pilihan. Bab 2 .

OOP. Untuk itu klik menu File-New-PHP pad PHP DESIGNER 2005. break..Fungsi. // $file_error jika ada error terjadi $file_error = $_FILES['userfile']['error'].Teknik PHP Lainnya Gambar 2.html Selanjutnya kita akan membuat file PHP baru untuk memproses form upload. 0777). // tentukan letak file yaitu di folder temp // cek dulu jika sudah ada temp maka tidak perlu membuat @ $baca_dir = opendir('temp/'). break. if (!$baca_dir) { mkdir('temp/'. } exit. // jika ada error tangani error tersebut if ($file_error > 0) { echo 'Error: '..ini'.</title> </head> <body> <h2>Mengupload File. dan Teknik PHP Lainnya 116 .$nama_file.</h2> <?php // $userfile merupakan tempat file di server $userfile = $_FILES['userfile']['tmp_name']. case 4: echo 'Tidak ada file yang diupload'.. case 2: echo 'Ukuran file melebihi max_file_size'. break. Lalu ketik kode berikut. // $nama_file merupakan nama file asli $nama_file = $_FILES['userfile']['name']. // keluar dari rutin script } // cek tipe dari file jika bukan text biasa keluar if ($tipe_file != 'text/plain') exit('Error: Tipe file bukan text biasa'). // $ukuran_file merupakan ukurang file dalam bytes $ukuran_file = $_FILES['userfile']['size']. break.6: output file upload. // $tipe_file merupakan tipe dari file seperti text/plain $tipe_file = $_FILES['userfile']['type']. $letak_file = 'temp/'.. // tentukan error dengan switch switch ($file_error) { case 1: echo 'Ukuran file melebihi upload_max_filesize di php. } else Bab 2 . <html> <head> <title>Meng-upload. case 3: echo 'Hanya sebagian file yang terupload'.

html kita membuat input dengan type file.4 Daftar kode error dan konstantanya Kode 0 1 2 3 4 Konstanta UPLOAD_ERR_OK UPLOAD_ERR_INI_SIZE UPLOAD_ERR_FORM_SIZE UPLOAD_ERR_PARTIAL UPLOAD_ERR_NO_FILE Keterangan File berhasil diupload dan tidak ada error.'. // tutup direktori closedir($baca_dir).3 Daftar string penghandel informasi Kunci Keterangan tmp_name Nama sementara di sistem server. error Kode error saat proses upload. // cek apakah file sudah terupload if (is_uploaded_file($userfile)) { if (!move_uploaded_file($userfile. Untuk text biasa MIME-nya text/plain untuk file JPEG MIME-nya image/jpeg. Tabel 2. echo 'Lihat folder <a href="temp/">temp/</a>. $_FILES['userfile']['tmp_name'] dalam hal ini tmp_name merupakan string yang digunakan script untuk menghandel informasi dari data yang diupload. else { // Jika tidak ada kesalahan maka tampilkan pesan berhasil echo 'File berhasil di upload<br><br>'. PHP akan menghapusnya setelah request selesai. OOP. Input tipe ini tidak akan nampak dilayar. Nah. Kebanyakan script yang ada pada file upload. ini bagian yang menarik. Tidak ada file yang diupload karena user tidak memilih file. name Nama file asli pada sistem user yang ia upload ke server.Teknik PHP Lainnya $letak_file = 'temp/'.ini. Pada input hidden ini kita membuat data dengan nama MAX_FILE_SIZE yang isininya 1000000. Untuk itu kita harus menentukan tipe dari error tersebut. Lihat tabel 2. Ukuran file melebihi nilai yang ditetapkan di konfigurasi php. size Ukuran file yang diupload dalam bytes. dan Teknik PHP Lainnya 117 . Jadi dalam kb berarti 1000 kb dan dalam MB berarti 1 MB. PENJELASAN SCRIPT Pada file upload. } } ?> </body> </html> Simpan dengan nama upload. Nama dari data ini adalah userfile. Kita juga membuat input dengan tipe hidden.Fungsi. $letak_file)) exit('Error: Tidak dapat mengupload file ke direktori tersebut').php. Bab 2 . Data ini yang digunakan untuk menentukan ukurang maksimal file yang dapat diupload dalam bytes.3 Tabel 2. Ukuran file melebihi yang ditentukan pada MAX_FILE_SIZE File berhasil diupload namun hanya sebagian saja. Daftar lengkap dapat anda lihat pada tabel 2. type Tipe dari MIME file yang diupload.$nama_file.4 untuk lebih lengkapnya.php adalah untuk menangani suatu kesalahan atau error.

PENERAPAN TEORI MEMBACA DIREKTORI Jalankan PHP DESIGNER 2005 buat file PHP baru dengan mengklik File-New-PHP. PHP memiliki beberapa fungsi untuk memanipulasi direktori. membaca dan menghapus direktori. Untuk yang pertama kita akan membahas dirketori terlebih dahulu. Jadi tanda ! sebelum fungsi tersebut menandakan jika ada suatu kesalahan maka exit akan dijalankan. $letak_file). Hal yang sama juga akan kita bahas mengenai file. Sedangkan 0777 pada parameter kedua adalah permission dari direktori tersebut yang artinya dapat ditulis. Masa if terus kan bosen?!. Kita gunakan statamen case untuk menghandel setiap nilai dari error mulai dari 1 hingga 4. Untuk itu kita gunakan statemen if(!$baca_dir) untuk menangani error tersebut. Jika tidak ada error pada opendir() berarti temp/ sudah ada.$nama_file. Jangan lupa akhir dari suatu statemen case harus diberi break. lalu ketik kode berikut ini <?php Membaca Direktori Bab 2 . Direktori Setelah user berhasil mengupload file kita juga dapat menggunakan PHP untuk membaca file yang telah diupload. Fungsi opendir(‘temp/’) maksudnya adalah membuka direktori temp.Teknik PHP Lainnya Jadi variabel $file_error isinya adalah untuk mengembalikan nilai error saat proses upload berlangsung. OOP. switch ($file_error) artinya yang akan kita handel adalah nilai dari $file_error. Untuk membaca suatu direktori kita dapat gunakan fungsi readdir(). Dimana isinya adalah ‘temp/’. Untuk lebih memperjelas kita akan mempraktekkannya saja. Jadi kita tidak perlu membuatnya dengan mkdir. Kita gunakan statemen if ($file_error > 0). Dengan menggunakan fungsi move_uploaded_($userfile. if (is_uploaded_file($userfile)) Statemen if diatas mengecek apakah file sudah terupload. @$baca_dir = opendir('temp/'). Kita cukup menentukan letak file yang akan diupload yaitu pada variabel $letak_file. Maksud dari tanda @ adalah jika nanti ada kesalahan kita dapat menghandel error tersebut. dan Teknik PHP Lainnya 118 . Jika sudah selesai kita dapat menutup direktori tersebut dengan menggunakan perintah closedir(). Karena jika nilai error = 0 maka tidak ada error. Maka buat direktori temp/ menggunakan fungsi mkdir(‘temp/’. Langkah yang terakhir adalah mengecek apakah file upload kita sudah sampai tujuan dengan aman. Karena pada kali pertama temp belum ada maka kita akan menangani error ini. Jika ada error artinya tidak dapat membuka temp/ karena memang belum ada. Lalu kita akan memindahkan file itu sesuai dengan keinginan kita. Namun jika anda lebih suka menggunakan statemen if silakan rubah kode diatas. Sebagai alternatif kita gunakan switch bukan if. Kayak bepergian saja. 0777).. Direktori dan File Pada bahasan kali ini kita akan mengupas bagaimana membuat.. Kita tahu untuk penggunaan pertama kali folder temp belum ada. Selain itu berarti berhasil dan blok kode else yang dijalankan. Namun kita harus membuka direktori tersebut terlebih dulu dengan perintah opendir(). Parameter pertama merupakan nama direktori yang akan dibuat.Fungsi.!.

$mydir = 'temp/'. Bab 2 .<a href=\"$mydir$file\">Lihat Isi</a><br>". Jadi pada blok kode while kita menampilkan nama file dengan cara echo "$file -.<a href=\"$mydir$file\">Lihat Isi</a><br>". PENJELASAN SCRIPT Pertama kita membuat variabel $mydir yang isinya string nama direktori upload kita yaitu temp.7 Gambar 2. Untuk daftar dari file yang ada pada folder temp.php. } echo '<br><hr><br>'. Output dari kode diatas akan terlihat seperti gambar 2."Daftar file di direktori <br><hr><br>". OOP.Teknik PHP Lainnya echo '<h2>Membaca isi dari Direktori</h2>'.7 output file bacadir. Setelah itu kita membuat variabel $dir yang berisi fungsi untuk membuka direktori temp yaitu opendir(‘$mydir’). closedir($dir). ?> Simpan dengan nama bacadir. Kita gunakan looping while seperti berikut while ($file = readdir($dir)) Pada looping diatas kita membuat variabel $file yang isinya adalah fungsi untuk membaca isi dari direktori yaitu readdir().php Catatan: Hasil yang ditampilkan pada komputer anda mungkin berbeda tergantung dari isi dari folder temp dan file yang anda upload. while ($file = readdir($dir)) { echo "$file -.Fungsi. $dir = opendir($mydir). dan Teknik PHP Lainnya 119 . echo "Direktori upload adalah di $mydir<br>" . Karena dalam konteks looping maka perintah $file = readdir($dir) akan diulang sebanyak file yang ada pada direktori tersebut. Nilai yang akan dikembalikan dari variabel $file adalah nama file.

[integer waktu akses] Jika nama file yang akan anda buat sudah ada. [integer waktu pembuatan]. Kita juga dapat memanipulasi file didalamnya. Maka waktu pembuatan akan diuabah sesuai dengan waktu anda membuat file tersebut. Untuk keperluan ini kita dapat menggunakan fungsi unlink().html ke direktori temp. Untuk meng-copy file kita dapat menggunakan fungsi copy(). Atau jika anda ingin menuliskan waktu pembuatan yang baru maka waktu itulah yang digunakan. Struktur dasar penggunaan fungsi touch() adalah touch(string nama file. Dan yang terakhir kita tutup direktori dengan menggunakan perintah closedir($dir). meng-copy. Fungsi ini hanya membutuhkan satu paramater yaitu file yang akan dihapus.html. Fungsi ini memiliki dua parameter yaitu file asal dan file tujuan. me-rename dan menghapus file Untuk yang pertama yaitu membuat file kita dapat menggunakan fungsi touch().Teknik PHP Lainnya Karena isi kita menggunakan tanda petik " " sebagai string. Contohnya rename(‘gambarku. Sama dengan copy() fungsi ini juga membutuhkan dua parameter yaitu nama file lama dan nama file baru. Contoh diatas mengilustrasikan kita akan meng-copy file upload. File Setelah kita dapat masuk dan melihat isi direktori. Seperti membuat. unlink(‘password. Membuat. Fungsi ini memiliki tiga parameter namun yang wajib diisi hanya satu. Maka jika ingin menampilkan tanda string dalam tampilan kita gunakan escaping character yaitu \".jpg’). dan Teknik PHP Lainnya 120 . Namun dengan asumsi script yang kita jalankan untuk kode diatas letaknya sama dengan file asal yaitu upload.Fungsi. Bab 2 .html'. Lihat contoh berikut $file_asal = 'upload. Fungsi file yang terkakhir adalah menghapus file. ‘gambar_dia. $file_tujuan). Kita akan bahas ketiganya sesaat lagi.txt’). Untuk mengubah nama file PHP menyediakan fungsi rename. karena PHP tidak menyediakan fungsi untuk memindahkan file (move).jpg’. OOP. mengganti nama dan menghapus file. Anda dapat menggunakan rename untuk keperluan tersebut.html'. copy($file_asal. $file_tujuan = 'temp/upload.

dan Teknik PHP Lainnya 121 .Bab 2 .Fungsi. OOP.

5 Daftar file proyek Java Online News Direktori Proyek-Bab2\template Nama File myskin. Pada proyek ini kita akan coba membuat surat kabar online sederhana. yaitu folder admin.php berita_lainnya.php iklan. kemampuan anda sekarang sudah banyak berkembang rupanya.. Proyek pada bab 2 ini merupakan proyek terkakhir kita menggunakan media file.Proyek Aplikasi Bab 2 Hari Ke-10 Proyek Aplikasi Bab 2 – Java Online News Wah.. OOP.php Fungsi Untuk menyimpan format tampilan website Untuk menyimpan class skin Untuk menyimpan variabel-variabel tampilan Untuk mengembalikan ke halaman utama Direktori Proyek-Bab2\admin Nama File index. Fitur-fitur yang terdapat pada Java Online News antara lain: Berita Utama Fasilitas Iklan Pembatasan iklan Admin Login Penghapusan berita Penambahan berita Menggunakan Skin/template Ikuti langkah-langkah berikut sebelum kita memulai proyek bab 2 ini: Buat folder baru pada direktori C:\Apache2\htdocs\webmaster\Bab2\ Namai folder baru tersebut hari-10 Masuk pada direktori C:\Apache2\htdocs\webmaster\Bab2\hari-10\ Buat folder baru.php var_tampilan.Fungsi. dan Teknik PHP Lainnya 122 . berita dan template Daftar file yang kita buat untuk membangun website Java Online News ditunjukkan oleh tabel 2.php Fungsi Untuk Untuk Untuk Untuk Untuk menampilkan form login dan menu utama mengedit berita utama(menambah dan menghapus) mengedit berita lainnya menghapus iklan menyimpan kumpulan fungsi Direktori Proyek-Bab2\berita Bab 2 .php template. Pada bab-bab selanjutnya kita akan menggunakan database(MySQL) sebagai media penyimpanan. namai folder tersebut Proyek-Bab2 Masuk pada direktori C:\Apache\htdocs\webmaster\Bab2\hari-10\Proyek-Bab2\ Buat beberapa folder baru. Surat kabar ini kita beri nama Java Online News.php index.php fungsi. Tabel 2. Apa yang kita dapat pada bab 2 akan kita terapkan disini.php berita_utama. Maka dari itu proyek kita juga akan mengikuti kemampuan anda..5.

php. // jika benar maka true else return false. return true. OOP.php <?php //fungsi untuk login function login($name.txt iklan.php Fungsi Untuk menampilkan halaman utama Untuk menampilkan form pasang iklan Tabel 2.txt Isi iklan#-#link Iklan OK.php Fungsi Untuk menyimpan berita utama Untuk menyimpan berita lainnya Untuk menyimpan iklan Untuk mengembalikan ke halaman utama Direktori Proyek-Bab2 Nama File index. } } // fungsi untuk mengecek session function cek_session() { if (isset($_SESSION['login'])) return true. } else { return false. $pass) { if ($name == 'admin' && $pass == 'pas123') return true. // session login terisi else return false. Buat file baru pada PHP DESIGNER 2005 dengan mengklik File-New-PHP lalu ketik kode berikut Script dari file fungsi.txt tanggal berita#-#Judul Berita#-#Isi berita berita_lainnya. File pertama yang akan kita buat adalah file fungsi. // session login kosong } ?> Bab 2 .txt Nomor Berita#-#Link Berita#-#Judul Berita iklan.txt index. session_destroy().txt berita_lainnya.Proyek Aplikasi Bab 2 Nama File berita_utama. login dan mengecek session.Fungsi.php pasangiklan. // jika salah maka false } // fungsi untuk logout function logout() { if (isset($_SESSION['login')) { unset($_SESSION['login']). File ini nantinya akan menyimpan fungsi-fungsi seperti session untuk administrator.6 Daftar format penyimpanan file Nama File Format berita_utama. dan Teknik PHP Lainnya 123 .

php">Back to Java Online News</a></p>'. Untuk membuatnya klik File-New-PHP pada PHP DESIGNER 2005 lalu ketik kode dibawah ini Script dari file index.php require('fungsi.Proyek Aplikasi Bab 2 Simpan pada direktori Proyek-Bab2\admin\ dengan nama fungsi./index.php untuk administrator. Fungsi ini sangat sederhana.php\">Edit berita lainnya</a><br>" Bab 2 . File ini terletak pada direktori admin. Pada fungsi ini kita hanya mengecek apakah session login telah terisi jika ya kembalikan nilai true selain itu false. Semuanya yang menghandel adalah file ini.php <?php session_start(). Fungsi yang kedua yaitu logout(). Kita membutuhkan dua paramter yaitu parameter untuk username dan untuk password.. if ($proses == '') $proses = 'cek_login'. Kali ini file yang akan kita buat adalah index. Pada fungsi ini kita mengecek kondisi dari $_SESSION[‘login’] jika sudah terisi maka hapus dan hancurkan session dengan session_destoroy().'<form>' .'<form action="index. } else { echo "<h2>Welcome To Admin Area of Java Online News</h2>" . Login First</b>" . Namun jika $_SESSION[‘login’] belum terisi maka kembalikan nilai false Fungsi yang terakhir adalah fungsi cek_session(). OOP."<a href=\"berita_utama.php."<a href=\"berita_lainnya. menu utama dan logout. Contoh jika isi proses sama dengan logout maka yang dieksekusi adalah blok logout.."andainginkan</p>" . switch ($proses) { // blok kode untuk proses = cek_login case 'cek_login': // titik dua bukan titik koma // cek apakah sesion login terisi if (!cek_session()) { echo "<b>Please.'password: <input type="password" name="password"><br>' .'<input type="submit" value="Login">' . // panggil file fungsi.php'). Untuk itu kita membuat variabel pada URL dengan nama proses. // daftarkan variabel dari URL $proses = $_GET['proses']. Jika paramater yang diisikan user untuk username sama dengan admin dan password sama dengan pas123 maka kembalikan nilai true selain itu kembalikan nilai false. File ini merupakan file multifungsi karena menyediakan interface.'username: <input type="text" name="username"><br>' . dan Teknik PHP Lainnya 124 .php\">Edit berita utama</a><br>" ."<p>Silahkan klik link dibawah ini untuk melakukan operasi yang " . PENJELASAN SCRIPT Pada fungsi yang pertama yaitu login(). Diantaranya untuk login.Fungsi. Fungsi ini berguna untuk memblok user yang belum login agar tidak bisa mengakses file-file administrator.'<p><a href=".php?proses=proses_login" method="post">' .

else { $_SESSION['login'] = $username. Jika proses kosong atau pada URL tidak ada maka tetapkan isi dari $proses sama dengan cek_login. Untuk mengaksesnya anda dapat mengarahkan browser anda ke alamat http://localhost/webmaster/Bab2/hari-10/Proyek-Bab2/admin/. // akhir dari proses cek_login // blok kode untuk proses = proses_login case 'proses_login': $username = $_POST['username'].php\">Login Lagi</a>". Kita akan memproses data dari form login.9.8 dan 2. maka pada awal script kita panggil fungsi session_start(). $password)) echo "username atau password salah. Selanjutnya kita memanggil file fungsi. echo "Anda berhasil login. Pada kasus yang kedua yaitu proses_login.Fungsi. // akhir dari proses logout } ?> Simpan pada direktori admin dengan nama index. Untuk itu kita buat variabel $username dan $password dari yang isinya masing-masing adalah data username dan password dari form login. <a href=\"index.php\">Admin Menu</a>". $password)) untuk mengecek nilai yang dikembalikan oleh oleh fungsi."<a href=\"iklan. Pada kode diatas jika nilainya false maka pesan yang ditampilkan adalah username atau password salah. Lihat gambar 2. Lalu kita buat variabel $proses yang isinya adalah data dari proses yang ada pada URL misalnya index. <a href=\"index. Kita menggunakan fungsi cek_session() untuk mengecek apakah admin sudah login atau tidak. Kita gunakan fungsi if (!login($username. } break.php.php\">Login</a>". Untuk menghandel setiap nilai dari $proses kita gunakan statemen case nama_proses:.php\">Login</a> dulu". Akhir dari suatu statemen case harus ditandai dengan statemen break. // akhir dari proses proses_login case 'logout': if (!logout()) echo "Tidak bisa logout. Jadi jika nilai yang dihasilkan false maka munculkan form login. Pada kasus yang pertama yaitu cek_login. PENJELASAN SCRIPT Karena pada file ini kita menggunakan session. <a href=\"index. Sebaliknya jika true maka menu utama admin area akan ditampilkan. Bab 2 .Proyek Aplikasi Bab 2 . break. <a href=\"index. } break.php\">Edit iklan</a><br>" .php?proses=xxx. $password = $_POST['password']. OOP. Ingat tanda ! artinya jika ada kesalahan atau fungsi mengembalikan nilai false. dan Teknik PHP Lainnya 125 .php dengan require(). Karena if terlalu banyak kita gunakan dia kan capek?!?."<a href=\"index. else echo "Anda telah logout dari sistem. Untuk menangani setiap kondisi dari $proses kita gunakan statemen switch bukan if. Selain itu munculkan menu utama admin area. if (!cek_session()).php?proses=logout\">Logout</a>". // panggil fungsi login if (!login($username.

menghapus berita dan menambah berita.8: user yang telah login. require('fungsi. Pada fungsi !login() maka jika belum ada yang login tampilkan Tidak bisa logout. Buka PHP DESIGNER 2005 klik menu File-New-PHP untuk membuat file PHP baru. Gambar 2.9: user yang belum login. Sama seperti sebelum-sebelumnya kita mengecek dulu apakah ada user yang telah login.Proyek Aplikasi Bab 2 Kasus yang terakhir adalah logout. File berikutnya yang akan kita buat adalah berita_utama. Selain itu hancurkan session login dan pesan tampilkan user telah logout dari sistem. Oleh karena itu pada URL kita membuat data yaitu proses.php').Fungsi.php file ini juga memiliki beberapa fungsi yaitu untuk menampilkan judul dari berita utama. OOP. Seperti file sebelumnya yaitu index.php. Gambar 2. dan Teknik PHP Lainnya . Ketik kode berikut ini Script dari file berita_utama. 126 Bab 2 .php <?php // mulai session session_start().

$jml_utama = count($berita_utama). } fclose($file_baru).php?proses=tambah">Tambah berita</a> ' .'<input type="hidden" name="judul" value="'.'<td>Judul</td>' .'<a href="berita_utama. $berita_hapus = file('.'<tr>' .php?proses=lihat">Lihat Berita</a> ' Bab 2 . // tulis kembali berita yang judulnya bukan judul yang dihapus if ($bagian[1] != $judul) fwrite($file_baru.'<a href="index. break.'Isi: <br><textarea name="isi" rows="8" cols="75"></textarea><br>' . $berita_utama = file('. OOP. $data.'<td>Tanggal</td>' .$bagian[0]. } echo '<a href="berita_utama./berita/berita_utama./berita/berita_utama.$bagian[1].'</form>'.Proyek Aplikasi Bab 2 $proses = $_GET['proses'].'Lihat</a>'. switch ($proses) { case 'lihat': echo '<h2>Daftar berita utama</h2><hr>'.php">Halaman utama</a>'. <a href=\"index."\n"). if ($proses == '') $proses = 'lihat'. // looping untuk menampilkan daftar berita for ($i=0. echo '<form action="berita_utama. // jika belum login exit if (!cek_session()) exit("Anda belum login. dan Teknik PHP Lainnya 127 .'<tr>' .'<form action="berita_utama.txt').$bagian[1]. 'w+').'Tanggal: <br><input type="text" name="tgl"><br>' . echo 'Berita telah terhapus <a href="berita_utama.txt'. $data).. $berita_utama[$i]). $i<$jml_utama.'<td><input type="submit" value="HAPUS"></td></tr>' .'<input type="submit" value="TAMBAH">' .")..php\">Login</a> dulu. $i++) { $bagian = explode("#-#". $data).'Judul: <br><input type="text" name="judul" size="50"><br>' .'</td></tr>' .'">' . // akhir dari proses hapus case 'tambah': echo '<h2>Tambah berita utama</h2>' . // akhir dari proses lihat case 'hapus': $judul = $_POST['judul']..'<td>'. $file_baru = fopen('. "".php?proses=proses_tambah" method="POST">' .'<table border="0">' .php?proses=lihat"> ' .txt').'<td>'. break.'</td></tr>' . $bagian = explode("#-#". foreach ($berita_hapus as $data) { $data = str_replace("\n".php?proses=hapus" method="post">' .'</table>' .Fungsi.'</form>' .'<tr>' ./berita/berita_utama.

Kita masukkan setiap elemen array $berita_hapus ke variabel $data. "".$judul. $isi = $_POST['isi']. Lalu kita membuka file berita_utama. Logika kerja yang kita gunakan adalah kita akan menulis kembali berita yang judulnya bukan merupakan judul berita yang ingin dihapus. // menghilangkan karakter kosong @$file_utama = fopen('.txt'. Lihat gambar 2. else { $berita = $tgl."\n".php?proses=lihat"> ' .txt yang tidak lain adalah berita utama. // akhir dari proses proses_tambah } ?> Simpan dengan nama berita_utama. OOP. fwrite($file_utama. Sehingga nantinya kita bisa melakukan perbandingan judul berita yang dihapus dengan yang tidak. $judul = $_POST['judul']./berita/berita_utama.Pada setiap judul berita kita berikan tombol submit untuk mempost berita mana yang akan dihapus.php. <a href="berita_utama. $berita). $isi).txt dan menjadikannya array ke variabel $berita_hapus menggunakan fungsi file(). if (!$file_utama) echo "Tidak dapat membuka file". } echo 'Berita berhasil ditambah.Proyek Aplikasi Bab 2 . 'a'). // tulis data ke file berita_utama.'#-#'. Maka yang merupakan array judul adalah $bagian[1].'Lihat</a>'. // akhir dari proses tambah case 'proses_tambah': $tgl = $_POST['tgl'].. // jika ada field yang kosong maka keluar if (empty($tgl) || empty($judul) || empty($isi)) exit('Error: ada field yang masih kosong'). fclose($file_utama)."#-#". Lalu kita gunakan looping foreach untuk untuk mengidentifikasi setiap elemen array. Jadi $data merupakan setiap baris dari file berita_utama. break. Dan hasilnya kita masukkan pada variabel $file_baru.Fungsi.php">Halaman utama</a>'. dan Teknik PHP Lainnya 128 . Kita buka kembali file tersebut tapi menggunakan metode yang berbeda yaitu fopen. Seperti biasa kita gunakan fungsi explode() untuk memecah setiap bagian lalu kita masukkan hasilnya pada variabel $bagian. Pertama kita membuat variabel $judul yang isinya adalah judul berita utama yang dihapus.$isi.10 untuk memperjelas gambaran anda tentang proses lihat. Agar pada saat menulis ulang tidak terjadi baris baru maka kita hilangkan dulu karakter baris (\n) dengan menggunakan str_replace(). $isi). break. PENJELASAN SCRIPT Tujuan dari proses lihat adalah untuk menampilkan judul berita utama yang ada. Proses ini adalah proses yang dijalankan apabila isi proses kosong atau tidak ada data proses pada URL berita_utama. Coba jalankan lalu tambahkan beberapa berita baru. Selanjutnya kita akan memecah setiap bagian dari berita utama untuk mendapatkan judul berita. "<br>". Untuk itu kita gunakan statemen if ($bagian[1] Bab 2 . Pada kasus yang kedua yaitu proses hapus kita menerapkan metode yang cukup unik.'<a href="index.php letakkan pada direktori Proyek-Bab2\admin. $isi = str_replace("\r".txt $isi = str_replace("\n".

txt lalu memberitahukan pada user kalau proses penambahan berita telah selesai. Seperti biasa kita membuka dulu file yang akan kita gunakan untuk Bab 2 .txt menggunakan fopen(). Seperti yang pernah disebutkan sebelum kita memulai proyek ini. Langkah terakhir adalah kita menulis file berita_utama. Lihat gambar 2.php?proses=lihat Pada kasus proses tambah tidak ada yang istimewa. OOP. Seperti biasa kita membuka dulu file yang akan kita gunakan untuk menyimpan data.Fungsi. Langkah terakhir adalah kita menulis file berita_utama. Jadi data yang kita tulis otomatis akan berada pada baris terakhir karena ditambah. Tujuan proses ini hanyalah untuk menampilkan form untuk menambah berita. Bahwa format yang kita gunakan adalah tanggal#judul#isi berita. Mode file yang kita gunakan adalah a (append). Lalu kita tulis kembali setiap berita dengan menggunakan fwrite() dan menambahkan karakter baris baru (\n) pada setiap berita. Maka kita harus gunakan format tersebut agar valid dengan apa yang ada pada file var_tampilan. Seperti yang pernah disebutkan sebelum kita memulai proyek ini.php. Bahwa format yang kita gunakan adalah tanggal#-#judul#-#isi berita.txt lalu memberitahukan pada user kalau proses penambahan berita telah selesai. Pada kasus yang terakhir yaitu proses_tambah mengambil data dari form tambah yang telah di-submit sebelumnya. Pada kasus yang terakhir yaitu proses_tambah mengambil data dari form tambah yang telah di-submit sebelumnya.php. Mode file yang kita gunakan adalah a (append).10: output file berita_utama. Maka kita harus gunakan format tersebut agar valid dengan apa yang ada pada file var_tampilan. dan Teknik PHP Lainnya 129 . Dalam hal ini kita membuka file berita_utama.txt menggunakan fopen().Proyek Aplikasi Bab 2 != $judul). Disini disediakan textbox untuk tanggal dan judul sedangkan untuk isi berita disediakan textarea. Dalam hal ini kita membuka file berita_utama. Pada kasus yang terakhir yaitu proses_tambah mengambil data dari form tambah yang telah di-submit sebelumnya.11. Jadi data yang kita tulis otomatis akan berada pada baris terakhir karena ditambah. Seperti biasa kita membuka dulu file yang akan kita gunakan untuk menyimpan data. Gambar 2.

txt menggunakan fopen(). Dalam hal ini kita membuka file berita_utama. Seperti biasa kita membuka dulu file yang akan kita gunakan untuk menyimpan data. Seperti yang pernah disebutkan sebelum kita memulai proyek ini. Dalam hal ini kita membuka file berita_utama. Bahwa format yang kita gunakan adalah tanggal#-#judul#-#isi berita. Maka kita harus gunakan format tersebut agar valid dengan apa yang ada pada file var_tampilan. Mode file yang kita gunakan adalah a (append).txt lalu memberitahukan pada user kalau proses penambahan berita telah selesai. Pada kasus yang terakhir yaitu proses_tambah mengambil data dari form tambah yang telah di-submit sebelumnya. Gambar 2.php. Seperti yang pernah disebutkan sebelum kita memulai proyek ini.php.txt lalu memberitahukan pada user kalau proses penambahan berita telah selesai.txt menggunakan fopen(). Bahwa format yang kita gunakan adalah tanggal#-#judul#-#isi berita.php.11: output file berita_utama. Maka kita harus gunakan format tersebut agar valid dengan apa yang ada pada file var_tampilan.Proyek Aplikasi Bab 2 menyimpan data. Jadi data yang kita tulis otomatis akan berada pada baris terakhir karena ditambah. Jadi data yang kita tulis otomatis akan berada pada baris terakhir karena ditambah. OOP. Langkah terakhir adalah kita Bab 2 .txt menggunakan fopen(). Mode file yang kita gunakan adalah a (append). dan Teknik PHP Lainnya 130 . Langkah terakhir adalah kita menulis file berita_utama. Mode file yang kita gunakan adalah a (append). Langkah terakhir adalah kita menulis file berita_utama. Maka kita harus gunakan format tersebut agar valid dengan apa yang ada pada file var_tampilan.Fungsi. Seperti yang pernah disebutkan sebelum kita memulai proyek ini. Bahwa format yang kita gunakan adalah tanggal#-#judul#-#isi berita. Dalam hal ini kita membuka file berita_utama. Jadi data yang kita tulis otomatis akan berada pada baris terakhir karena ditambah. Seperti biasa kita membuka dulu file yang akan kita gunakan untuk menyimpan data.php?proses=tambah Pada kasus yang terakhir yaitu proses_tambah mengambil data dari form tambah yang telah di-submit sebelumnya.

'<li>'.txt lalu memberitahukan pada user kalau proses penambahan berita telah selesai. Pada kasus yang terakhir yaitu proses_tambah mengambil data dari form tambah yang telah di-submit sebelumnya.txt kita letakkan pada direktori berita. $berita_hapus = file('. $jml_lainnya = count($file_lainnya).'<a href="index.'<a href="berita_lainnya. $file_baru = fopen('.. Bahwa format yang kita gunakan adalah tanggal#-#judul#-#isi berita. $i++) { $bagian = explode("#-#".'">' .$bagian[0].'<input type="submit" value="HAPUS"></li>' .'</form>'. dan Teknik PHP Lainnya . $file_lainnya[$i])../berita/berita_lainnya. switch($proses) { case 'lihat'. $i<$jml_lainnya.php?proses=tambah">Tambah berita</a>' . <?php // mulai session session_start().txt. Maka kita harus gunakan format tersebut agar valid dengan apa yang ada pada file var_tampilan.')./berita/berita_lainnya. Dalam hal ini kita membuka file berita_utama. File berita_lainnya.' . Langkah terakhir adalah kita menulis file berita_utama. OOP.php">Login</a> dulu. // jika belum login exit if (!cek_session()) exit('Anda belum login.Fungsi.txt lalu memberitahukan pada user kalau proses penambahan berita telah selesai./berita/berita_lainnya.'<ul>'. for ($i=0. require('fungsi. Yang menyimpan data berita lainnya adalah file berita_lainnya. Seperti biasa kita membuka dulu file yang akan kita gunakan untuk menyimpan data.php. echo '<form action="berita_lainnya.' --.Proyek Aplikasi Bab 2 menulis file berita_utama.$bagian[1]. $file_lainnya = file('. // akhir dari proses lihat case 'hapus': $id = $_POST['id']. echo '<h2>Daftar link berita lainnya</h2>' . 'w+'). if ($proses == '') $proses = 'lihat'. } echo '</ul>' .php">Halaman utama</a>'.php?proses=hapus" method="post">' ..php. Script dari file berita_lainnya. Seperti yang pernah disebutkan sebelum kita memulai proyek ini.php'). Buka PHP DESIGNER 2005 buat file baru lalu ketik kode berikut ini. Mode file yang kita gunakan adalah a (append). Jadi data yang kita tulis otomatis akan berada pada baris terakhir karena ditambah. break.txt').txt menggunakan fopen(). Berikutnya kita akan membuat file untuk menambah dan menghapus berita lainnya. <a href="index.txt'.txt'). foreach ($berita_hapus as $data) { 131 Bab 2 . $proses = $_GET['proses'].'<input type="hidden" name="id" value="'.

echo 'Berita berhasil dihapus. 'a'). Hanya ada sedikit perbedaan pada kasus hapus dan proses_tambah. if (empty($nama_berita)) exit('Anda belum mengisi nama_berita'). } fclose($file_baru).. Pada proses proses_tambah ada bagian yang menarik yaitu saat kita ingin menambah nomor berita setiap file itu ditulis. $data). $file_cek = file('. break. Sekarang coba anda jalankan file ini lalu tambahkanlah beberapa berita.php?proses=proses_tambah" method="POST">' . <a href="berita_lainnya.'</form>' . echo $bagian[0]."\n". $id_akhir).'<a href="index.txt @$file_lainnya = fopen('.$nama_berita.'</a>'. $isi_file).php">Halaman utama</a>'.'Lihat</a>'. break. Jika pada hapus sebelumnya yang kita jadikan perbedaan adalah judul berita maka kali ini yang kita gunakan adalah nomor berita tersebut. //akhir dari proses tambah case 'proses_tambah': $nama_berita = $_POST['nama_berita'].Proyek Aplikasi Bab 2 $data = str_replace("\n". if (!$file_lainnya) exit('Tidak dapat membuka file').'<input type="submit" value="TAMBAH"><br>' . $data.'Nama berita: <br><input type="text" name="nama_berita" size="50"><br>' . echo 'Berita berhasil ditambah. Nama berita terserah anda karena hanya bersifat testing saja. // buka file berita_lainnya.'<a href="berita_lainnya.'<form action="berita_lainnya. "".'#-#<a href="#">'. fclose($file_lainnya).'Lihat</a>'. fwrite($file_lainnya. else { $isi_file = $id.txt..txt'./berita/berita_lainnya. Kita post data ini menggunakan nama id yang input typenya hidden. } } ?> Simpan dengan nama berita_lainnya.Fungsi. dan Teknik PHP Lainnya 132 . // buat $id yang berisi nomor id array terakhir + 1 $id = $bagian[0] + 1. Pada kasus diatas kita menggunakan variabel $file_cek untuk Bab 2 . // tulis kembali berita yang nomornya bukan nomor yang dihapus if ($bagian[0] != $id) fwrite($file_baru.php?proses=lihat">Daftar berita</a>' . $bagian = explode("#-#".php sama dengan file berita_utama. $bagian = explode("#-#".php?proses=lihat"> ' ."\n"). OOP./berita/berita_lainnya.txt'). PENJELASAN SCRIPT Secara garis besar cara pemrosesan pada file berita_lainnya. // akhir dari proses hapus case 'tambah': echo '<h2>Tambah Daftar Link Berita</h2><hr>' . <a href="berita_lainnya.php?proses=lihat"> ' . // pindah ke elemen array paling akhir dengan end() $id_akhir = end($file_cek). $data).php letakkan pada direktori Proyek-Bab2\admin\.

$i<$jml_iklan.php <?php // mulai session session_start(). <a href="index./berita/iklan. Dalam hal ini nomor berita ada pada array $bagian[0].txt.Proyek Aplikasi Bab 2 menyimpan nilai dari array file berita_lainnya. File untuk administrator yang terakhir adalah iklan.php.php">Login</a> dulu')..txt nantinya akan kita simpan pada direktori berita. $proses = $_GET['proses']. switch ($proses) { case 'lihat': echo '<h2>Daftar Iklan</h2><hr>'. for ($i=0. Selanjutnya kita memecah setiap bagian dengan explode() untuk mendapatkan nomor berita. $i++) { Bab 2 . Lalu kita gunakan fungsi end() untuk memindahkah posisi array yang aktif ke elemen terakhir. Gambar 2.php'). Buka PHP DESIGNER 2005 buat file PHP baru kemudian ketik kode berikut: Script dari file iklan. $jml_iklan = count($iklan). OOP. Fungsi file ini untuk menampilkan dan menghapus iklan saja. require('fungsi. $iklan = file('.12: output file berita_lainnya saat proses lihat. Langkah selanjutnya adalah kita membuat variabel $id yang isinya adalah nilai dari nomor berita terakhir ditambah 1. Kita tidak menambahkan fasilitah tambah iklan pada admin area karena pengunjunglah yang akan mengisi ini.Fungsi. File iklan. if (!cek_session()) exit('Anda belum login. if ($proses == '') $proses = 'lihat'.txt'). dan Teknik PHP Lainnya 133 .

'<tr>' . $data).'</table>' .txt'. echo '<form action="iklan.'<td>'.Fungsi. $bagian = explode("#-#". Lalu ketik kode berikut ini. <a href="iklan. // akhir dari proses hapus } ?> Simpan pada direktori Proyek-Bab2\admin\ dengan nama iklan. PENJELASAN SCRIPT Tidak ada yang istimewa pada script ini. Disini pada proses hapus yang digunakan sebagai pembanding adalah judul dari berita.'<td>Link: </td>' . font-weight: bold} a{color: #7cb500} a:visited{color: #7cb500} </style> </head> <body> Bab 2 . Script dari file myskin. foreach ($iklan_hapus as $data) { $data = str_replace("\n". dan Teknik PHP Lainnya 134 . // akhir dari proses lihat case 'hapus': $judul = $_POST['judul'].php. font-size: 11px. $file_baru = fopen('. margin-right: 0} td{font-family: verdana. } fclose($file_baru).$bagian[0]. Masih sama seperti kedua file sebelumnya.'<tr>' .$bagian[0]. echo 'Iklan berhasil dihapus. // tulis kembali iklan yang isinya bukan iklan yang dihapus if ($bagian[0] != $judul) fwrite($file_baru. margin-left: 0. OOP. $iklan_hapus = file('. margin-top: 0.txt').'</form>'.'<input type="hidden" name="judul" value="'. $data)..php">Halaman utama</a>'./berita/iklan. $data. 'w'). } echo '<a href="index. Jalankan PHP DESIGNER 2005 buat file baru klik File-New-PHP.'<tr>' ./berita/iklan.php?proses=lihat">Lihat</a>'.'<td>'. "".Proyek Aplikasi Bab 2 $bagian = explode("#-#".'<td><input type="submit" value="HAPUS"></td></tr>' . border-collapse: collapse} .php?proses=hapus" method="post">' .putih{color: white."\n"). color: white} table{border-color: #cccccc. $iklan[$i]).php <html> <head> <title>JAVA ONLINE NEWS</title> <style> body{font-family: verdana.'<td>Isi Iklan: </td>' . font-size: 11px} h2{font-family: verdana.'</td></tr>' .$bagian[1].'</td></tr>' . break. break.'">' .'<table border="0">' ..

File template. Yang digunakan untuk mengganti tag dan skin.php.13. Berikutnya kita akan membuat file template. Buat file PHP baru kemudian ketik kode berikut.php saat dijalankan. Coba anda perhatikan output dari file ini yang ditunjukkan pada gambar 2.Proyek Aplikasi Bab 2 <table border="1" width="100%" cellpadding="4" bordercolor="#cccccc"> <tr bgcolor="#7cb500"> <td colspan="3" align="center" height="50"><h2>{JUDUL}</h2></td> </tr> <tr> <td colspan="2" align="right"><marquee scrollamount="4">{SLOGAN} </marquee></td> <td>{TODAY}</td> </tr> <tr bgcolor="#7cb500" height="25" class="putih"> <td width="25%">berita lainnya</td> <td width="50%">berita utama</td> <td width="25%">iklan</td> </tr> <tr> <td width="25%" valign="top">{LAINNYA}</td> <td width="50%" valign="top">{UTAMA}</td> <td width="25%" valign="top">{IKLAN}</td> </tr> <tr> <td colspan="3" align="center" height="25">{FOOTER}</td> </tr> </table> </body> </html> Simpan dengan nama myskin. ?> Simpan pada direktori Proyek-Bab2\template dengan nama index.php.php").php ini kita nantinya akan kita panggil Bab 2 .. Jika anda mencoba membuka direktori template dari URL maka anda akan dibawa kembali ke halaman utama. Gambar 2.Fungsi. Selanjutnya kita file yang akan kita buat kita gunakan untuk mengembalikan ke halaman utama jika ada yang mencoba masuk direktori template.13: tampilan myskin. OOP. dan Teknik PHP Lainnya 135 . Isi dari file ini merupakan class skin.php. letakkan di direktori Proyek-Bab1\template./index.php <?php // panggil fungsi header untuk mencetak HTML header // gunakan header location untuk membuka halaman header("Location: . Script dari file index.

foreach($this->tag as $str_dicari => $str_baru) { $this->halaman = ereg_replace($str_dicari.php"). function ganti_tag($namatag. Langsung saja. Script dari file index. Sama seperti sebelumnya tugas file ini hanya melakukan redirect halaman ke halaman utama.php letakkan file berikut pada direktori ProyekBab2\template. direktori file index. $this-> halaman). Bab 2 . buat file PHP baru pada PHP DESIGNER 2005. $str_baru. Script dari file template. dan Teknik PHP Lainnya 136 .Fungsi. File ini pernah kita buat pada bahasan OOP. Jika pada bahasan OOP kita menggunakan keyword private kali ini kita menggunakan var. public dan protected. Ketik kode berikut. } } ?> Simpan dengan nama template.php pada direktori berita kan belum ada?!?.Proyek Aplikasi Bab 2 dari file index. Pada PHP DESIGNER 2006 buat file PHP baru kemudian ketik script berikut.php.php dan letakkan pada direktori Proyek-Bab2\berita. } function ganti_skin($namafile) { $this->file_skin = $namafile. OOP. } echo $this->halaman.php <?php class { var var var skin $tag = array().php <?php // panggil fungsi header untuk mencetak HTML header // gunakan header location untuk membuka halaman header("Location: . $str_pengganti) { $this->tag[$namatag] = $str_pengganti.. Jadi kita akan membuatnya sekarang. Hampir lupa!. Namun ada sedikit perubahan yaitu pada deklarator properti. Hal ini kita gunakan untuk menjaga kompatibilitas dengan PHP versi 4 yang tidak mendukung keyword private. ?> Simpan dengan nama index. } function ganti_tampilan() { $this->halaman = file($this->file_skin). $this->halaman = implode(""./index. $halaman. $this->halaman). $file_skin.

txt $berita_utama = file('berita/berita_utama. Ini berguna untuk memudahkan kita dalam penggantian tampilan. Bab 2 .'. $isi_utama).6."</p>". 'Jumat'. 'Februari'. //dikurangi satu agar index awal 0 $tahun = date('Y'). $isi_utama = prev($berita_utama). $file_iklan = file('berita/iklan.$bagian[1]. 'Selasa'.php <?php // variabel-variabel berikut akan digunakan untuk mengganti {NAMATAG} $judul = "JAVA ONLINE NEWS". Langsung saja Jalankan PHP DESIGNER 2005 klik File-New-PHP lalu ketik kode berikut: Script dari var_tampilan. $tanggal = date('j'). OOP."<p>". 'Desember').' '.$bagian[2]. // mundur satu elemen } // tampilkan berita lainnya (hanya berupa link) $berita_lainnya = file('berita/berita_lainnya. // tampilkan iklan $iklan = '<p>Ingin pasang iklan <a href="pasangiklan.$bagian[1]. 'Rabu'.$tanggal. 'Mei'. $nama_hari = array('Minggu'. // mundur satu elemen } $lainnya .txt'). 'September'. while ($isi_lainnya) { $bagian = explode("#-#". $isi_lainnya = prev($berita_lainnya). $lainnya .Proyek Aplikasi Bab 2 Berikutnya kita akan membuat file var_tampilan."</b>" . 'Juli'. .= "</ul>". // tanggal sekarang 1-31 $hari = date('w'). // urutkan mulai dari elemen array yang terakhir $isi_utama = end($berita_utama).'GRATIS!. // buka file berita_utama.Fungsi. $bulan = date('n') . 'Juni'. $bulan_ini = $nama_bulan[$bulan]. 'Sabtu').= "<li><p>". $nama_bulan = array('Januari'. $lainnya = "<ul>". // kode hari 0=minggu."<br><b>".$tahun.php. 'Agustus'."</p></li>". $utama .txt').= $bagian[0].</p>'. dan Teknik PHP Lainnya 137 .txt'). 'Nopember'.". while($isi_utama) { $bagian = explode("#-#". '. // kita beri tanda bullet // urutkan mulai dari elemen array yang terakhir $isi_lainnya = end($berita_lainnya). File ini menyimpan variabel-variabel yang berisi tampilan yang kita gunakan untuk mengganti tag {X}.1.php">Klik disini</a> ' . $isi_lainnya). $slogan = "<< Koran Online Nomor Satu Di Indonesia . Maka format yang kita gunakan pada file-file kita nantinya adalah harus kita sesuaikan dengan format yang ada pada tabel 2. $today = $hari_ini. . Ketiga file tersebut menggunakan tanda #-# sebagai pemisah antar isi.$bulan_ini. 'Senin'. 1=senin dst. 'Oktober'. 'Maret'. 'Kamis'. 'April'.' '. Nama variabel kita sesuaikan dengan nama tag yang akan kita ganti. $hari_ini = $nama_hari[$hari]. Karena pada variabel ini kita akan membuka file berita dan menggunakan fungsi explode untuk mendapatkan isi berita.

$isi_utama = prev($berita_utama). ?> Simpan dengan nama var_tampilan."</p>".= agar isi dari variabel $utama sebelumnya tidak tertindih nilai dari $variabel berikutnya akibat adanya eksekusi berulang karena looping.Proyek Aplikasi Bab 2 // urutkan mulai dari elemen array yang terakhir $isi_iklan = end($file_iklan). $isi_utama). Yang perlu kita bahas disini adalah isi dari variabel $utama. karena pada blok looping maka. Untuk itu kita gunakan fungsi end($berita_utama) yang akan memindahkan posisi array yang aktif ke elemen yang paling akhir. Jika sudah sampai pada elemen array paling awal maka eksekusi akan dihentikan karena sudah tidak ada lagi elemen array. OOP.localhost'. kode blok pada looping dalam kasus ini while akan dieksekusi sebanyak jumlah elemen array yang tidak lain adalah banyaknya baris pada file. Jadi isi dari $isi_utama pada saat looping while adalah elemen array yang aktif mulai dari elemen array terakhir pada ekseskusi pertama. dan Teknik PHP Lainnya 138 . Untuk variabel $lainnya dan $iklan prinsip kerjanya sama.$bagian[1]. Hingga elemen array paling awal pada eksekusi terkakhir. Untuk itu kita gunakan perintah prev($berita_utama). //mundur satu elemen } Pada cuplikan kode diatas hal pertama yang kita lakukan adalah membuka file berita_utama. Dan yang terakhir kita set nilai dari $isi_utama agar berpindah pada elemen array sebelumnya atau mundur satu elemen. $iklan .txt.Fungsi."<br><b>". Jadi tidak perlu saya jelaskan ulang.txt dengan file(). Letakkan file berikut pada direktori ProyekBab2\template\. while($isi_utama) { $bagian = explode("#-#".php."<p>". Bab 2 .$bagian[2]. $isi_iklan). Karena berita baru yang kita tulis otomatis berada pada baris yang terakhir. //mulai dari elemen array yang terakhir $isi_utama = end($berita_utama). Karena prisip kerjanya sama dengan file yang pernah kita buat untuk materi tanggal dan waktu.$bagian[1].'<a target="_blank" href="'. Variabel $utama kita berikan tanda .= $bagian[0]. $utama . Jadi variabel $berita_utama merupakan array yang isinya adalah setiap baris dari file berita_utama. Jadi $bagian[0] merupakan tanggal berita. Selanjutnya pada blok kode while tersebut kita membuat variabel array $bagian yang isinya adalah pecahan dari setiap berita. $berita_utama = file('berita/berita_utama. $isi_iklan = prev($file_iklan). Ingat. Agar dapat kita gunakan pada looping while maka kita masukkan nilai dari fungsi end($berita_utama) pada variabel $isi_utama.txt'). Maka array $berita_utama kita urut mulai dari baris yang terakhir hingga baris pertama.'">Klik disini</a><p></p>'. Lihat cuplikan script berikut."</b>" .'<br>' . while($isi_iklan) { $bagian = explode("#-#".= $bagian[0]. Kita memecah setiap bagian yang dipisahkan tanda #-# dengan menggunakan fungsi explode(). PENJELASAN SCRIPT Untuk variabel $today tidak perlu saya jelaskan lagi. // mundur satu elemen } $footer = '(c) 2005 javaonlinenews. $bagian[1] merupakan judul berita dan $bagian[2] merupakan isi berita.

Proyek Aplikasi Bab 2 Selanjutnya kita akan membuat file yang paling penting yaitu index.php diatas kita memanggil dulu class skin yang ada pada file template.php yang berisi variabel-variabel tampilan yang digunakan untuk mengganti tag {X}. dan Teknik PHP Lainnya 139 . $skin->ganti_tag('{UTAMA}'. $skin->ganti_tag('{FOOTER}'. $skin->ganti_tag('{JUDUL}'. Ingat WebServer akan selalu mencari file index.html pada suatu direktori jika tidak ditemukan maka webserver akan memunculkan daftar file pada direktori tersebut. $judul).php'). $today). $skin->ganti_skin('template/myskin.php'). $utama). $iklan). $slogan). Jalankan PHP DESIGNER 2005 klik menu File-New-PHP kemudian ketik listing kode berikut Script dari file index. PENJELASAN SCRIPT Pada script index. $skin->ganti_tag('{SLOGAN}'.14: output file index.php letakkan pada direktori Proyek-Bab2\.Fungsi. $skin = new skin. $skin->ganti_tag('{LAINNYA}'. $lainnya). Lalu kita membuat objek $skin yang merupakan class skin.php pada direktori template require('template/template. ?> Simpan dengan nama index.php.php atau index. Setelah itu coba jalankan hasilnya akan terlihat seperti gambar 2. OOP.14 Gambar 2.php <?php // panggil file template. $skin->ganti_tampilan(). $skin->ganti_tag('{TODAY}'.php').php.php yang menyimpan variabel tampilan require('template/var_tampilan.php dan memangil var_tampilan. // panggil file var_tampilan. $footer). $skin->ganti_tag('{IKLAN}'. Bab 2 .

Namun juga ada batasan user tidak boleh memasang iklan lebih dari satu kali. ?> <html> <head> <title>Pasang Iklan</title> <style> td{font-family: verdana.'<input type="text" name="link" size="30"><br>' . // akhir dari proses pasang case 'proses_pasang'. ganti_tag() untuk mengganti tag-tag {X} pada halaman. ' .domain. File untuk bagian pengunjung lainnya adalah pasangiklan. // daftarkan proses $proses = $_GET['proses'].'<td align="center" class="putih">(c) 2005 – ' .'</table>' . OOP.Fungsi.'</form>'.'<tr>' .'</td></tr>' .'<td><input type="submit" value="PASANG"></td></tr>' . font-size: 11px} . 100 karakter)<br>' . font-size: 11px} body{font-family: verdana.'<tr>' .'<td align="center" class="putih">Pasang Iklan</td></tr>' . Untuk memahami cara kerjanya buat file baru pada PHP DESIGNER 2005 lalu ketik kode berikut Script dari file pasangiklan. dan Teknik PHP Lainnya 140 . if ($proses == '') $proses = 'pasang'.php <?php // panggil output buffering untuk cookie ob_start(). else { $iklan = $_POST['iklan']. Dan yang terakhir adalah melakukan penggantian tampilan menggunakan metode ganti_tampilan().'<tr height="30" bgcolor="#7cb500">' .'<input type="text" name="iklan" size="80" maxlength="100"></td></tr>' . font-weight: bolder} </style> </head> <body> <center> <?php switch ($proses) { case 'pasang': echo '<form action="pasangiklan.'<table border="0" width="75%">' .com. File ini berguna untuk mempost iklan yang dipasang user.'<tr height="30" bgcolor="#7cb500">' .".php?proses=proses_pasang" method="post">' . // cek isi dari cookie iklan jika ada maka tidak boleh posting if (isset($_COOKIE['iklan'])) echo "Anda tidak diperbolehkan memasang iklan lebih dari 1x.'javanewsonline.'<td>Isi Iklan: (max.php.'cukup ketikkan domainnya saja tanpa http:// contoh www.'<td>Link Iklan:<br>' .putih{color: white. Bab 2 .'<tr>' .Proyek Aplikasi Bab 2 Disini kita menggunakan tiga metode yaitu ganti_skin() untuk mengganti skin template.localhost</td></tr>' . break.

"\n". Gambar 2.'/'.php pada direktori Proyek-Bab2\. $isi_file = $iklan. Yaitu untuk user yang belum pernah memasang iklan dan yang sudah pernah memasang iklan.php">Lihat</a>.$link. $isi_file). // tulis ke file iklan. echo 'Iklan berhasil dipost. Pada proses pasang kita hanya menampilkan form untuk memasang iklan. Fungsi ini kita panggil karena nantinya kita menggunakan cookie.: output file pasangiklan. OOP.$link. Pada akhir dari proses proses_tambah kita membuat cookie yang bernama iklan Bab 2 .Fungsi.'. if (empty($iklan) || empty($link)) exit('Error: Ada field kosong'). Untuk itu keluar dari rutin script dan tampilkan pesan bahwa ia tidak boleh memasang lebih dari satu kali. Yang terdiri dari dua textbox. Sekarang coba klik pada link iklan klik disini.php PENJELASAN SCRIPT Pada script ini kita pertama kali memanggil fungsi ob_start().txt fwrite($buka_iklan. $link = 'http://'.txt'. } break. Maka anda akan dibawa ke form pasang iklan seperti gambar 2. // buka file iklan. Ada dua proses yang dikerjakan file ini yaitu menampilkan form dan memasang atau menulis iklan.txt $buka_iklan = fopen('berita/iklan. //akhir dari proses_pasang } ?> </body> </html> Simpan dengan nama pasangiklan. <a href="index. dan Teknik PHP Lainnya 141 . '1'). Seperti biasa untuk menulis file kita perlu membukanya lebih dahulu dengan fopen() lalu menulisnya. Selanjutnya pada proses proses_pasang kita dihadapkan pada dua kondisi. 'a').Proyek Aplikasi Bab 2 $link = $_POST['link']. Jika isi dari cookie iklan tidak kosong maka user sudah pernah memasang iklan. fclose($buka_iklan). Untuk itu kita gunakan statemen if(isset($_COOKIE['iklan'])).'#-#'. // buat cookie iklan setcookie('iklan'.

. Setelah itu tekan tombol refresh pada toolbar. Sekarang anda dapat memasang iklan kembali. dan Teknik PHP Lainnya 142 . Kita dapat melakukannya secara manual pada Internet Explorer.-Delete Cookies.Fungsi. ******************** Bab 2 ... Caranya klik menu Tools-Internet Options. Jika anda ingin memasang iklan lagi anda harus menghapus cookienya. Jika masih belum bisa tutup IE lalu buka kembali. OOP..Proyek Aplikasi Bab 2 dan isinya 1.. Sebenarnya isi dari cookie ini tidak penting karena pada pengecekan kita hanya menentukan cookie tersebut terisi atau tidak.

143 . phpMyAdmin.Berikutnya Pada bab berikutnya kita akan mempelajari tentang database yaitu MySQL. dan Mengkoneksikan PHP dengan MySQL.

Bab 3 MySQL phpMyAdmin Mengakses MySQL Menggunakan PHP Sebelum melanjutkan ikuti langkah-langkah berikut: Buatlah folder baru pada direktori C:\Apache2\htdocs\webmaster\ Berinama folder tersebut Bab3 *********** 144 .

Jadi diharapkan nantinya anda dapat menguasai beberapa materi tentang: Menggunakan MySQL Membuat Database Memasukkan data ke database Mendapatkan data dari database Mengupdate record pada database Meng-Alter tabel Menghapus record pada database Menghapus tabel Menghapus database Teknik MySQL Lainnya Itulah beberapa materi yang harus anda kuasai.MySQL. Anda akan mengerti dengan cepat bagaimana membuat database. Perintah-perintah seperti help. dan Mengakses MySQL Menggunakan PHP 145 . Keduanya sama-sama valid. Untuk memulai MySQL jalankan command prompt lalu ketikkan: C:\>mysql –u root –p [ENTER] Lalu ketikkan password anda: Enter password: ********** [ENTER] Jika benar maka akan muncul prompt mysql> seperti gambar 3. SQL sendiri merupakan singkatan dari Structured Query Language. PostgreSQL dan SyBase. Aplikasi database lain diantaranya Microsoft SQL Server. Pada database dikenal istilah query. Karena database dapat diartikan sebagai kumbulan dari banyak tabel dapat yang saling berhubungan (Relational).” (titik koma). use. SQL digunakan untuk menyimpan dan mendapatkan data dari dan ke sebuah database. Bab 3 . Sebenarnya materi ini tidak terlalu sulit. Untuk pengolahan database ini kita menggunakan MySQL. Jika anda pernah menggunakan program spreadsheet macam Microsoft Excel atau Microsoft Access. Untuk mendapatkan daftar dari perintah yang dapat anda gunakan pada mysql prompt ketikkan \h atau help lalu tekan ENTER. exit dan sebagainya juga memiliki sinonim perintah. phpMyAdmin. Artinya perintah-perintah tersebut dapat kita panggil dengan cara yang berbeda. Menggunakan MySQL MySQL merupakan salah satu aplikasi database yang menggunakan SQL sebagai bahasa standar. Oracle. Contohnya untuk exit kita dapat menggunakan perintah \q [ENTER].Hari Ke-11 Kita sudah menginjak hari ke sebelas untuk itu: Masuklah pada direktori C:\Apache2\htdocs\webmaster\Bab3\ Buatlah folder baru dan beri nama hari-11 MySQL Pada hari ke sebelas ini materi yang akan kita pelajari meliputi database. Query merupakan perintah yang digunakan untuk melakukan manipulasi pada database.0. go. Perlu anda ketahui untuk perintah-perintah yang berhubungan dengan query database akhir dari perintah tersebut harus diberi tanda “.

dan Mengakses MySQL Menggunakan PHP 146 . Hasil yang ditampilkan kurang lebih akan seperti berikut +--------------------+ | Database | +--------------------+ | mysql | | karyawan | +--------------------+ Ternyata memang benar database karyawan berhasil dibuat sehingga ada pada daftar database. Jika tidak ada kesalahan maka akan muncul pesan seperti berikut Query OK. Arti dari perintah diatas adalah adalah kita membuat database dengan nama karyawan.Gambar 3. lihat contoh berikut Mengaktifkan Database Bab 3 . Sebelum dapat melakukan banyak hal pada database. Perintah show juga dapat digunakan untuk menampilkan tabel pada database. Query untuk membuat database adalah create database nama_database. Anda perlu mengaktifkan dulu database mana yang akan menerima perlakukan query. Sekarang mari kita lihat apakah benar database kita sudah ada atau belum. Jika anda tidak mendapatkan hasil seperti diatas pastikan anda telah memberi titik koma pada akhir perintah. Tanda titik koma memberitahu MySQL query yang anda berikan telah selesai dan MySQL harus mengeksekusinya.04 sec) Itu artinya semua pembuatan database berhasil dilakukan. Untuk mengaktifkan database digunakan perintah use. 1 row affected (0. Untuk itu pada mysql prompt ketik perintah berikut mysql> show databases.0: tampilan utama dari MySQL monitor Membuat Database Untuk membuat database perintahnya sangatlah simpel. Pada mysql prompt ketikkan perintah berikut: mysql> create database karyawan. phpMyAdmin.MySQL.

.. Untuk daftar lengkap tipe data ini lihat tabel 3...00 sec).1. date/time dan lain sebagainya. Jangkauannya 838:59:59  sangat panjang munkin lebih dari yang anda inginkan  DATETIME Tanggal dan Waktu yang ditampilkan 1000-01-01 00:00:00 dalam format YYY-MM-DD sampai 9999-12-31 HH:MM:SS  23:59:59  TIMESTAMP Timestamp cukup berguna jika 1970-01-01 00:00:00  digunakan dalam transaksi. Untuk itu kita akan segera membuatnya. Untuk membuat tabel tentu terdapat kolomkolom..65535  MEDIUMINT 8388608. Seperti string.... Namun sebelum membuat tabel ada beberapa hal yang yang perlu anda ketahui.128  BIT   BOOL   SMALLINT -32768.264-1  Ukuran(byte)  1      2  3  4    8  Deskripsi  Angka yang sangat kecil  Sama dengan TINYINT  Sama dengn TINYINT  Angka yang kecil  Angka sedang  Angka regular  Sama dengab INT  Angka Yang besar Tipe Data Date and Time Pada tipe date anda time dapat menyimpan data berdasarkan tanggal dan waktu. Pesan yang muncul adalah Empty set (0.-263-1 atau 0. phpMyAdmin.8388607 atau 0. Tipe Data Numerik Pada tipe data ini kolom dapat berisi angka baik bilangan cacah ataupun real.MySQL. Jika tidak ada kesalahan pesan yang dimunculkan MySQL adalah Database changed...... Sehingga nantinya database inilah yang akan menerima query-query dari kita. Tabel-tabel berikut menuntukkan tipe-tpe data dan ukurannya disimpan pada MySQL.1 Daftar tipe data Date and Time Tipe  Jangkauan  Deskripsi  Date Tanggal yang ditampilkan dalam 1000-01-01 sampai format YYYY-MM-DD  9999-12-31  TIME Waktu yang ditampilkan dalam -838:59:59 sampai format HH:MM:SS... Tabel 3..mysql> use karyawan. Tabel 3.16777215  INT -231.255 atau -127.0 Daftar tipe data numerik Tipe  Jangkauan  TINYINT 0. Format lengkap dapat anda lihat pada tabel 3.. dan Mengakses MySQL Menggunakan PHP 147 .231 -1 atau 0.32367 atau 0.. Pada saat menyimpan data ke tabel jenis data yang kita masukkan tentunya berbedabeda. Untuk daftar lengkap tipe data numerik dapat anda lihat pada tabel 3..232-1  INETEGER   BIGINT -263. Itu berarti tidak ada tabel pada database karyawan.. mysql> show tables. Perintah diatas akan mengaktifkan database karyawan. integer. Untuk mengetahui daftar tabel yang ada pada suatu database dapat digunakan perintah show tables.0.2  Bab 3 .

3 Daftar Tipe Data string Tipe  Jangkauan  CHAR(n) 0.777.. Kedua tipe ini memiliki banyak variasi ukuran. Sedangkan YEAR(4) dalam 4 digit. Dan setiap kolom biasanya memiliki tipe data yang berbeda. Tipe data berikutnya yang dapat kita gunakan adalah TEXT dan BLOB. Tabel 3.967. dan Mengakses MySQL Menggunakan PHP Membuat Tabel 148 .YEAR 70-69 atau 1970-2069  Untuk YEAR(2) tahun dalam 2 digit.215)  232-1 (atau 4. Seperti yang pernah disinggung sebelumnya.294. Dalam prakteknya tipe kolom BLOB dan TEXT hampir sama.. Hanya saja pada tipe TEXT bersifat case sensitive artinya membedakan penggunaan huruf kecil dan besar sedangkan BLOB tidak. Jadi pada tipe ini anda dapat menyimpan file-file gambar ataupun suara. Perbedaan keduanya adalah jika membuat kolom dengan tipe data CHAR MySQL akan menambahkan spasi pada data tersebut jika belum memenuhi data maksimal yang dapat ditampung.255  CHAR VARCHAR(n) TINYBLOB TINYTEXT BLOB TEXT MEDIUMBLOB MEDIUMTEXT LONGBLOB LONGTEXT 1  1. Tetapi juga dapat menympan dalam bentuk binary seperti gambar dan sound.295)  Deskripsi  Karakter sepanjang n. phpMyAdmin. Dimana n antara 0 sampai 255  Sama dengan CHAR(1)  Sama dengan CHAR(n) hanya perbedaan panjang variabel  BLOB ukuran kecil  TEXT ukuran kecil  BLOB ukuran normal  TEXT ukuran normal  BLOB ukuran medium  TEXTukuran medium  BLOB ukuran besar  TEXT ukuran besar Tipe Data String Seperti yang kita tahu tabel terdiri dari kolom dan baris. Yang dapat melakukan hal tersebut adalah tipe BLOB.294.215)  224-1 (atau 16. Sehingga pada saat membuat tabel kita dapat menentukan tipe data Bab 3 .255  28-1 (atau 255)  28-1 (atau 255)  216-1 (atau 65. Tabel 3.535)  224-1 (atau 16. Sedangkan VARCHAR tetap menyimpan data itu apa adanya.MySQL.. Untuk itu sebelum membuat tabel kita harus tahu setiap kolom menyimpan data apa..535)  216-1 (atau 65. Kita dapat menyimpan data dalam bentuk binari. Untuk teks biasa kita dapat menggunakan CHAR dan VARCHAR. BLOB merupakan Binary Large Objects.967. Lihatlah tabel berikut untuk daftar tipe data string.295)  232-1 (atau 4.777.2 Daftar format TIMESTAMP Format  TIMESTAMP TIMESTAMP(14) TIMESTAMP(12) TIMESTAMP(10) TIMESTAMP(8) TIMESTAMP(6) TIMESTAMP(4) TIMESTAMP(2) Tampilan  YYYYMMDDHHMMSS  YYYYMMDDHHMMSS  YYMMDDHHMMSS  YYMMDDHHMM  YYYYMMDD  YYMMDD  YYMM  YY Kolom pada tipe ini tidak hanya dapat menyimpan data dalam format teks biasa.

Isi2. Tabel ini memiliki lima kolom. 5000000). dan Mengakses MySQL Menggunakan PHP 149 .MySQL. Pada mysql prompt ketiklah perintah berikut. Jika tidak ada kesalahan maka akan muncul pesan Query OK.. Pada mysql prompt ketikkan perintah berikut mysql> INSERT INTO data_pribadi VALUES ('001A'. Untuk mengetahui struktur tabel kita dapat menggunakan perintah describe.. gaji mediumint(10). Lalu keyword kolom1 dan seterusnya disebelah kanan nama table itu buat apa?.09 sec). Sedangkan untuk kolom gaji karena merupakan angka maka tipenya kita buat mediumint. Cyber 19'.yang tepat untuk setiap kolom. namun pastikan database karyawan telah aktif. mysql> -> -> -> -> -> -> -> -> create table data_pribadi ( kode_kar varchar(4) not null.. Untuk membuat tabel kita dapat menggunakan perintah create table nama_tabel. jabatan varchar(15). Ketik query berikut pada mysql prompt mysql> DESCRIBE data_pribadi.02 sec) Untuk memasukkan data ke dalam database perintah yang digunakan adalah INSERT.. kolom3. 'Surfi'). [ENTER] Jika berhasil akan muncul pesan Query OK. Pada kolom kode_kar kita beri tanda primary key. Perhatikan setiap nilai yang kita masukkan harus diberi tanda petik satu atau petik dua. alamat varchar(50). 0 rows affected (0. Isi3. 'Web Janarko'. Artinya data pada kolom ini harus bersifat unik.. primary key(kode_kar) ) type=’MyISAM’. Pada query diatas kita membuat tabel yang bernama data_pribadi dengan tipe MyISAM (akan dibahas lebih lanjut). [ENTER] Memasukkan Data ke Database Bab 3 . Itu digunakan jika kita ingin memasukkan data hanya pada kolom tertentu saja.). Untuk jenis integer hal ini tidak diperlukan.)] VALUES (Isi1. 'Jl. Struktur dasar dari penulisan query insert adalah sebagai berikut INSERT [INTO] nama_table [(kolom1. [ENTER] Tampilan yang muncul adalah seperti berikut +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | kode_kar | varchar(4) | NO | PRI | | | | nama_kar | varchar(30) | YES | | NULL | | | alamat | varchar(50) | YES | | NULL | | | jabatan | varchar(15) | YES | | NULL | | | gaji | mediumint(10)| YES | | NULL | | +----------+--------------+------+-----+---------+-------+ 5 rows in set (0.01 sec). Contoh berikut ini menunjukkan kita akan memasukkan data ke dalam tabel data_pribadi. tidak boleh ada data yang sama. 1 row affected (0. Contoh ketik query berikut pada mysql prompt mysql> INSERT INTO data_pribadi (kode_kar. nama_kar varchar(30). kolom2. nama_kar) VALUES ('002B'. phpMyAdmin. Untuk kolom satu sampai dengan empat tipe kolomnya adalah varchar. 'Manajer'..

Jika anda masih pada mysql prompt ketikkan \q [ENTER] untuk keluar dari MySQL Monitor.00 sec) Query OK. 'Hacky'. Tembaga 911'.01 sec) Query OK. Untuk mencobanya buka PHP DESIGNER 2006 klik menu File-New-SQL untuk membuat file SQL. Query ini kita gunakan untuk mendapatkan data dari database dengan menyeleksi baris yang cocok dengan kriteria Bab 3 . Selain dengan mengetikkan langsung pada MySQL Monitor. Jika tidak ada kesalahan pesan yang muncul adalah Database changed Query OK. 'Jl. Untuk mengeksekusinya ada dua cara. 'PR'. Pada query diatas kita hanya memasukkan data pada kolom kode_kar dan nama_kar.00 sec) Cara yang kedua adalah melalui DOS prompt bukan mysql prompt. Itu dikarenakan anda sudah memasukkan query itu sebelumnya pada mysql prompt. Perintah yang kita tulis akan dieksekusi oleh MySQL secara urut dari atas ke bawah. 'PR'. Lalu pada DOS prompt ketikkan perintah berikut C:\>mysql -u root -p –D karyawan < c:/Apache2/htdocs/webmaster/Bab3/hari11/data_pribadi. Mendapatkan Data dari Database Untuk keperluan ini query SQL yang kita gunakan adalah SELECT. INSERT INTO 3000000).MySQL. 'Cracky'. phpMyAdmin. 1 row affected (0. menghapus database dan sebagainya. 'Jl. Ingat sifat kolom kode_kar adalah primary key maka data tidak boleh ada yang sama. Kita juga dapat menyimpan kumpulan perintah perintah query database pada sebuah file. Lalu ketik kode berikut -. Jadi setiap data pada kolom ini harus bersifat unik. Enter password: ********** [ENTER] Opsion –D merupakan database yang digunakan yaitu karyawan. 1 row affected (0.masukkan INSERT INTO INSERT INTO 750000). 1 row affected (0.sql. Jika berhasil maka tidak ada pesan kesalahan yang muncul. Menyimpan Perintah Query pada File Simpan dengan nama data_pribadi.sql. data_pribadi VALUES ('004D'.sql [ENTER] Masukkan password. 'Jl. Kita dapat menyimpan query untuk membuat database. 1 row affected (0. Ketik perintah berikut mysql> source c:/Apache2/htdocs/webmaster/Bab3/hari-11/data_pribadi. memasukkan data. Port 21'. Pada penentuan kolom kita tidak perlu memberi tanda petik. Cara yang pertama adalah mengeksekusinya melalui mysql prompt.Jika berhasil MySQL akan menampilkan Query OK. 'Preaky'. Namun jika muncul pesan seperti ERROR 1062 (23000) at line 4: Duplicate entry '003C' for key 1 Itu artinya ada data yang sama pada kolom kode_kar. 4000000). 'Office Boy'. data_pribadi VALUES ('005E'. Port 80'. Sedangkan isinya adalah 002B untuk kode karyawan dan Surfi untuk Nama. letakkan file ini direktori hari-11.00 sec). data ke tabel data_pribadi data_pribadi VALUES ('003C'. dan Mengakses MySQL Menggunakan PHP 150 .

[ENTER] Sekarang kita akan coba menampilkan data dari database karyawan. Struktur dasar penggunaan SELECT adalah sebagai berikut SELECT item FROM nama_tabel [WHERE kondisi] [GROUP BY tipe_group] [HAVING where_kondisi] [ORDER BY urut_secara] [LIMIT kriteria_limit]. jadi kalau ingin menampilkan semuanya saya harus menuliskan semua nama kolom. Pemikiran yang bagus namun sayangnya anda tidak perlu melakukannya. Cyber 19 | Manajer | 5000000 | | 002B | Surfi | NULL | NULL | NULL | | 005E | Preaky | Jl. dan Mengakses MySQL Menggunakan PHP 151 .00 sec) Mendapatkan data secara spesifik Bab 3 . Kita akan membahasnya lebih detil lagi. Kita cukup memberikan simbol asterik (*) maka secara otomatis seluruh kolom akan diikutkan. Namun sebelumnya kita akan masuk kembali ke MySQL Monitor dulu. mysql> SELECT kode_kar. [ENTER] Output dari query diatas adalah sebagai berikut +----------+-------------+ | kode_kar | nama_kar | +----------+-------------+ | 001A | Web Janarko | | 002B | Surfi | | 005E | Preaky | | 004D | Cracky | | 003C | Hacky | +----------+-------------+ 5 rows in set (0. Pada DOS prompt ketik perintah berikut C:\>mysql –u root –p [ENTER] Enter password: ********** [ENTER] Setelah masuk pada mysql prompt aktifkan database karyawan dengan mengetikkan perintah.00 sec) Seperti yang anda lihat yang ditampilkan hanyalah data pada kolom kode dan nama karyawan. Ada banyak variasi dalam menggunakan query SELECT. Query berikut ini akan menampilkan data yang ada pada kolom kode_kar dan nama_kar. Port 21 | Office Boy | 750000 | | 003C | Hacky | Jl.. nama_kar. mysql> use karyawan. Lihat contoh berikut mysql> SELECT * FROM data_pribadi.MySQL. Tembaga 911 | PR | 3000000 | | 004D | Cracky | Jl. Khusunya pada tabel data_pribadi. phpMyAdmin..tertentu. Port 80 | PR | 4000000 | +----------+-------------+-----------------+------------+---------+ 5 rows in set (0. [ENTER] Output yang ditampilkan dari query diatas adalah +----------+-------------+-----------------+------------+---------+ | kode_kar | nama_kar | alamat | jabatan | gaji | +----------+-------------+-----------------+------------+---------+ | 001A | Web Janarko | Jl. Oh. Itu karena pada query setelah select kita menuliskan kode_kar. nama_kar FROM data_pribadi.

Port 21 | Office Boy | 750000 | | 002B | Surfi | NULL | NULL | NULL | +----------+-------------+-----------------+------------+---------+ 5 rows in set (0.00 sec) Secara default jika kita tidak mencantumkan ASC atau DESC. Maka yang ditampilkan hanya satu baris dalam hal ini karyawan yang bernama Hacky yang gajinya lebih dari 3000000. phpMyAdmin. Output yang dihasilkan MySQL adalah +----------+-------------+-----------------+------------+---------+ | kode_kar | nama_kar | alamat | jabatan | gaji | +----------+-------------+-----------------+------------+---------+ | 001A | Web Janarko | Jl. Mengurutkan Data Kita juga dapat mengurutkan data yang ada. Anda dapat mengkombinasikan klausa ORDER BY dengan klausa lain seperti WHERE. Pada klausa ini kita dapat mengurutkan data dari yang terkecil ke yang terbesar (Ascending). [ENTER] Output yang ditampilkan MySQL adalah sebagai berikut +----------+----------+-----------------+---------+---------+ | kode_kar | nama_kar | alamat | jabatan | gaji | +----------+----------+-----------------+---------+---------+ | 005E | Preaky | Jl. Untuk lebih memahaminya ketik query berikut pada mysql prompt mysql> SELECT * FROM data_pribadi WHERE jabatan='PR'. Memilih baris yang ditampilkan Bab 3 . [ENTER] Query diatas akan menghasilkan tampilan sebagai berikut +----------+----------+-------------+---------+---------+ | kode_kar | nama_kar | alamat | jabatan | gaji | +----------+----------+-------------+---------+---------+ | 003C | Hacky | Jl.Seperti yang sudah disinggung sebelumnya kita dapat melakukan pencarian data sesuai dengan kriteria yang kita maksud. Namun karena adanya operator AND yang juga mengharuskan kolom gaji lebih dari 3000000. Port 80 | PR | 4000000 | +----------+----------+-------------+---------+---------+ 1 row in set (0. Pada klause WHERE kita dapat melakukan perbandingan menggunakan operater matematik ataupun operator perbandingan seperti pada PHP. Maka yang dijadikan patokan adalah ASC. Untuk keperluan kita akan menggunakan klausa ORDER BY. Untuk itu kita dapat menggunakan klausa WHERE.02 sec) Seperti yang anda lihat MySQL hanya mengembalikan baris yang kolom jabatannya adalah PR. Tembaga 911 | PR | 3000000 | | 004D | Cracky | Jl.02 sec) Seharusnya yang keluar adalah dua baris. Seperti yang anda lihat pada query diatas kita mengurutkan data pada tabel berdasarkan kolom gaji secara descending(DESC). dan Mengakses MySQL Menggunakan PHP 152 . Tembaga 911 | PR | 3000000 | | 003C | Hacky | Jl. Port 80 | PR | 4000000 | | 005E | Preaky | Jl.MySQL. Lihat contoh berikut mysql> SELECT * FROM data_pribadi ORDER BY gaji DESC. Port 80 | PR | 4000000 | +----------+----------+-----------------+---------+---------+ 2 rows in set (0. Atau mulai dari yang terbesar ke yang terkecil(Descending). Contoh lain penggunaan klausa WHERE adalah sebagai berikut mysql> SELECT * FROM data_pribadi WHERE jabatan='PR' AND gaji>3000000. Cyber 19 | Manajer | 5000000 | | 003C | Hacky | Jl.

00 sec) Ternyata memang benar record telah terupdate. Catatan. [ENTER] Output yang ditampilkan adalah +----------+----------+-----------------+------------+---------+ | kode_kar | nama_kar | alamat | jabatan | gaji | +----------+----------+-----------------+------------+---------+ | 002B | Surfi | NULL | NULL | NULL | | 005E | Preaky | Jl. Klausa LIMIT sangat berguna pada beberapa aplikasi web. Untuk kerperluan ini kita dapat menggunakan query ALTER. Mengupdate Record pada Database Pada tabel data_pribadi kita tahu bahwa pada data karyawan yang bernama Surfi datanya belum lengkap.4 Tabel 3. 1 row affected (0. Dan data alamat. mulai dari baris ke-1”.00 sec) Arti dari query diatas adalah “pilih semua dari tabel data_pribadi kembalikan sebanyak 3 baris. Munkin saja anda ingin merubah primary key. Pada mysql prompt ketik perintah berikut mysql> UPDATE data_pribadi SET alamat='Jl. 3. Seperti pada suatu halaman kita hanya ingin menampilkan 5 item dan sebagainya. jabatan='Sekretaris'. [ENTER] Output yang ditampilkan MySQL adalah +----------+----------+--------------+------------+---------+ | kode_kar | nama_kar | alamat | jabatan | gaji | +----------+----------+--------------+------------+---------+ | 002B | Surfi | Jl. Daftar lengkap query yang dapat kita lakukan dengan ALTER ditunjukkan pada tabel 3. Meng-Alter Tabel Suatu saat mungkin anda ingin merubah struktur dari tabel anda.Pada saat melakukan query kita juga dapat menentukan baris mana yang ingin ditampilkan. mysql> SELECT * FROM data_pribadi LIMIT 1. mysql> SELECT * FROM data_pribadi WHERE nama_kar='Surfi'. Optik 80'. Untuk itu kita dapat menggunakan klausa LIMIT. Port 21 | Office Boy | 750000 | +----------+----------+-----------------+------------+---------+ 3 rows in set (0. Untuk itu kita perlu mengupdate data pada record ini. dan Mengakses MySQL Menggunakan PHP 153 . jabatan dan gaji yang semula NULL sekarang sudah terisi.4 Daftar query yang dipasangkan dengan ALTER TABLE Bab 3 .MySQL. Karena kita hanya ingin mengupdate data dari karyawan yang bernama Surfi. Optik 80 | Sekretaris | 3500000 | +----------+----------+--------------+------------+---------+ 1 row in set (0. Pada contoh berikut kita hanya ingin menampilkan record dari baris ke-3 hingga ke-5.05 sec) Rows matched: 1 Changed: 1 Warnings: 0 Untuk mengecek apakah memang sudah terupdate maka kita dapat menampilkannya menggunakan SELECT. gaji=3500000 WHERE nama_kar='Surfi'. Maka kita juga gunakan klausa WHERE agar tidak seluruh tabel ikut terupdate. phpMyAdmin. index baris pada MySQL dimulai dari 0 bukan 1. Query SQL yang dapat kita gunakan untuk mengupdate data adalah UPDATE. Tembaga 911 | PR | 3000000 | | 004D | Cracky | Jl. [ENTER] Output yang ditampilkan adalah Query OK. index menyisipkan kolom dan sebagainya.

) ADD PRIMARY KEY (kolom. phpMyAdmin. [ENTER] Outputnya akan terlihat seperti berikut Bab 3 . 5 rows affected (0. [ENTER] Output dari query diatas adalah +----------+-------------+-----------------+------+------------+---------+ | kode_kar | nama_kar | alamat | kota | jabatan | gaji | +----------+-------------+-----------------+------+------------+---------+ | 001A | Web Janarko | Jl..  Membuat primary key pada kolom yang ditentukan.. alamat.. Tembaga 911 | NULL | PR | 3000000 | | 004D | Cracky | Jl.) ALTER [KOLOM] nama_kolom {SET DEFAULT nilai ATAU DROP DEFAULT} CHANGE [KOLOM] nama_kolom deskripsi_kolom_baru MODIFY [KOLOM] deskripsi_kolom DROP [KOLOM] nama_kolom DROP PRIMARY KEY DROP INDEX index RENAME [AS] nama_tabel_baru Deskripsi  Menambahkan kolom baru pada lokasi yang telah ditentukan. Port 80 | NULL | PR | 4000000 | +----------+-------------+-----------------+------+------------+---------+ 5 rows in set (0.. Lakukan query berikut untuk melihat hasilnya..  Membuat index pada tabel di kolom yang ditentukan... Deskripsi_kolom memerlukan nama dan tipe sama dengan saat membuat tabel  Menambahkan kolom pada akhir dari tabel. Sekarang buka mysql prompt ketik query berikut mysql> ALTER TABLE data_pribadi ADD kota varchar(10) AFTER alamat.  Menambahkan index unik pad kolom yang ditentukan  Menambah atau menghapus nilai default dari kolom  Mengganti kolom nama_kolom dengan deskripsi baru. [ENTER] Jika tidak ada kesalahan yang muncul adalah Query OK. Kita akan menambahkan kolom kota setelah kolom alamat.Query  ADD [KOLOM] deskripsi_kolom [FIRST ATAU AFTER KOLOM ] ADD [KOLOM] deskripsi_kolom. .) ADD UNIQUE [index] (klom.  Menghaspus kolom nama_kolom  Menghaspus primary key pada tabel  Menghapus index  Mengubah nama tabel Kali ini kita akan coba mengubah struktur dari tabel data_pribadi. Cyber 19 | NULL | Manajer | 5000000 | | 002B | Surfi | Jl. mysql> SELECT nama_kar.. Kita akan mengisinya dengan Surabaya.01 sec) Seperti yang anda lihat kolom kota telah disisipkan pada tabel pribadi.MySQL. [ENTER] Untuk melihat hasilnya kita lakukan query SELECT mysql> select * from data_pribadi. Catatan anda bisa mengubah nama kolom dengan perintah ini karena pada deskripsi ada statemen name  Mirip dengan CHANGE. Tapi tidak dapat digunakan untuk mengubah nama table.. Optik 80 | NULL | Sekretaris | 3500000 | | 005E | Preaky | Jl.. ADD INDEX [index] (kolom.00 sec) Rows matched: 5 Changed: 5 Warnings: 0.. kota FROM data_pribadi. mysql> UPDATE data_pribadi SET kota='Surabaya'. Port 21 | NULL | Office Boy | 750000 | | 003C | Hacky | Jl. dan Mengakses MySQL Menggunakan PHP 154 . deskripsi_kolom.

kota. Anda dapat menggunakan query DELETE untuk melakukannya. Port 21 | Surabaya | | Hacky | Jl. jabatan FROM data_pribadi. phpMyAdmin. Karena kinerja dari salah satu pegawai kita buruk maka kita akan memecatnya. 1 row affected (0. Yang merupakan PR (public relation)..00 sec) Menghapus record cukup simpel. Struktur dasar penulisan query DELETE adalah sebagai berikut DELETE FROM nama_tabel [WHERE kondisi] [LIMIT jumlah]. dan Mengakses MySQL Menggunakan PHP 155 . Query yang kita gunakan untuk menghapus tabel adalah DROP. [ENTER] Jika tidak ada kesalahan pesan yang muncul adalah Query OK. Port 80 | Surabaya | +-------------+-----------------+----------+ 5 rows in set (0. Tanpa adanya klausa WHERE maka maka semua baris pada tabel tersebut akan dihapus jadi hati-hati.+-------------+-----------------+----------+ | nama_kar | alamat | kota | +-------------+-----------------+----------+ | Web Janarko | Jl. [ENTER] Output query diatas adalah +-------------+----------+------------+ | nama_kar | kota | jabatan | +-------------+----------+------------+ | Web Janarko | Surabaya | Manajer | | Surfi | Surabaya | Sekretaris | | Preaky | Surabaya | PR | | Cracky | Surabaya | Office Boy | +-------------+----------+------------+ 4 rows in set (0. Sama dengan menghapus tabel untuk menghapus database kita kita melakukan query DROP.00 sec) Menghapus Record pada Database Menghapus Tabel Untuk menghapus tabel langkahnya lebih simpel dari menghapus record. Untuk itu kita akan menghapusnya dari tabel daftar karyawan. Struktur dasar penggunaan DROP adalah sebagai berikut DROP TABLE nama_tabel.02 sec).. Untuk mengeceknya kita dapat menggunakan query SELECT seperti berikut mysql> SELECT nama_kar. Pegawai yang akan kita pecat adalah si Hacky. Menghapus Database DROP DATABASE nama_database. kejam sekali!. Tembaga 911 | Surabaya | | Cracky | Jl. Kita tidak akan mempraktekkan ini karena tabel ini masih kita perlukan pada pembahasan selanjutnya. Ketik perintah berikut pada mysql_prompt mysql> DELETE FROM data_pribadi WHERE nama_kar='Hacky'.. Wih. Optik 80 | Surabaya | | Preaky | Jl.MySQL. Cyber 19 | Surabaya | | Surfi | Jl. Strukturnya pun sama dengan menghapus tabel yaitu Bab 3 .

sql.sql melalui mysql prompt. Teknik MySQL Lainnya Kali ini kita akan membahas beberapa teknik lainnya pada MySQL. Pada kode SQL diatas kita tidak menuliskan perintah INSERT 4x. ('002B'. Jika berhasil pesan yang muncul adalah Database changed Query OK. 4 rows affected (0. dan database itu sendiri. Maka kita harus melakukan join pada kedua tabel untuk melakukan query yang diinginkan.00 sec) Records: 4 Duplicates: 0 Warnings: 0 Jika muncul pesan diatas maka semua query yang kita lakukan pada file tunjangan. -.aktifkan database karywan USE karyawan. 175000). tunjangan mediumint(9). seluruh tabel. mengoptimalkan database tipe tabel dan user privilege. backup database.MySQL. Ketik perintah berikut lalu tekan ENTER mysql> source i:/Apache2/htdocs/webmaster/Bab3/hari-11/tunjangan. Sekarang kita akan menampilkan record dari tabel tunjangan. Kadang kala anda mungkin memerlukan informasi lebih dari satu tabel.buat tabel tunjangan CREATE TABLE tunjangan ( kode_kar varchar(4) not null. Karena jabatan terletak pada tabel data_pribadi dan tunjangan terletak pada tabel tunjangan. Selanjutnya kita akan mengeksekusi file tunjangan. Selain itu anda juga ingin melihat tunjangannya. ('004D'. Untuk yang pertama kita akan membahas tabel join. PRIMARY KEY(kode_kar) ) TYPE='MyISAM'. So be careful!. 175000). 0 rows affected. 1 warning (0. dan Mengakses MySQL Menggunakan PHP 156 . Perintah itu kita ganti dengan tanda koma yang memisahkan setiap record. -. Simpan pada direktori hari-11 dengan nama tunjangan.Perintah diatas akan menghapus seluruh baris. 100000). Diantaranya yang akan kita bahas adalah tabel join. phpMyAdmin. Karena kita hanya memiliki satu tabel kita harus membuat satu lagi agar dapat melakukan join. mysql> SELECT * FROM tunjangan. ('005E'. [ENTER] +----------+-----------+ | kode_kar | tunjangan | +----------+-----------+ | 001A | 250000 | | 002B | 175000 | | 004D | 175000 | | 005E | 100000 | Tabel Join Bab 3 .sql tidak ada masalah.sql. 250000).01 sec) Query OK. Sebagai contoh anda ingin mengetahui karyawan yang berjabatan sebagai Manajer.masukkan data pada tabel INSERT INTO tunjangan VALUES ('001A'. Jadi dapat anda bayangkan jika anda keliru melakukan penghapusan. Untuk itu bukalah PHP DESIGNER 2006 klik menu File-New-SQL untuk membuat file SQL baru lalu ketik kode berikut -.

Maka secara periodik kita perlu melakukan backup. Selanjutnya kita menentukan kriteria yang kita inginkan dengan menggunakan klausa WHERE. dan Mengakses MySQL Menggunakan PHP 157 . Digunakan koma diantara nama tabel. Query berikut ini menujukkan join dari tabel tunjangan ke tabel data_pribadi.MySQL. Jika saat ini anda masih pada mysql propmt maka ketikkan \q [ENTER] untuk keluar dari mysql prompt.  INNER JOIN Hampir sama dengan pemisahan dua tabel dengan koma. Tidak dapat menggunakan klausa WHERE  FULL JOIN Sama dengan diatas  CROSS JOIN Sama dengan diatas. tunjangan.kode_kar.  EQUI JOIN Digunakan pada kondisi yang menggunakan = untuk mencocokkan tabel.sql [ENTER] Bab 3 .tunjangan [ENTER] FROM tunjangan LEFT JOIN data_pribadi [ENTER] USING (kode_kar) [ENTER] WHERE data_pribadi. Output yang ditampilkan dari query diatas adalah +----------+-----------+ | kode_kar | tunjangan | +----------+-----------+ | 001A | 250000 | +----------+-----------+ 1 row in set (0. Untuk daftar lengkapnya lihat tabel 3. Dapat digunakan dengan klausa WHERE. Selain LEFT JOIN juga terdapat beberapa keyword lain.5 Tabel 3.00 sec) Untuk melakukan join dari dua tabel. Dapat juga diletakkan diantara nama tabel yang dijoinkan. Kemudian kita mentukan kolom mana yang punya relational(hubungan) dengan kolom lain pada tabel berbeda dengan menggunakan USING. kita memilih kriteria dari tabel data_pribadi bukan dari tabel tunjangan. phpMyAdmin. Keyword yang digunakan untuk menghubungkan dua tabel adalah LEFT JOIN. Pada DOS prompt ketikkan C:\>mysqldump -u root -p --compact -B karyawan > c:/Apache2/htdocs/ webmaster/Bab3/hari-11/backup_karyawan.00 sec) Tanda titik pada query diatas menghubungkan antara nama tabel dan kolom. Kedua tabel tersebut harus memiliki kolom yang dapat berhubungan dalam hal ini kode_kar.  LEFT JOIN Digunakan untuk mencocokkan baris antar tabel dan baris yang tidak cocok diisi dengan NULL.+----------+-----------+ 4 rows in set (0. Untuk membackup database kita dapat menggunakan program kecil yaitu mysqldump. Untuk lebih memperjelas ketik query berikut pada mysql prompt mysql> -> -> -> SELECT tunjangan. Digunakan dengan WHERE. Dalam kasus ini yang memiliki hubungan dengan kolom lain adalah kode_kar. Membackup Database Untuk berjaga-jaga jika terjadi kerusakan atau database tidak sengaja terhapus. [ENTER] Karena query diatas cukup panjang maka lebih nyaman untuk kita menuliakannya dengan cara seperti diatas. Dimana dalam menampilkan hasil dari tabel tunjangan. Jika tanpa WHERE maka sama dengan FULL JOIN.5 Daftar tipe join pada MySQL Keyword  Penjelasan  CARTESIAN PRODUCT Semua kombinasi pada semua baris dalam semua tabel.nama_kar = "Web Janarko".

Lihat tabel 3. Ini merupakan metode standar untuk menyimpan record dan file. Maka tabel tersebut menjadi fragment atau terpecah-pecah. phpMyAdmin.Enter password: ********** [ENTER] Pada perintah mysqldump kita membackup database dan memasukkannya pada file backup_karyawan. dihapus dan sebagainya. AUTO_INCREMENT merupakan tipe kolom yang nilainya otomatis bertambah satu jika ada penambahan record baru.MySQL.tunjangan | optimize | status | OK | +-----------------------+----------+----------+----------+ 2 rows in set (0. Ini yang membuat pengaksesan HEAP sangat cepat dibanding tipe lainnya. Jenis ini sama dengan BDB. Tipe ini juga tidak dapat menampung kolom dengan tipe TEXT. Untuk mengetahui pilihan-pilihan lainnya dari mysqldump pada DOS prompt anda dapat mengetikkan perintah berikut C:\>mysqldump --help | more [ENTER] Mengoptimalkan Tabel Jika tabel sering digunakan seperti diupdate. Bab 3 . Tipe ini cocok untuk menyimpan data yang sifatnya sementara.6 Daftar tipe tabel pada MySQL Tipe  Penjelasan  MyISAM Tipe ini berdasarkan ISAM. File tersebut kita letakkan pada direktori hari-11. Oleh karena itu kita harus mengoptimalkan kembali tabel tersebut. Contoh berikut ini menunjukkan pengoptimalan pada tabel data_pribadi dan tunjangan.02 sec) Tipe Tabel pada MySQL Ingat pada saat anda membuat tabel kita meyisipkan perintah TYPE=’MyISAM’.  InnoDB Tabel tipe ini merupakan standar yang digunakan pada MySQL versi 4. Jenis ini lebih lambat daripada MyISAM namun memiliki banyak kelebihan jika digunakan pada transaksi.x. Karena tabel ini memiliki fasilitas COMMIT dan ROLLBACK.data_pribadi | optimize | status | OK | | karyawan.6 untuk daftar lengkapnya. Pada mysql prompt ketik query berikut mysql> OPTIMIZE TABLE data_pribadi. Untuk keperluan tersebut kita dapat menggunakan query OPTIMIZE TABLE. Jika tabel itu sudah fragment maka pengaksesan pun menjadi lambat. Itu berbarti tabel yang kita buat bertipe MyISAM. BLOB dan AUTO_INCREMENT.x dan dan 5.  ISAM Seperti yang dijelaskan diatas  HEAP Tabel tipe ini disimpan pada memori komputer. dan Mengakses MySQL Menggunakan PHP 158 .  BDB Tabel jenis ini cocok digunakan untuk transaksi. yang merupakan singkatan dari Indexed Sequential Access Method. Namun pada saat membuat tabel ini anda harus menentukan nilai MAX ROWS pada query CREATE TABLE. Selain MyISAM ada beberapa tipe tabel lagi. Tabel 3.sql. tunjangan. Tipe ini yang akan banyak kita gunakan. [ENTER] +-----------------------+----------+----------+----------+ | Table | Op | Msg_type | Msg_text | +-----------------------+----------+----------+----------+ | karyawan.

* TO satpam [ENTER] -> IDENTIFIED BY "satpam123". [ENTER] Output yang ditampilkan adalah seperti berikut +---------+-------------------------------------------+ | user | password | +---------+-------------------------------------------+ | root | *AF74DC9E71AF0EE54053466BB3BBE00336A5B4C3 | | root | *AF74DC9E71AF0EE54053466BB3BBE00336A5B4C3 | | satpam | *E44D241271A19F90FBC6DE8FA5BC6EDF596BD8EC | +---------+-------------------------------------------+ 3 rows in set (0. password FROM user. Query yang kita gunakan untuk keperluan privilege adalah GRANT. UPDATE. passwordnya kok berbeda? Bukan satpam123. Penggunaan root hanya diperlukan untuk kegiatan administrasi saja. Setelah anda berada pada DOS prompt. Password dari user satpam adalah satpam123. Tentu saja anda harus mengganti password yang lebih baik jika pada apliaksi sebenarnya. Kita akan membuat user baru yang bernama satpam. UPDATE. Karena saat ini anda masih login sebagai root anda masih bisa mengakses database mysql. Karena root memiliki semua hak (privilege) dalam memanipulasi database. Jadi saat login otomatis password yang anda ketikkan anda dienkrip menggunakan fungsi PASSWORD() sehingga hasilnya akan selalu sama. 0 rows affected (0. INSERT dan DELETE. Untuk mengetes apakah benar user satpam hanya memiliki privilege pada database karyawan dan query yang diperbolehkan hanya SELECT. GRANT privilege [KOLOM] ON database TO username [IDENTIFIED BY 'password'] [WITH GRANT OPTION]. dan Mengakses MySQL Menggunakan PHP 159 . Untuk keamanan password telah dienkrip menggunakan fungsi PASSWORD().. INSERT dan DELETE. phpMyAdmin. login kembali ke MySQL Monitor menggunakan user satpam seperti berikut C:\>mysql –u satpam –p [ENTER] Pada Enter Password ketikkan Satpam123 Enter password: ********* [ENTER] Bab 3 .00 sec). Struktur dasar gari query GRANT adalah sebagai berikut. INSERT..User Privilege Saat mengakses MySQL lewat PHP sangatlah riskan jika kita menggunakan root sebagai user.MySQL. User ini akan kita beri privilege SELECT. Untuk membuat privilege anda harus login terlebih dahulu sebagai root. Tapi. Dengan demikian kita perlu membuat user baru yang hanya memiliki hak atau privilege pada query-query tertentu saja. User satpam ini nantinya hanya punya wewenang pada database karyawan. [ENTER] mysql> SELECT user. [ENTER] Jika berhasil pesan yang ditampilkan adalah Query OK. Dan hanya boleh mengeksekusi keempat query seperti yang sudah disebutkan sebelumnya. Untuk melihat daftar user yang ada. UPDATE. Namun untuk login anda tetap menggunakan password satpam123. Keluarlah dari mysql prompt dengan menggunakan perintah \q [ENTER].00 sec) User satpam telah berhasil kita masukkan pada daftar user. Pada mysql prompt ketikkan query berikut mysql> GRANT SELECT. Nah karena saat ini privilege dari database karyawan hanya root yang memegangnya. Hal ini sudah kita lakukan. DELETE [ENTER] -> ON karyawan. sekarang ketikkan query berikut mysql> use mysql.

MySQL. [ENTER] ERROR 1142 (42000): DROP command denied to user 'satpam'@'localhost' for table 'data_pribadi' Betulkan! User satpam tidak memiliki privilege terhadap query DROP sehingga MySQL tidak mengijinkan penggunaan query ini. Namun untuk melihat apakah semua query dapat dijalankan pada database ini lakukan query DROP TABLE. [ENTER] Database changed Ternyata memang bisa. phpMyAdmin. ********** Bab 3 . Yang bener nih. Pada mysql prompt ketik query berikut mysql> use mysql. Kita akan coba mengakses database mysql yang bukan hak dari user ini.. dan Mengakses MySQL Menggunakan PHP 160 . Sekarang cobalah untuk mengakses database karyawan pada mysql prompt ketikkan mysql> use karyawan..! ya lakukan saja mysql> DROP TABLE data_pribadi.Sekarang anda sudah login tetapi bukan sebagai root melainkan sebagai satpam. [ENTER] ERROR 1044 (42000): Access denied for user 'satpam'@'%' to database 'mysql' Error tersebut menunjukkan kita tak mempunyai privilege untuk mengakses database mysql.

phpMyAdmin.MySQL. dan Mengakses MySQL Menggunakan PHP 161 .Bab 3 .

mengganti bahasa. Kali ini kita menggunakan media Web Browser seperti IE untuk keperluan administrasi database. Bab 3 . Gambar 3. dan Mengakses MySQL Menggunakan PHP 162 . melihat privilege dan sebagainya.x/.6.1: Tampilan utama phpMyAdmin Untuk mengakses phpMyAdmin buka browser anda dan arahkan ke http://localhost/webmaster/phpMyAdmin-2. Karena phpMyAdmin hanyalah alat untuk mempermudah manipulasi database. Tampilan utama dari phpMyAdmin dibagi dalam dua frame utama yaitu frame kiri dan frame kanan. Maka anda tidak akan kesulitan dalam menggunakan phpMyAdmin.1. Pada frame kiri kita dapat memilih database yang akan diedit dan menampilkan seluruh tabel yang ada pada database tersebut. Untuk itu materi yang harus anda kuasi kali ini meliputi: Mengenal phpMyAdmin Mengenal Berbagai Tab phpMyAdmin Mengenal phpMyAdmin Seperti yang pernah dijelaskan pada awal buku ini yaitu pada pendahuluan.1. phpMyAdmin. Penulis sendiri menggunakan phpMyAdmin versi 2. phpMyAdmin sering disertakan pada fasilitas web hosting untuk melakukan administrasi database. Tampilan utama dari phpMyAdmin dapat anda lihat pada gambar 3. Dimana x adalah versi yang anda gunakan sekarang. Pada frame sebelah kanan kita dapat membuat database baru.x. Jika pada hari sebelumnya anda berinteraksi dengan database MySQL menggunakan MySQL Monitor.MySQL.Hari Ke-12 Ikuti langkah-langkah berikut sebelum melajutkan materi pda hari ke dua belas Masuklah pada direktori C:\Apache2\htdocs\webmaster\Bab3\ Buat folder baru dan beri nama hari-12 phpMyAdmin Karena pada hari sebelumnya anda telah menguasai MySQL. phpMyAdmin merupakan aplikasi yang dibangun menggunakan script PHP dan digunakan untuk administrasi database pada MySQL.

Yang terakhir adalah gambar menambahkan FULLTEXT pada kolom. Sedangkan jika ada tabel yang anda pilih maka jumlah tab yang ada adalah sembilan tab. Tab Structure Untuk mengaktifkan kesembilan tab tersebut coba klik tabel data_pribadi. Link data_pribadi terletak dibawah pilihan daftar database. Gambar digunakan untuk memeberikan nilai unik pada kolom.Sekarang coba klik pada karyawan pada pilihan daftar database. Yang akan kita bahas adalah kesembilan tab ini. Export. untuk Gambar 3. SQL. Klik tabel data_pribadi maka akan muncul kolomkolom yang pernah kita buat yaitu kode_kar. Pada tab structure anda dapat mengubah struktur dari tabel. Search. Setelah itu anda dapat mengklik tombol Go. Seperti mengubah primary key.2 untuk lebih jelas Create new table on database karyawan: Name: Fields: Go Gambar 3.2: membuat tabel baru Mengenal Berbagai Tab phpMyAdmin Jika yang aktif hanya database dan anda belum memilih tabel maka tab yang ada hanya tujuh tab. Sedangkan untuk menghapus anda dapat mengklik gambar silang . nama_kar dan sebagainya. menghapus kolom dan sebagainya.MySQL. phpMyAdmin. Operation dan yang terakhir Drop. Lihat gambar 3. Query. Fields merupakan jumlah kolom yang akan dibuat.3: Struktur dari tabel data_pribadi Bab 3 . dan Mengakses MySQL Menggunakan PHP 163 . Gambar kunci dan masing-masing untuk memebuat primary key dan index. Ketujuh tab tersebut diantaranya Structure. Untuk mengedit struktur anda dapat mengklik gambar pensil . Lihat gambar 3. Anda dapat membuat tabel baru pada box Create new table on database karywan.3.

dan Mengakses MySQL Menggunakan PHP 164 . Lihat Gambar 3.5: hasil query dari query box Hasil query langsung ditampilkan secara descending berdasarkan gaji.MySQL.4: Query box dan import file pada tab struktur Pada bagian ini anda dapat melakukan query seperti layaknya di mysql prompt.4. phpMyAdmin. SELECT * FROM data_pribadi ORDER BY gaji DESC. Perintah query kita juga ditampilkan ulang pada bagian atas. Sedangkan dibawah query box anda dapat mengimport file SQL yang telah ada. Bab 3 . Gambar 3.5 Gambar 3. 30 oleh phpMyAdmin. Untuk percobaan coba ketikkan query berikut pada query box lalu klik Go. Output dari query diatas ditunjukkan seperti gambar 3.Jika anda terus scroll ke bawah anda akan menemukan Run SQL query/queries yaitu textarea untuk melakukan query seperti pada mysql prompt. Query ini secara otomatis ditambahkan klausa LIMIT 0.

Query otomatis yang digunakan untuk menampilkan adalah SELECT * FROM data_pribadi LIMIT 0.Tab Browse Pada tab ini seluruh data pada tabel akan ditampilkan. Apa yang anda ketikkan pada textbox tersebut akan dianggap sebuah kondisi setelah klausa WHERE.5 pada bahasan sebelumnya.% akan cocok dengan segala kata yang memiliki unsur “sur” didalamnya. Dan pada value kita mengisikan sur. Cara yang kedua adalah dengan memilih operator yang kita inginkan pada kolom tertentu. Terdapat pilihan hasil pencarian ditampilkan secara ascending atau descending pada Display Order. Sehingga query ini cocok dengan keempat record yang ada pada tabel data_pribadi. Jadi untuk tab ini saya tidak perlu menjelaskan ulang.. Lihat gambar 3.MySQL.%. Karena keempat record tersebut memiliki kata Surabaya yang berunsur sur. Maka kita perlu orang baru untuk menggantikannya. Hasil yang ditampilkan mirip dengan gambar 3. Jadi query lengkapnya adalah sebagai berikut SELECT * FROM data_pribadi WHERE kota LIKE "%sur%". Tab Insert Kita dapat menyisipkan record baru pada tab ini.4. Pertama anda harus memilih minimal satu kolom pada list Select fields (at least one). Add search conditions (body of the "where" clause): nama_kar="Web Janarko" Gambar 3. dan Mengakses MySQL Menggunakan PHP 165 .6 coba ketikkan nama_kar=”Web Janarko” lalu klik Go...6: Textbox pencarian kondisi Pada textbox seperti yang ditunjukkan gambar 3. Tab SQL Sebenarnya tab ini sama dengan apa yang ada pada tab structure seperti yang ditunjunkkan oleh gambar 3.8 Bab 3 .7 nama_kar varchar(30) latin1_swedish_ci LIKE %. Operator LIKE %.. Karena dulu kita pernah memecat seorang pegawai yang berjabatan sebagai PR.. 30.. operator yang kita gunakan adalah LIKE %. phpMyAdmin. Tab Search Pada tab ini anda dapat mencari suatu data yang ada pada tabel.% sur Gambar 3. Struktur kolom pada saat penyisipan sama dengan apa yang pernah kita buat.7 memilih kolom dan operator Pada gambar diatas kita memilih kolom kota. Data-data yang kita masukkan ditunjukkan gambar 3.

"Jl. Lihat gambar 3.9 Table maintenance Tab Operations Check table Analyze table Repair table Optimize table Flush the table ("FLUSH") Gambar 3. Jika anda mesih belum melihat daftar perubahan record baru klik tab browse. Dan hanya itulah tampilan tab empty. "PR".11 Gambar 3. Tab Empty Jika anda mengklik tab ini maka akan muncul window dialog peringatan seperti gambar 3. mengecek tabel dan menganalisa tabel.9 kita dapat melakukan optimalisasi tabel. Tab operations ini lebih mengarah ke arah maintenance (pemeliharaan) dan perubahan struktur database dan tabel. FLUSH tabel. memperbaiki tabel.9 Seperti yang anda pada gambar 3.8: Menambahkan record baru Setelah selesai klik tombol Go. phpMyAdmin. "Surabaya". Tab Drop Hampir sama dengan tab empty.MySQL. Susup 20".11 Bab 3 . Maka pada record baru tersebut akan dimasukkan pada tabel data_pribadi. "Porty". dan Mengakses MySQL Menggunakan PHP 166 .10 Gambar 3. Selain melukan maintenance kita juga dapat mengganti struktur tabel dari MyISAM ke InnoDB dan sebagainya. Disebelah kanan terdapat box kecil berjudul Table Maintenance.10 Jika anda mengklik tombol OK maka isi dari tabel data_pribadi akan dikosongkan. 3000000). Tab drop akan memunculkan dialog peringatan seperti gambar 3. Secara query SQL kita dapat memasukkan data diatas dengan menuliskan INSERT INTO data_pribadi VALUES ("006F".Gambar 3.

MySQL.Jika anda mengkil tombol OK maka tabel data_pribadi akan dihapus. ********** Bab 3 . dan Mengakses MySQL Menggunakan PHP 167 . phpMyAdmin.

Tanda pengenal untuk koneksi kita perlukan untuk menghandel adanya error saat melakukan koneksi. Untuk pembahasan ini materi yang harus anda kuasai antara lain: Langkah-langkah Mengakses Database Lewat PHP Melakukan Koneksi ke MySQL Memilih Database Melakukan Query pada Database Menampilkan Hasil dari Query Fungsi-fungsi lain Database yang akan kita gunakan masih tetap sama yaitu database karyawan yang pernah kita buat sebelumnya. Variabel yang kita gunakan sebagai tanda pengenal adalah $koneksi. "satpam123"). Untuk memberi tanda pengenal pada koneksi kita maka buatlah variabel untuk menampung fungsi mysql_connect(). Kita akan mengubah kebiasaan itu dengan mengganti metode penyimpanan kita dari file biasa ke database (MySQL). Namun untuk tiga paramater pertama yaitu server. Contoh berikut menunjukkan kita konek ke MySQL menggunakan username satpam dan password satpam123 yang pernah kita buat untuk database karyawan. Sebelum kita dapat melakukan manipulasi database. [boolean link baru]. Fungsi ini memiliki struktur dasar sebagai berikut mysql_connect ([string server]. Jika anda tidak menulis tiga parameter utama tersebut kemungkinan anda tidak dapat login ke MySQL.MySQL. mudah dan aman. untuk username yang digunakan adalah username yang diproses PHP saat itu. dan Mengakses MySQL Menggunakan PHP 168 . phpMyAdmin. Dan untuk password kosong. Langkah-langkah Mengakses Database Lewat PHP Melakukan koneksi ke MySQL menggunakan mysql_connect() Memilih database menggunakan mysql_select_db() Melakukan Query pada database menggunakan mysql_query() Menampilkan Hasil dari Query menggunakan mysql_fetch_array() Menutup koneksi menggunakan mysql_close() Langkah-langkah diatas merupakan materi fundamental yang harus anda kuasai dalam menghubungkan MySQL dengan PHP. "satpam". Ada perintah Melakukan Koneksi ke MySQL Bab 3 .Mengakses MySQL Menggunakan PHP Pada bab-bab sebelumnya kita menyimpan data menggunakan file biasa. ada beberapa langkah yang diperlukan untuk keperluan tersebut. [string username]. [string password]. username dan password sebaiknya kita tulis. Langkah-langkah tersebut antara lain: Untuk melakukan koneksi ke MySQL kita dapat menggunakan fungsi mysql_connect(). $koneksi = mysql_connect("localhost". Dengan menggunakan sistem database pengaksesan data pada aplikasi web kita menjadi lebih cepat. Kesemua parameter fungsi tersebut bersifat opsional artinya boleh ditulis boleh tidak. Ini dikarenakan jika tidak ditulis MySQL akan menggunakan localhost default. [integer flag]).

ia akan mengecek apakah sudah ada koneksi yang sudah terbuka. Yang paling sering kita gunakan nantinya adalah mysql_num_rows() untuk menghitung jumlah baris yang dikembalikan oleh query. phpMyAdmin. dan Mengakses MySQL Menggunakan PHP 169 . Sehingga variabel inilah yang akan kita masukkan pada parameter fungsi. Artinya sebelum membuat koneksi. [koneksi pengenal]). Array yang dihasilkan dari fungsi ini dapat bertipe string maupun numerik. Jika ya maka koneksi itu yang digunakan bukan membuat koneksi baru. "satpam". Lalu kita membuat variabel $hasil yang isinya adalah nilai dari fungsi mysql_query($query). Parameter kedua yaitu koneksi pengenal bersifat opsional. Dan mysql_fetch_array() untuk memecah setiap record pada baris menjadi array. Memilih Database Anda tentu ingat pada mysql prompt sebelum melakukan manipulasi pada database kita harus aktifkan dulu databasenya dengan perintah berikut mysql> use karyawan.yang hampir mirip dalam melakukan koneksi ke MySQL yaitu dengan menggunakan fungsi mysql_pconnect(). Karena yang akan kita pakai adalah database karyawan maka perintahnya adalah mysql_select_db("karyawan"). Cara yang lebih baik dan umum digunakan adalah menyimpan string query pada suatu variabel. [koneksi pengenal]). Dengan demikian jika ada kesalahan kita dapat dengan mudah mengatasinya. Kode diatas dapat kita ganti menjadi seperti berikut $koneksi = mysql_pconnect("localhost". Struktur dasar penulisan fungsi ini adalah mysql_select_db(string database. Pada PHP pun berlaku demikian. Jika tidak ditulis akan digunakan koneksi yang aktif saat ini. Melakukan Query pada Database Untuk melakukan query pada database fungsi yang dapat digunakan adalah mysql_query(). Sebelum melakukan query kita dapat mengaktifkan database menggunakan fungsi mysql_select_db().MySQL. Lihat contoh berikut $query = "SELECT * FROM data_pribadi ORDER BY gaji DESC". Hal ini tentunya menghemat waktu dan overhead server. Menampilkan Hasil dari Query Banyak fungsi yang tersedia untuk mengolah hasil dari query yang telah diterima. Struktur dasar dari fungsi mysql_query() adalah sebagai berikut mysql_query(string query. Pada kode diatas kita membuat variabel $query yang isinya query dari tabel data_pribadi. $hasil = mysql_query($query). "satpam123"). Jika kita memasukkan string query kedalam fungsi mysql_query() secara langsung hal itu akan kurang baik jika query yang kita berikan sangat panjang. Perbedaan antara mysql_connect() dan mysql_pconnect() adalah mysql_pconnect() menggunakan koneksi persistent. Kedua fungsi yang telah disebutkan sebelumnya masing-masing hanya memiliki satu parameter yaitu hasil query dari fungsi mysql_query(). Jadi jika kita ingin mengetahui jumlah baris yang dikembalikan maka kita dapat menuliskannya seperti berikut Bab 3 .

Dan demikian seterusnya hingga $data[5] atau $data[‘gaji’].MySQL. Untuk menutup suatu koneksi kita cukup menggunakan fungsi Sebenarnya menutup koneksi tidak mutlak harus dilakukan. Fungsi-fungsi tersebut diantaranya mysql_fetch_row() dan mysql_fetch_object(). Karena while akan terus mengulang blok kode hingga tercapainya elemen terakhir. Dengan demikian kita akan tahu berapa kali looping tersebut dilakukan. Penulisan looping for diatas dapat kita ganti dengan kode berikut while ($data = mysql_fetch_array($hasil)) { //proses data } Arti dari kedua looping ini sama persis. $baris<$jml_baris. Jadi untuk mengakses setiap atributnya anda dapat menggunakan $data->kode_kar. Beberapa fungsi berikut mungkin berguna bagi anda Bab 3 . phpMyAdmin. Selain fungsi mysql_fetch_array() ada beberapa fungsi lain yang dapat digunakan untuk memecah setiap data. Hal ini dikarenakan koneksi akan secara otomatis ditutup ketika script selesai dieksekusi. $baris++) { $data = mysql_fetch_array($hasil). //proses data } Pada kode diatas variabel $data otomatis menjadi array dari setiap kolom dari tabel data_pribadi. Kode di bawah ini menunjukkan penggunaan looping for untuk menampilkan data.$jml_baris = mysql_num_rows($hasil). $data->nama_kar dan seterusnya. Pada looping ini kita tidak harus mengetahui jumlah baris yang dikembalikan. Fungsi mysql_fetch_row() hampir sama dengan mysql_fetch_array() hanya saja pada mysql_fecth_row() index array hanya bertipe numerik. Alternatif lain adalah menggunakan looping while. dan Mengakses MySQL Menggunakan PHP 170 . Sedangkan mysql_fetch_object() akan membuat obejct berdasarkan baris pada setiap record. Jika sebelumnya $data telah anda definisikan sebagai berikut $data = mysql_fetch_object($hasil). Fungsi-fungsi Lain mysql_create_db() Selain berberapa fungsi yang kita gunakan untuk langkah-langkah mengakses database. Mengetahui jumlah baris diperlukan jika kita akan menampilkan data menggunakan looping for. Jadi $data[0] atau $data[‘kode_kar’] mewakili data yang ada pada kolom kode_kar pada baris yang aktif saat looping. Menutup Koneksi mysql_close(). Namun nampak penggunaan while lebih singkat dibanding for untuk kasus ini. for ($baris=0. Didalam looping baru kita menggunakan fungsi mysql_fetch_array() untuk memecah setiap record pada baris yang aktif saat looping.

?> Ingat kita masih pada hari ke-12. Jalankan pada browser anda arahkan alamatnya ke http://localhost/webmaster/Bab3/hari-12/lihat_db. "satpam123"). [koneksi pengenal]. // tampilkan hasil menggunakan looping for for ($baris=0.$data[$kolom].'</td>'. for ($kolom=0. $baris++) { $data = mysql_fetch_array($query). Untuk itu jalankan PHP_DESIGNER 2005 klik menu File-New-PHP untuk membuat file lalu ketik kode berikut <?php //lakukan koneksi ke MySQL @ $koneksi = mysql_connect("localhost". PENERAPAN TEORI MENGAKSES MYSQL MENGGUNAKAN PHP Untuk penerapan teori ini kita akan mencoba menampilkan record yang ada pada tabel data_pribadi dan memasukkan record ke tabel data_pribadi tersebut.'<table border="1" cellpadding="3" width="100%">' .MySQL. Dan yang satu lagi untuk memasukkan record baru pada tabel data_priabadi.php Bab 3 . if (!$koneksi) exit('Tidak bisa konek ke MySQL').'<tr bgcolor="#cccccc">' . dan Mengakses MySQL Menggunakan PHP 171 . echo '<tr>'. Fungsi ini memiliki struktur sebagai berikut mysql_create_db(string nama_database.php. "satpam". } echo '</table>' . } echo '</tr>'. $kolom++) { echo '<td>'. // pilih database karyawan mysql_select_db("karyawan"). phpMyAdmin. // tutup koneksi mysql_close(). // lakukan query pada database $query = mysql_query("SELECT * FROM data_pribadi ORDER BY gaji DESC"). Struktur dasar penulisannya pun sama seperti diatas yaitu mysql_drop_db(string nama_database. output dari script diatas akan terlihat seperti gambar 3.php. Satu untuk menampilkan record yang ada pada tabel data_pribadi.12: ouput file lihat_db.php">Masukkan record baru</a></p>'. // buat tabel echo '<h2>Database karyawan . // hitung jumlah baris yang dikembalikan $jml_baris = mysql_num_rows($query). $kolom<6.'<th>Jabatan</th><th>Gaji</th></tr>'. Parameter kedua yang berada pada kurung siku berarti bersifat opsional mysql_drop_db() Seperti terlihat seperti namanya drop maka sudah jelas fungsi ini untuk menghaspus database.12 Gambar 3.'<p><a href="insert_db. Jadi simpan pada direktori hari-12 dengan nama lihat_db. [koneksi pengenal]).tabel data_pribadi</h2>' .Untuk membuat database anda dapat mempergunakan fungsi ini. $baris<$jml_baris. Untuk itu kita akan membuat dua file.'<th>Kode</th><th>Nama</th><th>Alamat</th><th>Kota</th>' .

Maka dari pada harus menulis <td>. Setelah itu kita membuat variabel $jml_baris yang nilainya merupakan jumlah baris yang dihasilkan query SQL. switch ($proses) { case 'form_insert': ?> <h2>Memasukkan record baru ke tabel data_pribadi</h2><hr> <form action="insert_db. sampai $data[5].</td> enam kali berurut-turut kita gunakan looping for seperti berikut for ($kolom=0.php.. Jadi data ditampilkan mulai dari record yang memiliki gaji terbesar hingga terkecil. Artinya kita menampilkan data pada tabel data_pribadi diurut secara descending menurut gaji. Pada blok for ini kita memecah setiap kolom yang ada pada baris yang aktif menggunakan mysql_fetch_array($query) dan hasilnya kita masukkan pada variabel $data...php?proses=proses_insert" method="post"> <table border="0" cellpadding="3"> <tr><td>Kode: </td> <td><input type="text" name="kode" maxlength="4" size="4"></td></tr> <tr><td>Nama: </td> <td><input type="text" name="nama" size="30"></td></tr> <tr><td>Alamat: </td> <td><input type="text" name="alamat" size="40"></td></tr> 172 Bab 3 . Tanpa tanda @ memang benar pesan error kita tetap muncul tetapi sebelumnya PHP memberikan pesan peringatan file dan baris mana yang error. Kode yang ada pada blok ini akan diulang sebanyak $jml_baris. dan Mengakses MySQL Menggunakan PHP .. $data[0] sama dengan isi dari kolom kode_kar pada baris yang aktif saat eksekusi. if ($proses == '') $proses = 'form_insert'. Sehingga nilai dari data nantinya $data[0]. $data[1]. $kolom++) Pada blok looping diatas kita menuliskan array $data. Setelah ada database yang dipilih baru kita dapat melakukan query. for ($baris=0.PENJELASAN SCRIPT Kita memberi tanda @ didepan variabel $koneksi agar error yang terjadi karena kegagalan koneksi dapat kita handel sepenuhnya. $data[1] sama dengan nam_kar dan seterusnya. Selanjutnya kita memilih database yang digunakan dengan menggunakan fungsi mysql_select_db("karyawan"). Karena kita tahu jumlah kolom dari tabel ini adalah 6. Untuk alasan keamanan maka kita beri tanda @ agar pesan error dari PHP tidak dicetak ke layar. File berikutnya yang akan kita buat adalah file insert_db. $kolom<6.MySQL. $baris++) Untuk menampilkan seluruh record kita menggunakan looping for seperti diatas. Fungsi file ini adalah untuk menampilkan form insert dan memprosesnya. Klik File-New-PHP pada PHP DESIGNER 2006 lalu ketik kode berikut Script dari file insert_db.php <?php //dapatkan variabel data dari URL $proses = $_GET['proses']. Baru setelah itu kita tutup koneksi menggunakan mysql_close(). phpMyAdmin. $baris<$jml_baris. Karena $data juga memiliki index numerik maka kita tulis $data[$kolom]. Query yang kita gunakan adalah $query = mysql_query("SELECT * FROM data_pribadi ORDER BY gaji DESC")..

$kota = $_POST['kota'].php">Lihat database</a></p>'.php PENJELASAN SCRIPT Karena file ini dual-fungsi maka kita perlu menentukan aksi yang akan diproses. //akhir dari proses proses_insert } ?> Simpan dengan nama insert_db.13: tampilan file insert_db. '$nama'. $gaji = $_POST['gaji']. @ $hasil = mysql_query($query). //pilih database karyawan //lakukan query $query = "INSERT INTO data_pribadi VALUES ('$kode'.'. Dan jika proses tidak ada Bab 3 . '$jabatan'. Gambar 3. else echo 'Error: Tidak dapat memasukkan record baru ke database.'Kemungkinan query salah atau ada duplikat primary key. phpMyAdmin. } //lakukan koneksi ke MySQL @ $koneksi = mysql_connect('localhost'. $nama = $_POST['nama']. '$gaji')". 'satpam123'). $jabatan = $_POST['jabatan']. Kita memasukkan nilai dari proses pada URL ke dalam variabel $proses. mysql_select_db('karyawan').<br>' . dan Mengakses MySQL Menggunakan PHP 173 . '$kota'. Jalankan pada browser anda hasilnya akan seperti gambar 3.<tr><td>Kota: </td> <td><input type="text" name="kota" size="15"></td></tr> <tr><td>Jabatan: </td> <td><input type="text" name="jabatan" size="15"></td></tr> <tr><td>Gaji: </td> <td><input type="text" name="gaji" size="15" maxlength="10"></td></tr> <tr><td colspan="2"><input type="submit" value="Masukkan Data"></td></tr> </table> </form> <a href="lihat_db. break. 'satpam'.php">Lihat database</a> <?php break. '$alamat'. $alamat = $_POST['alamat']. //akhir dari proses form_insert case 'proses_insert': //buat variabel dari data form insert $kode = $_POST['kode'].MySQL. mysql_close().php.' record berhasil dimasukkan ke database' .13. //cek apakah ada field yang kosong foreach ($_POST as $field) { if ($field == '' || !isset($field)) // || sama dengan or exit ('Error: Ada field yang masih kosong'). if (!$koneksi) exit('Error: Tidak bisa konek ke MySQL server'). //tutup koneksi ke MySQL //tampilkan pesan hasil dari query if ($hasil) echo mysql_affected_rows().'<p><a href="lihat_db.

Titik berat penjelasan saya kali hanya meliputi kode pada proses_insert. Sebelum memasukkan data pada query kita mengecek dahulu apakah masih ada field yang kosong. Karena kita akan memasukkan record baru maka query yang kita gunakan adalah INSERT. Seperti biasa untuk menghandel proses yang akan dieksekusi kita gunakan statemen switch() dan case. dan Mengakses MySQL Menggunakan PHP 174 . Pengenal akan keberhasilan query telah kita buat yakni pada $hasil.. Ada fungsi yang nampaknya baru yaitu mysql_affected_rows()..php?proses=proses_insert. '$jabatan'. Karena variabel global $_POST merupakan array maka kita dapat menggunakan foreach untuk mengecek isinya seperti berikut foreach ($_POST as $field) Jadi $field merupakan seluruh elemen array yang didefinisikan sebelumnya.. Hasil dari query kita masukkan pada variabel $hasil. DELETE dan UPDATE. ********** Bab 3 . '$alamat'.' record berhasil dimasukkan ke database' . Pada cuplikan script diatas jika $hasil true maka eksekusi kode berikut. '$nama'. if ($hasil) echo mysql_affected_rows(). Pertama kita membuat variabel dari data yang kita terima dari form insert lewati metode POST. Selanjutnya kita melakukan koneksi ke MySQL dan memilih database. Fungsi ini akan mengembalikan jumlah baris yang dihasilkan dari query INSERT. Lihat cuplikan script berikut $query = "INSERT INTO data_pribadi VALUES ('$kode'. Jadi kita akan menampilkan berhasil atau tidak berdasar nilai dari $hasil.MySQL. Jika true maka query berhasil dieksekusi dan jika nilainya false maka ada error. phpMyAdmin.. Untuk proses form_insert tidak ada yang istimewa karena tujuan proses ini hanya menampilkan form yang isinya kemudian akan diproses oleh file insert_db. '$gaji')".. Jika isi dari $field kosong atau tidak diset maka keluar dari rutin script.atau kosong maka yang akan dijadikan proses default adalah proses form insert. '$kota'.

dan Mengakses MySQL Menggunakan PHP 175 . phpMyAdmin.Bab 3 .MySQL.

Berita ini juga menggunakan database sebagai media penyimpanan. phpMyAdmin. Beberapa fasilitas yang ada pada proyek ini sudah pernah kita terapkan sebelumnya. Dan untuk membaca secara lengkap user perlu mengklik link berita lengkap.7 berdasarkan letak direktori. Jadi boleh dibilang proyek kali ini merupakan proyek yang paling mendekati aplikasi web sebenarnya. Ini karena kita sudah tidak memakai file sebagai media penyimpanan. Selain itu kita juga menampilkan berita disebelah kiri halaman.php Menampilkan form registrasi member Bab 3 . Untuk keperluan manajemen berita. mengedit.7 Daftar file untuk proyek Java Kids Foundation Direktori Proyek-Bab3 Nama File Fungsi index. Untuk itu ikuti beberapa langkah konfigurasi sebelum kita mulai membuat proyek bab 3 ini. Jadi proyek bab 3 ini diharapkan selelsai dalam waktu dua hari. Hanya saja kali ini lebih kita kembangkan. ikuti langkah-langkah berikut: Buat folder baru pada C:\Apache2\htdocs\webmaster\Bab3\ Namai folder tersebut hari-13-14 Masuk pada direktori C:\Apache2\htdocs\webmaster\Bab3\hari-13-14\ Buat folder baru. namai folder tersebut Proyek-Bab3 Masuk pada direktori C:\Apahce2\htdocs\webamster\Bab3\hari-13-14\Proyek-Bab3\ Buat beberapa folder baru. Selain itu dapat pula digunakan untuk menghapus member atau buku tamu yang kita anggap “sampah”. Tabel 3.Hari Ke-13 & 14 Proyek Aplikasi Bab 3 – Java Kids Foundation Karena proyek ini source codenya cukup banyak maka kita akan membuatnya dalam waktu dua hari. Pada proyek ini juga terdapat fasilitas buku tamu dan form kontak kami. yaitu admin. dan Mengakses MySQL Menggunakan PHP 176 .php Menampilkan halaman utama dan cuplikan berita daftar. Yaitu hari ke tiga belas dan hari ke empat belas. Website ini nantinya memiliki sistem membership artinya terdapat member area dan untuk masuk user harus mengetikkan username dan password. Untuk proyek kali ini akan sangat berbeda dengan proyek-proyek sebelumnya. Tapi kita sekarang menggunakan sistem database. Kita sediakan control panel untuk admin. Fasilitas-fasilitas yang ada antara lain: Fasilitas member Fasilitas berita Buku tamu Kontak kami Lupa password Control panel untuk admin Control panel yang kita sediakan nantinya dapat kita gunakan untuk menghapus. member yang bergabung dan penghapusan entry buku tamu. dan menambah berita. Pada halaman utama berita yang kita tampilkan hanya cuplikannya saja yaitu sebanyak 25 kata pertama.MySQL. member. dan template Daftar file yang akan kita buat untuk aplikasi proyek bab 3 ini ditunjukkan pada tabel 3. Proyek bab 3 kali ini bertitel “Java Kids Foundation”.

email varchar(30) NOT NULL.saat dilakukan UPDATE pada tabel CREATE TABLE bukutamu ( id_bt int(4) NOT NULL auto_increment.php berita.sql Nama File index.hapus jika sudah ada DROP DATABASE IF EXISTS javakids.php Nama File index_var. komentar varchar(255) NOT NULL.php member.php Menampilkan form login Menampilkan dan memproses form buku tamu Menampilkan form kontak Menampilkan form lupa password Untuk membuat database dan tabel Direktori Proyek-Bab3\admin Fungsi Menampilkan form login atau menu utama untuk admin Mengedit.php javakids. kita mulai dari direktori admin.aktifkan database javakids USE javakids.php index. dan Mengakses MySQL Menggunakan PHP 177 .buat tabel bukutamu -.php kontak.MySQL. CREATE DATABASE javakids.File untuk membuat database -.php Nama File index.kolom id_bt bersifat auto increment artinya otomatis bertambah satu -. menambah dan menghapus berita Menghapus entry buku tamu Menampilkan halaman member area Menyimpan kumpulan fungsi Direktori Proyek-Bab3\template Fungsi Menyimpan kumpulan variabel untuk halaman non member Menyimpan kumpulan variabel untuk halaman member area Template untuk halaman non member Template untuk halaman member area Menyimpan class skin Meredirect ke halaman utama Direktori Proyek-Bab3\member Fungsi Menampilkan halaman utama member Mengupdate profil Untuk file pertama yang akan kita buat. PRIMARY KEY(username) ) TYPE='MyISAM'.php bukutamu. password varchar(16) NOT NULL.buat database bernama javakids -.php member_skin template.buat tabel admin CREATE TABLE admin ( username varchar(16) NOT NULL.php bukutamu.php member_var. phpMyAdmin. Sekarang Jalankan PHP DESIGNER 2006 klik menu File-New-SQL untuk membuat file SQL baru.php profil. Ketik kode berikut ini -.php java_skin.login. tgl_post varchar(20) NOT NULL. -. nama varchar(30) NOT NULL. -. -. Bab 3 .php fungsi.

alamat varchar(100) NOT NULL. -. Karena pada webhosting banyak digunakan phpMyAdmin maka kita akan menggunakan metode ini agar anda terbiasa.sql lalu klik Open. isi_berita text NOT NULL. Klik gambar yang terletak diatas daftar database. Jalankan browser anda arahkan ke http://localhost/webmaster/phpMyAdmin2. Kita mulai dengan membuat file yang isinya adalah kumpulan fungsi yang akan kita gunakan hampir diseluruh file yang kita buat.buat tabel member CREATE TABLE member ( username varchar(16) NOT NULL. if (!$koneksi) return false. Selanjutnya kita akan membuat file yang membangun sistem Control Panel untuk admin.sql.MySQL. Simpan pada direktori Proyek-Bab3\admin\ dengan nama javakids. Seperti yang pernah kita bahas untuk mengeksekusi file SQL kita dapat menggunakan MySQL Monitor atau phpMyAdmin. PRIMARY KEY(username) ) TYPE='MyISAM'.x ganti x dengan versi anda. PRIMARY KEY(id_berita) ) TYPE='MyISAM'. $user='javauser'.x.PRIMARY KEY(id_bt) ) TYPE='MyISAM'. nama varchar(30) NOT NULL. Setelah muncul window klik tombol tab Import files pada query box klik tombol browse arahkan ke C:\Apache2\htdocs\webmaster\Bab3\hari-13-14\Proyek-Bab3\admin\ pilih javakids. $db='javakids') { @ $koneksi = mysql_connect($localhost. } //fungsi untuk login Bab 3 . -. phpMyAdmin.php <?php // fungsi untuk koneksi ke MySQL function konek_db($localhost='localhost'. kodepos int(7) NOT NULL. $pass='pas123'. 'javakids123'). jdl_berita varchar(75) NOT NULL.masukkan username dan password untuk admin INSERT INTO admin VALUES ('admin'. tgl_berita varchar(12) NOT NULL. email varchar(30) NOT NULL. mysql_select_db($db). -. dan Mengakses MySQL Menggunakan PHP 178 . Langkah yang terakhir klik tombol Go untuk memproses file. password varchar(16) NOT NULL.buat tabel news CREATE TABLE news ( id_berita int(4) NOT NULL auto_increment. $user. kota varchar(20) NOT NULL. $pass). Jalankan PHP DESIGNER 2006 klik File-New-PHP lalu salin listing kode berikut Script dari file fungsi.

session_destroy(). } return true. Bab 3 . $email)) return true.]+$'. } else return false. // session login kosong } ?> Simpan pada direktori Proyek-Bab3\admin\ dengan nama fungsi. } // cek session function cek_session($nama_session) { if (isset($_SESSION[$nama_session])) return true. dan Mengakses MySQL Menggunakan PHP 179 . $hasil = mysql_query($query). $password) { $query = "SELECT * FROM $tabel WHERE username='$username' AND password='$password'". } // cegah dari SQL Injection dan cross site scripting function filter_str($string) { $filter = ereg_replace('[^a-zA-Z0-9_]'. else return false. // cek jumlah baris yang dikembalikan if (mysql_num_rows($hasil) > 0) //berarti cocok return true.[a-zA-Z0-9\-\. } // cek kevalidan email function cek_email($email) { // fungsi untuk mengecek kevalidan email if (ereg('^[a-zA-Z0-9_\-]+@[a-zA-Z0-9\-]+\. return true. } //cek setiap field apa ada yang kosong function cek_field($var) { foreach ($var as $field) { if ($field == '' || !isset($field)) return false. return $filter.php. $username.function login($tabel. $string).MySQL. else return false. phpMyAdmin. ''. // session login terisi else return false. } // fungsi untuk logout function logout($nama_session) { if (isset($_SESSION[$nama_session])) { unset($_SESSION[$nama_session]).

angka dan tanda _ (underscore). Maka suatu waktu mungkin tabel atau user yang kita gunakan berbeda. Fungsi selanjutnya adalah fungsi untuk login yaitu login(). Sekedar mengingatkan fungsi ini mengecek kevalidan email dengan menggunakan fungsi ereg(). Jadi jika user mengetikkan karakter ‘ atau > pada form input. Jadi jika masih ada field yang kosong maka kembalikan nilai false. Jika kita menggunakan fungsi ini pada halaman member maka kita isikan ‘member’ pada paramater pertama yang merupakan tabel member. Fungsi ini dapat kita gunakan untuk login member maupun admin karena memiliki tiga paramater.php. Klik menu File-New-PHP pada PHP DESIGENR 2005 lalu ketik kode berikut Script dari file index. phpMyAdmin. dan Mengakses MySQL Menggunakan PHP 180 . Jadi kita tinggal memasukkannya pada parameter tanpa harus mengubah kode. Yaitu tabel. Setelah terhubung dengan MySQL kita tentu harus memilih database maka kita panggil fungsi mysql_select_db(). Manipulasi biasanya dilakukan pada form input yang menyediakan textbox. Jika diterjemahkan fungsi tersebut adalah sebagai berikut setidaknya awali dengan karakter alpabet atau angka atau tanda – lalu tanda @ lalu alpabet atau angka lalu titik lalu albabet atau angka atau titik hingga akhir string. File ini memiliki banyak fungsi diantaranya menyediakan login bagi admin. Tanda ^ didalam kurung siku pada fungsi ereg_replace() menandakan yang tidak termasuk. Pada fungsi ini kita mengganti karakter yang bukan alpabet. fungsi logout. Jika berhasil maka nilainya true akan tetapi jika gagal melakukan koneksi kembalikan nilai false. Pada blok fungsi konek_db() kita membuat variabel $koneksi yang isinya adalah nilai yang dikembalikan dari fungsi mysql_connect().SQL Injection merupakan suatu metode untuk mengeksploitasi sistem dengan cara memanipulasi query SQL. Jika session terisi maka kembalikan nilai true selain itu kembalikan nilai false. Fungsi cek_field() merupakan fungsi yang berguna untuk mengecek setiap field yang ada pada form input. Secara otomatis dia dapat mengakses halaman admin area. file berikutnya yang akan kita buat adalah index. Karena jika nama sessionnya sama maka jika user dapat login di member area. dan juga menampilkan menu untuk control panel jika admin berhasi login. Kita memberikan fungsi ini empat paramater yang semuanya bersifat opsional. username dan password yang digunakan. Maka secara otomatis akan diganti dengan karakter kosong. Database yang digunakan adalah javakids jika user tidak menentukannya dari parameter. Fungsi selanjutnya yaitu filter_str() bertujuan untuk mencegah SQL injection yaitu metode yang digunakan untuk memanipulasi perintah SQL. Kita menggunakan looping foreach untuk mengecek setiap field. Karena data yang kita ambil dari form input menggunakan variabel $_POST yang merupakan array. Karena itu kembalikan nilai true selain itu false.php <?php Bab 3 . Selanjutnya kita akan melakukan query untuk mencocokkan data. Mengapa kita memberikan parameter ini? Karena fungsi ini menggunakan database dan tabel. Hal ini bertujuan agar session pada admin area berbeda dengan member area. Nama session ini ditentukan oleh user ketika memanggil fungsi ini.MySQL. Fungsi cek_email() sudah pernah kita gunakan pada bab-bab sebelumnya. Kembali ke proyek kita. Untuk fungsi cek_session() kita mengecek isi session dengan menggunakan paramater $nama_session. PENJELASAN SCRIPT Pada fungsi yang pertama yaitu konek_db(). Jika jumlah baris yang dikembalikan lebih dari satu maka username dan password cocok.

'<a href="javascript: history. Klik <a href="index. break. switch ($proses) { case 'login': // titik dua bukan titik koma // cek apakah user sudah login atau belum if (!cek_session('admin')) { echo '<h3>JKF Admin Area.php">Login</a> dulu. // ambil data dari URL yaitu proses $proses = $_GET['proses'].MySQL. } break. $password)) echo 'Username atau password salah!.'<td><input type="password" name="password"></td></tr>' .php">di sini</a> untuk masuk ' . <br><br>' .php"> Login</a> lagi'.'<tr><td>Password: </td>' .'<tr><td><input type="submit" value="LOGIN"></td></tr>' .'. if ($proses == '') $proses = 'login'.'<p>Silahkan pilih link proses berikut:</p>' .back()"><< Kembali</a>'. dan Mengakses MySQL Menggunakan PHP 181 . $username.php?proses=logout">Logout</a><br>'. // buat session bernama admin echo 'Login berhasil.php">Manaje member</a><br>' . // akhir dari proses logout Bab 3 . phpMyAdmin. $password = filter_str($_POST['password']).'<a href="index.'<a href="bukutamu. include('fungsi.php'). <a href="index.'<td><input type="text" name="username"></td></tr>' . // panggil fungsi login untuk mencocokan data konek_db().php?proses=proses_login" method="post">' . // akhir dari proses proses_login case 'logout': if (!logout('admin')) echo 'Tidak bisa logout.'<a href="member. } else { echo '<h3>Welcome to JKF\'s Admin Area</h3>' .php">Manaje buku tamu</a><br>' . } break. Please Login</h3>' . <a href="index.'<tr><td>Username: </td>' . // akhir dari proses login case 'proses_login': // cegah SQL Injection $username = filter_str($_POST['username']). // cegah cross site scripting $proses = filter_str($proses).'<table border="0" cellpadding="0">' . else { // buatkan session karena berhasil login $_SESSION['admin'] = $username.// mulai session session_start().'</table></form>'. else echo 'Anda telah logout dari sistem.'admin area.php">Manaje berita</a><br>' .'<form action="index.</a>'.'<a href="berita. // koneksikan ke MySQL Server if (!login('admin'.

$password)) maka artinya jika ada kesalahan atau nilainya false(username atau password tidak cocok). angka dan _ (underscore). sebaliknya jika cocok dengan yang ada di database buatkan session yang bernama admin yang isinya username admin. Selanjutnya kita mengambil data dari URL yaitu data proses. $username. phpMyAdmin. Kita juga memanggil fungsi filter_str(). Pada case yang pertama yaitu 'login' kita mengecek terlebih dahulu session admin dengan menggunkana cek_session('admin'). dan Mengakses MySQL Menggunakan PHP 182 . Untuk mencegah SQL injection kita juga memanggil fungsi filter_str($_POST['username']). Untuk mencocokkan username dan password kita memanggil fungsi login(). Pada blok kode case ini kita memproses form login yang dikirim dari halaman login admin.} // akhir dari switch ?> Simpan pada direktori Proyek-Bab3\admin\ dengan nama index. Kondisi yang ditangani oleh case tergantung dari isi proses pada URL. Data yang kita dapat dari URL akan disaring dan yang tersisa adalah alpabet.php ditunjukkan oleh gambar 3. Pertama kita membuat variabel untuk menampung data dari form dengan menggunakan $_POST. Apakah sudah terisi atau belum.14 dan 3. PENJELASAN SCRIPT Karena file-file administrator ini berhubungan dengan session maka pada awal file kita panggil fungsi session_start(). Catatan: untuk login gunakan username admin dan password javakids123 Gambar 3. Tampilan file index. Jika sudah maka admin telah login maka tampilkan control panel dan jika belum maka admin belum login untuk itu tampilkan form login.MySQL. Untuk menghandel setiap proses kita gunakan statemen switch() dan case.php. Setelah itu kita memanggil fungsi konek_db() untuk mengkoneksikan PHP dengan MySQL. Fungsi ini kita gunakan untuk mencegah cross site scripting yaitu manipulasi URL untuk mendapatkan data. Hal ini kita lakukan untuk memfilter setiap karakter yang dimasukkan user. Arti dari ‘admin’ pada parameter pertama menunjukkan tabel yang ingin kita gunakan.15.14: Form login untuk admin Case yang selanjutnya yaitu 'proses_login'. Bab 3 . Jika proses kosong maka tentukan proses yang berlangsung sebagai login. Karena didahului if (!login('admin'. Jika tidak cocok jangan buatkan session.

Jika ada entry-entry yang kita anggap “sampah” kita dapat menghapusnya dari halaman ini. Untuk itu buatlah file PHP baru dengan mengklik File-NewPHP lalu ketik listing kode berikut Script dari file member.'<table border="1" cellpadding="4" style="border-collapse:collapse">' . dan Mengakses MySQL Menggunakan PHP . phpMyAdmin.'<tr bgcolor="#cccccc">' .MySQL. // cek user apakah sudah login atau belum if (!cek_session('admin')) echo 'Anda belum login. Silahkan <a href="index.php'). Pada blok kode case ini kita menggunakan statemen if (!logout('admin')) untuk mengecek kondisi.15: Control panel sederhana untuk admin Case yang terakhir yaitu logout.php">Login</a> dulu'. else { switch ($proses) { case 'view': $hasil = mysql_query("SELECT * FROM member ORDER BY nama").com. Jadi jika session admin kosong atau belum diset.Gambar 3. if ($proses == '') $proses = 'view'. // cegah cross site scripting $proses = filter_str($proses). maka admin belum login. Selain itu berarti admin telah login jadi hapus semua session dan hancurkan dengan session_destroy(). File berikut ini berguna untuk memanaje member yang telah mendaftar di website javakidsfoudnation. // koneksikan ke MySQL server $proses = $_GET['proses'].'<th>Username</th><th>Password</th><th>Nama</th><th>Email</th>' 183 Bab 3 . include('fungsi. // tampilkan semua member echo '<h2>Daftar Member</h2><hr>' .php <?php // mulai session session_start(). konek_db().

Kemudian kita membuat header/kepala dari tabel.$data['username']. Agar tidak ikut diulang dalam looping maka kita letakkan header tabel ini diluar kode looping while.php dapat anda lihat seperti gambar 3. else echo 'Data berhasil dihapus dari database.php?proses=hapus&username='.$hapus. break..'<p><a href="index. } echo '</table>' . dan Mengakses MySQL Menggunakan PHP 184 .'</tr>'. Kita Bab 3 . break.$data[$i].16 Cross Site Scripting merupakan salah satu metode untuk mengeksploitasi sistem.'">' .php. <a href="member.'Hapus</a>'. $i<7.php">Halaman Utama</a>'. Tampilan file member. // hapus dari database $hasil = mysql_query("DELETE FROM member WHERE username='$user'"). Pada query SQL diatas kita akan mendaftar member yang ada urut berdasarkan nama mereka secara ascending. Untuk menampilkan semua daftar member kita gunakan looping while seperti berikut while ($data = mysql_fetch_array($hasil)) Blok kode yang ada pada looping while akan dieksekusi sebanyak jumlah baris yang dikembalikan oleh query SQL diatas sebelumnya. // lakukan looping untuk menulis semua field for ($i=0.'</td>'.'<th>Alamat</th><th>Kode Pos</th><th>Kota</th><th>Hapus?</th>' . Kita membuat variabel $hapus yang isinya adalah link proses hapus dan username yang isinya adalah username yang akan dihapus. Cara yang digunakan biasanya dengan memasukkan karakter-karakter tertentu pada URL.". // akhir dari proses view case 'hapus': // dapatkan username yang akan dihapus $user = $_GET['username']. // akhir dari proses hapus } // akhir dari switch } // akhir dari else mysql_close().'</td>' . $i++) { echo '<td>'. PENJELASAN SCRIPT Pada file member. while ($data = mysql_fetch_array($hasil)) { $hapus = '<a href="member. // tutup koneksi ?> Simpan pada direktori Proyek-Bab3 dengan nama member.MySQL. Dan proses hapus untuk menghapus member. phpMyAdmin.'</tr>'.php">Lihat</a>'. if (!$hasil) echo "Error: gagal menghapus data dari database. echo '<tr>'. Pada proses view kita melakukan query terlebih dahulu untuk mendapatkan daftar member yaitu dengan perintah $hasil = mysql_query("SELECT * FROM member ORDER BY nama").php ini kita memiliki dua proses yaitu proses view untuk menampilkan daftar member. } echo '<td>'.

konek_db(). Hampir sama dengan file member. Setelah looping for kita tambahkan satu kolom yang isinya adalah link hapus. else { switch ($proses) Bab 3 . dan Mengakses MySQL Menggunakan PHP 185 . include('fungsi. Gambar 3.php'). Kita menghandel hasil dari query ini menggunakan if (!$hasil). Case yang ke dua yaitu hapus.php">Login</a> dulu'. Pada case ini kita mengambil data yaitu username dari URL untuk menentukan record yang akan dihapus. Langsung saja klik File-New-PHP lalu salin kode berikut ini Script dari file bukutamu. Maka kita gunakan looping for untuk mempersingkat kode.php <?php // mulai session session_start(). Jadi isi dari $data nantinya adalah $data[0]. //cek user apakah sudah login atau belum if (!cek_session('admin')) echo 'Anda belum login. if ($proses == '') $proses = 'view'. phpMyAdmin.membuat data pada URL seperti ini agar kita dapat menentukan user mana yang akan dihapus ketika dilakukan query penghapusan. $data[0] adalah kolom username. // cegah cross site scripting $proses = filter_str($proses). Langkah berikutnya tentu adalah melakukan query penghapusan seperti berikut $hasil = mysql_query("DELETE FROM member WHERE username='$user'"). Silahkan <a href="index.MySQL.php file berikut ini juga memiliki dua proses yaitu view untuk melihat daftar buku tamu dan hapus untuk menghapus entry buku tamu. Jika ada kesalahan atau nilainya false tampilkan pesan gagal selain itu tampilkan pesan berhasil. // koneksikan ke MySQL server $proses = $_GET['proses'].16: Daftar member pada control panel Karena kita tahu jumlah kolom atau field pada tabel member adalah 7. $data[1] sampai $data[6]. Kita juga menfilter untuk data yang kita ambil menggunakan filter_str($_GET['username']). $data[1] adalah kolom password dan seterusnya.

$data['email']. Lalu kita lalukan query DELETE untuk menghapus record buku tamu sebagai berikut $hasil = mysql_query("DELETE FROM bukutamu WHERE id_bt='$id'").17. else echo 'Data berhasil dihapus.php. Pada setiap record kita tambahkan sebuah link Hapus yang isi prosesnya adalah hapus dan variabel id yang isinya merupakan id_bt dari record buku tamu yang akan dihapus.$data['nama']. Kemudian untuk menampilkan semua recordnya kita gunakan looping while seperti yang pernah kita lakukan pada file member. Output dari file ini akan terlihat seperti yang ditunjukkan gambar 3.php">Halaman utama</a></p>'. dan Mengakses MySQL Menggunakan PHP 186 . break. Jika tidak berhasil tampilkan pesan error selain itu tampilkan pesan bahwa proses penghapusan berhasil.'<a href="bukutamu. // akhir dari proses view case 'hapus': // dapatkan id untuk bukutamu yang akan dihapus $id = $_GET['id']. // lakukan query DELETE $hasil = mysql_query("DELETE FROM bukutamu WHERE id_bt='$id'"). Query SQL yang kita gunakan adalah $hasil = mysql_query("SELECT * FROM bukutamu ORDER BY id_bt DESC").'">Hapus</a> ' . } echo '<p><a href="index. Pada case hapus kita mengambil data pada variabel id yang ada pada URL. // tutup koneksi ?> Simpan pada direktori Proyek-Bab3 dengan nama bukutamu. phpMyAdmin.'<br>' .'<hr>'. // akhir dari proses hapus } // akhir dari switch } // akhir dari else mysql_close(). Artinya kita menampilkan record berdasarkan id_bt diurut secara descending(besar ke kecil).php?proses=hapus&id='. <a href="bukutamu.php maka kali ini saya hanya akan menjelaskan poin-poinnya saja.{ case 'view': $hasil = mysql_query("SELECT * FROM bukutamu ORDER BY id_bt DESC").MySQL. if (!$hasil) echo 'Error: tidak dapat menghapus data dari database'.'Isi: '.'Email: '.$data['id_bt']. // tampilkan semua bukutamu echo '<h3>Daftar Buku Tamu</h3><hr>'.'<br>' .php. while ($data = mysql_fetch_array($hasil)) { echo 'Nama: '.'<br>' . PENJELASAN SCRIPT Karena sistem kerja dari file ini mirip dengan file sebelumnya yaitu member.php">Lihat</a>'. Pada proses view intinya kita akan menampilkan seluruh isi dari tabel bukutamu. break.$data['komentar']. Bab 3 .

else { switch ($proses) { case 'view': echo '<h1>Daftar Berita</h1><hr>'. while ($data = mysql_fetch_array($hasil)) { echo $data['jdl_berita']. // cek apakah user telah login atau belum if (!cek_session('admin')) echo 'Anda belum login.!. Untuk itu daripada membuat banyak file akan lebih efisien jika kita menyatukan semua proses pada satu file. konek_db().17: Tampilan buku tamu pada control panel File berikut ini memiliki cara kerja yang cukup berbeda dengan dua file sebelumnya yaitu member. Jumlah file kita akan semakin banyak.php dan bukutamu. // koneksikan ke MySQL server // ambil data dari URL $proses = $_GET['proses'].$data['tgl_berita']. Silahkan <a href="index.Gambar 3. Jika kita menyediakan file untuk tampilan form dan file untuk memproses form secara sendirisendiri.. dan Mengakses MySQL Menggunakan PHP 187 . if ($proses == '') $proses = 'view'. //cegah cross site scripting $proses = filter_str($proses).' [ Posted: '.' ] ' Bab 3 . Dengan menghandel banyak proses sekaligus kita dapat meminimalisir jumlah file untuk proyek kita.php').MySQL.php <?php // mulai session session_start(). Wah rakus benar file ini.php memiliki enam proses sekaligus.php">Login</a> dulu'. phpMyAdmin..php. include('fungsi. $hasil = mysql_query("SELECT * FROM news ORDER BY id_berita DESC"). File berita. Untuk membuat file ini buat file PHP baru pada PHP DESIGENER 2005 klik File-New-PHP lalu ketik kode berikut Script dari file berita.

php">Halaman utama</a> <a href="' . tgl_berita='$tgl' WHERE id_berita='$id'".'Judul: <br>' .. // lakukan update $query = "UPDATE news SET jdl_berita='$judul'.'<textarea name="isi" cols="70" rows="10">' .php?proses=edit&berita='.php">Tampilkan Berita</a></p>'.'</textarea><br><br>' .php">Halaman Utama</a> <a href="berita.'Isi Berita: <br><textarea name="isi" cols="70" rows="10"></textarea><br><br>' . phpMyAdmin.php?proses=proses_tambah" method="post">' .'Judul: <br><input type="text" name="judul" size="50"><br><br>' .$data['tgl_berita']. if (!$hasil) echo 'Error: Gagal mengupdate database'. // akhir dari proses tambah Bab 3 .$data['id_berita'].'<form action="berita. $isi = $_POST['isi']. $data = mysql_fetch_array($hasil).' [ <a href="berita.$data['id_berita'].'<input type="submit" value="TAMBAH BERITA">' .php">Halaman Utama</a> <a href="berita.MySQL.'\'><br><br>' . // cegah cross site scripting $id = filter_str($id). $tgl = $_POST['tgl'].'</a> ]<br><br>'. // akhir dari proses edit case 'proses_edit': $id = $_POST['id']. break. break.'</form>' . break.'</a> ]' .'<input type="text" name="tgl"> Format: DD-MM-YYYY <br><br>' .'"><br><br>' . } echo '<a href="index.php?proses=tambah">Tambah Berita</a>'.php?proses=hapus&berita='.'<form action="berita. <a href="berita.'">' .'berita.'">EDIT' . // akhir dari proses proses_edit case 'tambah': echo '<h2>Tambah Berita</h2><hr>' .'<input type="hidden" name="id" value="'.'<input type="submit" value="EDIT BERITA"><br>' .'<p><a href="index.$data['id_berita']. isi_berita='$isi'.$data['isi_berita'].php">Tampilkan berita</a>'. // tampilkan form edit echo '<h2>Edit Berita</h2><hr>' .php?proses=proses_edit" method="post">' . $judul = $_POST['judul'].'<input type="text" name="judul" size="50" value=\''.'</form>' . $hasil = mysql_query($query). $hasil = mysql_query("SELECT * FROM news WHERE id_berita='$id'"). dan Mengakses MySQL Menggunakan PHP 188 .'Tanggal Berita: <br>' .'">HAPUS' .'<input type="text" name="tgl" value="'. break. else echo 'Berita berhasil diupdate. // akhir dari proses view case 'edit': // dapatkan id berita yang diedit $id = $_GET['berita'].'<p><a href="index.'Tanggal berita: <br>' .$data['jdl_berita'].' [ <a href="berita.'Isi berita: <br>' .php">Tampilkan Berita</a></p>'.

dan Mengakses MySQL Menggunakan PHP 189 .case 'proses_tambah': $judul = $_POST['judul']. if (!$hasil) echo 'Error: Tidak dapat memasukkan berita ke database.MySQL. // cegah cross site scripting $id = filter_str($id). Bab 3 . isi_berita. PENJELASAN SCRIPT Pada proses pertama yaitu view kita menampilkan seluruh berita yang ada pada tabel news dengan query sebagai berikut $hasil = mysql_query("SELECT * FROM news ORDER BY id_berita DESC").19. // akhir dari proses proses_tambah case 'hapus': // dapatkan id dari berita yang akan dihapus $id = $_GET['berita']. '$tgl')". Lalu untuk menampilkan semua hasil kita gunakan looping while. tgl_berita) VALUES ('$judul'. break.'. $isi = $_POST['isi']. $tgl = $_POST['tgl']. // cek semua field apa sudah terisi if (!cek_field($_POST)) exit('Error: masih ada field yang kosong'). // tutup koneksi ?> Simpan pada direktori Proyek-Bab3 dengan nama berita. // lakukan query $hasil = mysql_query("DELETE FROM news WHERE id_berita='$id'").php">Lihat</a>'. // masukkan data ke database $query = "INSERT INTO news (jdl_berita. else echo 'Berita berhasil dihapus. Kita juga memberi link EDIT dan HAPUS disebelah setiap berita. Lihat gambar 3.php. Untuk link edit isi dari proses pada link adalah edit dan berita adalah id_berita yang diklik. $hasil = mysql_query($query). '$isi'. // akhir dari proses hapus } // akhir dari switch } // akhir dari else mysql_close().'.php">Lihat</a>'. Sedangkan untuk link hapus isi dari proses adalah hapus dan berita adalah id_berita yang diklik. <a href="berita. if (!$hasil) echo 'Error: Gagal menghapus berita. else echo 'Berita berhasil ditambah ke database.18 dan 3. phpMyAdmin. break. <a href="berita.

Karena perubahan yang akan dilakukan hanya isi pada suatu record. khusus untuk pada textbox judul valuenya kita beri escaping karakter \’. Untuk itu kita buat variabel untuk menampung setiap data yang dikirim. Proses pada case proses_edit akan memproses data yang dikirim dari form edit berita.MySQL. Proses ini akan aktif jika user mengklik link EDIT disebelah kanan judul iklan. Isi dari atribut ini kita ambil dari hasil query $hasil = mysql_query("SELECT * FROM news WHERE id_berita='$id'"). Ini berguna jika ada judul berita yang memiliki tanda “ petik dua. Query yang kita tuliskan adalah sebagai berikut Bab 3 .Gambar 3. Pada query diatas kita memilih berita yang akan diedit berdasar pada id_berita yang nilainya kita dapatkan dari variabel id pada URL saat user mengklik link EDIT. Karena kita tahu hasil yang akan dikembalikan hanya satu record maka kita tidak perlu melakukan looping. Jadi isinya akan kosong. dan Mengakses MySQL Menggunakan PHP 190 . Maka kita lakukan query UPDATE untuk merubah isi dari record tersebut.18: Daftar berita pada control panel Gambar 3.19: Form tambah berita pada control panel Proses case selanjutnya yaitu edit. Kita lalu menyediakan form yang mirip dengan form tambah berita hanya saja kita menambahkan atribut value pada setiap field. Tanpa adanya escaping karakter \’ HTML menganggap tanda “ pada judul berita akan dianggap tanda penutup. phpMyAdmin.

File pertama yang akan kita bahas adalah file yang me-redirect lokasi jika user mencoba membuka direktori template pada URL.php <?php // redirect ke halaman utama header('Location: . Pada query SQL diatas kita memasukkan data hanya pada kolom jdl_berita. Jadi setiap ada record baru yang dimasukkan pada tabel maka nilai dari kolom ini otomatis ditambah satu. $query = "INSERT INTO news (jdl_berita. isi_berita dan tgl_berita. phpMyAdmin. Sedangkan pada proses_tambah kita mengambil data dari form tambah berita dengan metode POST. Fungsi yang kita gunakan untuk meredirect adalah header(‘Location: . tgl_berita='$tgl' WHERE id_berita='$id'". Query diatas berarti kita mengupdate isi dari judul.php. dan Mengakses MySQL Menggunakan PHP 191 . tgl_berita) VALUES ('$judul'.} td{font-family: verdana../index. File berikutnya adalah file yang menjadi dasar tampilan dari semua halaman non member yaitu file java_skin.php). Klik Menu File-New-PHP untuk membuat file PHP baru. '$tgl')". Fungsi header() berguna untuk mengirimkan HTTP header kedapa browser. font-size: 11px. Tanpa kita redirect user dapat melihat daftar dari file yang berada pada direktori ini tentu merupakan masalah security. sebelumnya ingat kembali tipe data dari kolom id_berita yaitu auto_increment. ?> Simpan pada direktori Proyek-Bab3\template\ dengan nama index. Id berita ini kita POST menggunakan metode hidden artinya tidak tampak dilayar browser. font-size: 11px} table{border-collapse: collapse.. Kode ini hanya berfungsi untuk menampilkan form tambah berita.MySQL. Jika user coba membuka direktori template lewat browser maka secara otomatis halaman yang dipanggil index. Mengapa kita tidak mengisi data pada kolom id_berita?.$query = "UPDATE news SET jdl_berita='$judul'. isi_berita='$isi'. isi dan tanggal berita berdasarkan id_berita tersebut. File ini sebenarnya hanya terdiri kode HTML saja.php pada direktori Proyek-Bab3. Akhir dari file yang berada pada direktori Proyek-Bab3\admin\ File-file yang akan kita bahas berikutnya adalah file pada direktori template.php pada Proyek-Bab3.php').php <html> <head> <title>Java Kids Foundation</title> <style> body{font-family: verdana. Karena isinya Location maka fungsinya untuk me-redirect halaman. PENJELASAN SCRIPT Fungsi file ini adalah untuk me-redirect lokasi halaman ke index. Pada proses case tambah tidak ada yang istimewa. '$isi'. Untuk membuatnya klik menu File-New-PHP pada PHP DESIGNER 2006 untuk membuat file baru lalu ketik kode berikut Script dari file java_skin. isi_berita. Pertanyaan bagus.php./index. border-color: #cccccc} Bab 3 . kemudian ketik kode berikut Script dari file index. Setelah semua data kita isikan pada variabel kemudian kita lakukan query untuk memasukkan record baru ke database.

a{color: #7cb500} a:hover{color: #7cb500} . margin-right: 0.MySQL. Untuk selebihnya anda dapat memodifikasi sendiri tampilantampilan lainnya.batas{margin-top: 0. Gambar 3. phpMyAdmin. Script dari file member_skin.putih{font-weight: bold. dan Mengakses MySQL Menggunakan PHP 192 . margin-bottom: 0} . color: white} </style> </head> <body class="batas"> <table border="1" width="100%" cellpadding="4"> <tr height="50" bgcolor="#7cb500"> <td colspan="2" class="putih" align="center"><h2>{JUDUL}</h2></td> </tr> <tr height="25"><td></td></tr> <tr bgcolor="#7cb500"> <td class="putih" width="30%" height="25">BERITA TERBARU</td> <td class="putih" width="70%" height="25">LETS SAVE THE CHILDREN!</td> </tr> <tr> <td width="30%" valign="top">{NEWS}</td> <td width="70%" valign="top">{MENU}<p></p>{UTAMA}</td> </tr> <tr bgcolor="#7cb500" height="25"> <td align="center" colspan="2" class="putih">&#169 2005 javakidsfoundation.php <html> <head> <title>Java Kids Foundation</title> <style> body{font-family: verdana.php.20: Template dasar untuk semua halaman non member File berikut ini adalah file template yang kita gunakan pada halaman member. font-size: 11px. margin-left: 0. Jika anda jalankan tampilan file ini akan terlihat seperti gambar 3. Untuk membuat file ini klik File-New-PHP pada PHP DESIGNER 2006 ketik kode berikut.localhost</td> </tr> </table> </body> </html> Simpan pada direktori Proyek-Bab3 dengan nama java_skin.} td{font-family: verdana. Tampilan file ini hanya memiliki satu kolom.20. font-size: 11px} Bab 3 .

com</td> </tr> </table> </body> </html> Simpan pada direktori Proyek-Bab3/template dengan nama member_skin. margin-bottom: 0} . margin-right:0. 193 Bab 3 .php <?php class { var var var skin $tag = array().php. color: white} </style> </head> <body class="batas"> <table border="1" width="100%" cellpadding="4"> <tr height="50" bgcolor="#7cb500"> <td colspan="2" class="putih" align="center"><h2>{JUDUL}</h2></td> </tr> <tr height="25"><td></td></tr> <tr bgcolor="#7cb500"> <td class="putih" width="70%" height="25">MEMBER AREA</td> </tr> <tr> <td width="70%" valign="top">{MENU}<p></p>{UTAMA}</td> </tr> <tr bgcolor="#7cb500" height="25"> <td align="center" colspan="2" class="putih">&#169 2005 javakidsfoundation. dan Mengakses MySQL Menggunakan PHP .php. Namun untuk sekedar mengingatkan atau file tersebut sudah anda hapus? Maka saya tuliskan kembali sourcenya. File sudah berkali-kali kita buat anda dapat mengcopy file ini dari Proyek-Bab2\template\ lalu paste ke ProyekBab3\template\. Output dari file ini ditunjukkan oleh gambar 3.batas{margin-top: 0. border-color: #cccccc} a{color: #7cb500} a:hover{color: #7cb500} . $file_skin. $halaman.MySQL. phpMyAdmin. margin-left:0.table{border-collapse: collapse. Gambar 3.putih{font-weight: bold. Script dari file template.21: Template dasar untuk semua halaman member Berikutnya kita akan membuat file template yaitu template.21.

/* Variabel untuk menampilkan judul berita */ /*******************************************/ // tampilkan semua judul berita pada samping halaman konek_db().' &nbsp <a href="login. $str_pengganti) { $this->tag[$namatag] = $str_pengganti. while ($data = mysql_fetch_array($hasil_news)) { // gunakan stripslashes() untuk menghilangkan escaping character $side_news .= '</ul>'.= '<li><p><a href="news.php">Member Area</a>' .php pada direktori admin include('admin/fungsi. Buka PHP DESIGNER 2006 klik menu File-New-PHP lalu ketik kode berikut Script dari file index_var.$data['id_berita']. // koneksikan ke MySQL server $hasil_news = mysql_query("SELECT * FROM news ORDER BY id_berita DESC"). } $side_news . phpMyAdmin. Melainkan var yang artinya sama dengan public. foreach($this->tag as $str_dicari => $str_baru) { $this->halaman = ereg_replace($str_dicari. File selanjutnya adalah index_var.php file ini akan selalu kita panggil pada semua halaman non member. Bab 3 .php.php">Home</a> &nbsp <a href="daftar. $this->halaman). Untuk menjaga kompatibilitas dengan versi PHP 4. dan Mengakses MySQL Menggunakan PHP 194 .stripslashes($data['jdl_berita']). $this->halaman). $menu = '<b><a href="index.'</a></p></li>'.'">' . } } ?> Simpan pada direktori Proyek-Bab3\template\ dengan nama template.' &nbsp <a href="bukutamu. $str_baru. Untuk pendeklarasian properti kita tidak menggunakan private.php <?php // panggil file fungsi.' &nbsp <a href="kontak. $this->halaman = implode("". } function ganti_skin($namafile) { $this->file_skin = $namafile. public atau protected.MySQL.'<ul>'.php">Kontak Kami</a></b>'. } function ganti_tampilan() { $this->halaman = file($this->file_skin).php">Buku Tamu</a>' . File ini berfungsi untuk menyimpan variabel-variabel yang digunakan menampilkan judul website dan judul berita pada samping halaman.function ganti_tag($namatag. } echo $this->halaman.php?berita='. $side_news = '<p><b>Daftar Berita</b></p>' .php'). $judul = 'Java Kids Foundation'.php">Daftar</a>' .

$judul = 'Java Kids Foundation . Fungsi file ini adalah untuk memanggil file fungsi.mysql_close(). dan Mengakses MySQL Menggunakan PHP 195 . Rasanya tidak ada yang perlu dijelaskan dari file ini. ?> Simpan pada direktori Proyek-Bab3/template dengan nama member_var..php">Home</a> &nbsp <a href="profil. // buatkan link untuk kembali./admin/fungsi. Tapi file index_var. Pada link URL kita membuat variabel berita yang isinya id_berita. $menu = '<b><a href="index./admin/fungsi. berguna jika ada error $kembali = '<br><a href="javascript: history.php kita panggil dari file index. Untuk memberi tanda bullet pada setiap judul berita.php.php pada direktori admin dan menyimpan varibael $side_news.php">Profil</a> ' . Klik File-NewPHP pada PHP DESIGNER 2006 ketik kode berikut ini Script dari file member_var. Yang jika diklik isi lengkap berita tersebut akan ditampilkan disebelah kanan halaman.php. isi dari href yaitu javscript: history. Untuk itu kita panggil fungsi konek_db(). Seperti biasa sebelum mengambil data dari database kita harus melakukan koneksi dulu dengan MySQL.php pada direktori admin harusnya kan ditulis seperti ini include('. // buatkan link untuk kembali.php'). Isi dari variabel ini digunakan untuk menampilkan judul dari berita pada samping kiri halaman non member. Hal ini dikarenakan pada halaman member area kita hanya menyediakan dua halaman saja dan fokus kita pada halaman non member.back() merupakan fungsi javascript untuk kembali ke halaman sebelumnya.'&nbsp <a href="index. Namun ingat file ini bukan yang kita panggil langsung dari browser.php?proses=logout">Logout</a></b>'.php. Untuk mendapatkan seluruh judul berita kita lakukan looping while. Pada file ini kita juga membuat sebuah variabel $kembali yang isinya adalah sebagai berikut $kembali = '<br><a href="javascript: history. Dengan demikian user tidak perlu mengklik tombol back pada toolbar.Member Area'. File berikutnya adalah member_var.MySQL.php yang letaknya pada direktori ProyekBab3 jadi kita tidak perlu memberi tanda ./ pada include..back()"><< kembali</a>'. phpMyAdmin. Ya memang itu benar.php'). File ini sangat sederhana dan hanya terdiri dari beberapa variabel saja. berguna jika ada error $kembali = '<br><a href="javascript: history.back()"><< kembali</a>'. PENJELASAN SCRIPT Mungkin anda bertanya file ini kan letaknya di direktori template jika ingin memanggil file fungsi.. Akhir dari file yang berada pada direktori Proyek-Bab3\template\ Bab 3 . Seperti yang sudah anda file ini hanya berisi beberapa variabel string.php <?php include('.back()"><< kembali</a>'. maka kita menambahkan tag <ul> dan <li>. ?> Simpan pada direktori Proyek-Bab3\template dengan nama index_var.

</p>' . Anda dapat menyumbang lewat apa saja termasuk pikiran dan tenaga.</p>' .MySQL. while ($data = mysql_fetch_array($hasil)) { Bab 3 . Untuk itu kami sangat berterima kasih atas kesediaan mereka untuk terus mendukung program kami. if ($page == '') $page = 0. // dapatkan isi page dari URL $page = $_GET['page'].php'). // tentukan berita per halaman $berita_per_hal = 3.(021) 7414698</p>'.'<p>Sekarang JKF sudah memiliki 18 cabang yang tersebar diseluruh kota di pulau Java.php <?php include('template/template. /* variabel-variabel pada halaman utama dari JKF */ /************************************************/ $utama = '<h3>Tentang Kami</h3>' . File pertama yang akan kita buat kali ini adalah file utama dari javakidsfoundation. // jumlah halaman // dapatkan nilai $offset $record = $page * $berita_per_hal.'<p><b>Kantor Pusat:</b><br>Jl. // cegah cross site scripting $page = filter_str($page). Jika anda memang kurang mampu untuk menyumbang secara materi. // lakukan query lalu hitung jumlah halaman dengan ceil() konek_db(). $jml_baris = mysql_num_rows($query_hal).'<p>Java Kids foundation merupakan organisasi non profit yang didirikan oleh sekelompok anak muda lulusan UV (Universitas Virtual).php">daftar</a>.com. itu tidak masalah. dan Mengakses MySQL Menggunakan PHP 196 . $jml_hal = ceil($jml_baris / $berita_per_hal).</p>' .'<p align="center"><b>Mari Bersama Kita Selamatkan Masa Depan Mereka!</b></p>' .php').Kali ini file-file yang akan kita bahas adalah file yang berada pada direktori paling atas yaitu Proyek-Bab3. File ini adalah index. phpMyAdmin. Untuk menghemat waktu langsung saja klik Fil-New-PHP pada PHP DESIGNER 2006 lalu ketik kode berikut Script dari file index. // cuplikan berita yang ada pada halaman utama $hasil = mysql_query("SELECT * FROM news ORDER BY id_berita DESC LIMIT $record. $berita_per_hal"). // koneksikan ke MySQL server $query_hal = mysql_query("SELECT * FROM news"). Java Kids Foundation (JKF) berdiri tahun 2001. Anda dapat mendaftar lewat form <a href="daftar.'Telp . pada file ini nantinya akan akan menampilkan profil dari JKF dan menampilkan cuplikan berita sebanyak 25 kata pertama dari setiap berita. Namun yang terbesar adalah dari para donator tetap kami. Menuju Kebenaran 23<br>Jakarta 62152<br>' . Selama kurang lebih empat tahun kami telah melakukan berbagai donasi ke yayasan anak yatim di hampir seluruh Jawa.'<p>Jika anda berminat untuk mengikuti program kami. Dana yang kami peroleh untuk disumbangkan berasal dari berbagai macam sumber.php. Setelah proses pendaftaran selesai anda akan menerima username dan password via email. JKF juga berencana untuk membuka cabang di luar pulau Java seperti di Sumatra dan Kalimantan. include('template/index_var.

'<br><b>'. } // jika jumlah halaman lebih dari satu tampilkan link halaman if ($jml_hal > 1) { $news . "<br>". $skin->ganti_skin('template/java_skin. $jdl_berita = stripslashes($data['jdl_berita']). phpMyAdmin. Selanjutnya kita membuat variabel $berita_per_hal yang isinya adalah tiga.'</p></p><hr>'. .' .$jdl_berita. $a<$jml_hal.. PENJELASAN SCRIPT Seperti yang anda lihat isi dari variabel $utama hanyalah string tag HTML yang kita gunakan untuk menampilkan profil JKF. } mysql_close().= '<p>'. // gunakan stripslashes() untuk menghilangkan escaping character $cuplikan = stripslashes($cuplikan).php?berita='. // gabungkan setiapkan array kata pisahkan kembali dengan spasi $cuplikan = implode(" ".'<p>'. Hmm.intval($a+1) . Selanjutnya kita melakukan query seperti berikut $query_hal = mysql_query("SELECT * FROM news"). Jadi secara otomatis jika kita memanggil file index_var. // mencuplik berita. Untuk menampilkan sejumlah data tertentu klausa yang kita tambahkan adalah LIMIT.$link.php kita sudah memanggil file index_var.'">'.$a. Ini untuk menghindari tampilan kosong karena page belum diset. Penjelasan di sini saya tekankan pada bagaimana cara kita mencuplik berita dan menampilkan sejumlah berita per halaman. rupanya anda lupa.22. Untuk itu kita perlu suatu petunjuk halaman mana yang ingin kita tampilkan. $cuplikan). $i<25. ?> Simpan pada direktori Proyek-Bab3 dengan nama index. Bab 3 . for ($i=0. $news . $isi_berita). Jika page kosong maka tentukan page sama dengan nol. $skin->ganti_tag('{MENU}'.$isi_berita = str_replace("\n"..php?page='. $pecahan_kata = explode(" ". Pada file index.php.'</a> '. Output dari file ini ditunjukkan oleh gambar 3.= ' <a href="index. kenapa kok bisa dipanggil?. sedangkan didalam file index_var.$data['tgl_berita']. $skin->ganti_tag('{JUDUL}'.'">berita lengkap</a>'.= 'Halaman: '. 25 kata pertama $cuplikan = array().php'). $skin->ganti_tag('{NEWS}'.MySQL. // tutup koneksi $skin = new skin. $news). $data['isi_berita']).$data['id_berita']. Kita kan belum meng-include file ini.$cuplikan. $judul). $a++) $news . $skin->ganti_tag('{UTAMA}'.php. $i++) $cuplikan[$i] = $pecahan_kata[$i]. for ($a=0. $skin->ganti_tampilan(). . Maka pada URL kita tambah variabel page. Selanjutnya kita filter isi dari page agar tidak mengandung karakter-karakter berbahaya dengan fungsi filter_str().php. $utama).php kita sudah memanggil file fungsi.'</b>' . $menu). dan Mengakses MySQL Menggunakan PHP 197 . $link = '<a href="news.<br>'.php file fungsi. Jumlah cuplikan berita yang ditampilkan pada halaman utama nantinya berdasarkan isi dari variabel ini.php juga ikut terpanggil.

Tujuan kita membuat variabel $record adalah agar kita mengetahui harus dimulai dari mana baris yang ditampilkan saat kita menggunakan klausa LIMIT. $berita_per_hal"). 3. Artinya 25 kata pertamalah yang kita ambil. Sehingga untuk menampilkan berita kita menggunakan query seperti berikut $hasil = mysql_query("SELECT * FROM news ORDER BY id_berita DESC LIMIT $record. Fungsi yang kita gunakan untuk membagi jumlah baris dan berita per halaman adalah ceil(). Lihat kode berikut $jml_hal = ceil($jml_baris / $berita_per_hal). Bab 3 . $i<25. Kita tiba pada bagian yang cukup menarik yaitu mencuplik berita.. Maka yang ditampilkan sebanyak 1 baris bukan 3 baris.. Jadi pada eksekusi pertama isi dari $cuplikan[0] sama dengan $pecahan_kata[0] yang tidak lain adalah kata pertama dari isi berita. Setelah jumlah baris kita ketahui maka untuk menghitung jumlah halaman kita akan membagi jumlah baris dengan berita per halaman. 3. Yaitu page 0 dan page 1. Fungsi ceil() akan membulatkan hasil koma ke atas. Setelah itu kita tambahkan link untuk membaca berita secara lengkap.Untuk page 0 atau pertama nilai dari $record adalah 0 * 3 = 0. Pada eksekusi ke dua isi $cuplikan[1] sama dengan $pecahan_kata[1] yang artinya sama dengan kata ke dua. $i++) $cuplikan[$i] = $pecahan_kata[$i]. Jika jumlah record hanya 4 yaitu 0. Sedangkan untuk page 1 nilai dari $record adalah 1 * 3 = 3. Yang artinya pilih semua dari news urutkan secara descending MULAI/BATASI dari record 0 tampilkan sebanyak 3 baris. Looping ini kita tentukan sebanyak 25 kali.. Pertama kita membuat variabel $cuplikan yang beritipe array.MySQL. 2. 3. Untuk sementara file ini tidak ada nilainya. Jadi artinya pilih semua dari news urutkan secara descending MULAI dari record 3 tampilkan sebanyak 3 baris.333. 1.$jml_baris = mysql_num_rows($query_hal). Ini dikarenakan HTML tidak mendukung karakter garis baru \n maka kita menggantinya dengan karakter garis baru berformat HTML yaitu tag <br>. Kemudian kita memecah setiap kata pada berita menggunakan fungsi explode(). dibulatkan ke atas menjadi 2. dan Mengakses MySQL Menggunakan PHP 198 . Pada blok kode while kita membuat variabel $isi_berita yang isinya adalah isi dari data[‘isi_berita’] yang karakter garis baru (\n) kita ganti dengan tag html <br>. Maka jika dibagi 4/3 = 1. for ($i=0. Sehingga klausa limitnya menjadi seperti berikut SELECT * FROM news ORDER BY id_berita DESC LIMIT 3. Misalnya isi $jml_baris adalah 4 dan $berita_per_hal adalah 3. Tanda pemisah antar kata tentu adalah spasi. Demikian seterusnya hingga $cuplikan[24]. //jumlah halaman //dapatkan nilai $offset $record = $page * $berita_per_hal.. Setelah itu kita melakukan looping for untuk memberi nilai pada variabel $cuplikan. phpMyAdmin. Tujuan $query_hal hanyalah untuk mengembalikan jumlah baris yang kemudian dihitung oleh mysql_num_rows() yang hasilnya diletakkan pada variabel $jml_baris. Karena memang jumlah dari record 3 sebanyak 1 baris. Dengan demikian klausa LIMIT-nya menjadi seperti berikut SELECT * FROM news ORDER BY id_berita DESC LIMIT 0. Seperti biasa kita menampilkan hasil dengan looping while.

= 'Halaman: '.php'). phpMyAdmin. Bab 3 .'</a> '. $i<$jml_hal. Untuk menggabungkannya kita menggunakan fungsi implode(). Oleh karena itu kita gunakan fungsi intval(). Untuk membuktikannya masuklah pada admin area lalu tambah beberapa berita hingga jumlah beritanya lebih dari 3. } Pada cuplikan kode diatas link halaman hanya muncul jika jumlah dari $jml_hal lebih dari satu. if ($jml_hal > 1) { $news . Agar kita mendapatkan nilai dari $page dan dapat memilih halaman berita maka kita perlu membuat link URL yang terdapat variabel $page didalamnya. include('template/index_var. Gambar 3. Yang artinya setidaknya ada halaman 0 dan 1.localhost Penjelasan dari file index.= ' <a href="index. Karena angka 0 dari suatu halaman terkesan “aneh”. dan Mengakses MySQL Menggunakan PHP 199 .php <?php include('template/template. Jika kita langsung menambahkan $i+1 maka akan error karena akan dianggap string oleh PHP. $i++) $news . Klik menu File-New-PHP lalu ketik kode berikut Script dari file bukutamu.intval($i+1) . Hanya saja file bukutamu.Agar dapat ditampilkan maka array $cuplikan harus digabungkan dulu.php.php?page='.php.22: Tampilan utama javakidsfoundation.$i.MySQL. for ($i=0. File berikutnya adalah file bukutamu. String penggabung yang kita gunakan adalah spasi.'">'. Cara kerja file ini hampir sama dengan file index.php'). Maka kita menambahkannya satu agar yang muncul pertama adalah Halaman: 1 dan seterusnya.php memiliki beberapa proses.php cukup menguras otak.

$data['email'].'<tr><td align="right">Nama: </td>' .'<p>Belum mengisi buku tamu. $jml_baris = mysql_num_rows($query_hal).MySQL. phpMyAdmin. $page = $_GET['page'].'<p><table border="0" cellpadding="4">'. // dapatkan nilai offset $offset = $page * $komen_per_hal.$komentar.'</td></tr>' . // akhir dari proses view case 'form': $page_bt = '<h3>Form Buku Tamu</h3>' Bab 3 .= '<tr bgcolor="#7cb500" class="putih">' . $jml_hal = ceil($jml_baris / $komen_per_hal).'</a> '. if ($page == '') $page = 0. dan Mengakses MySQL Menggunakan PHP 200 . silahkan klik ' .'<td colspan="2">'.'">'. $i++) $page_bt . // koneksi ke MySQL server $query_hal = mysql_query("SELECT * FROM bukutamu"). // tutup koneksi //tampilkan bukutamu $page_bt = '<h3>Buku Tamu</h3>' . $hasil = mysql_query($query).$data['email']. $page = filter_str($page). $page_bt .'<tr><td height="10"></td></tr>'. // tentukan komentar yang ditampilkan per halaman $komen_per_hal = 3. while ($data = mysql_fetch_array($hasil)) { $komentar = str_replace("\n".= ' <a href="bukutamu.'<a href="bukutamu. // lakukan query lalu tentukan jumlah halaman dengan ceil() konek_db(). } break.php?bukutamu_id=form">di sini</a> untuk mengisi.'">' .intval($i+1) .</p>' .'</td></tr>' .php?page='.'<td>'.$data['nama']./* variabel-variabel untuk halaman bukutamu */ /********************************************/ $bukutamu = $_GET['bukutamu_id']. $data['komentar']).$data['tgl_post'].$i. switch ($bukutamu) { case 'view': // lakukan query untuk mendapatkan data dari bukutamu $query = "SELECT * FROM bukutamu ORDER BY id_bt DESC LIMIT $offset.'<td colspan="2">' .= 'Halaman: '.'<tr><td align="right">Email: </td>' . for ($i=0.= '</table></p>'.'</td></tr>' .'<tr><td valign="top">Komentar: </td>' . // tampilkan link halaman jika jumlahnya lebih dari 1 if ($jml_hal > 1) { $page_bt . // cegah cross site scripting $bukutamu = filter_str($bukutamu). $komen_per_hal". if ($bukutamu == '') $bukutamu = 'view'. "<br>". // beri jarak } $page_bt . mysql_close().'</a></td></tr>' .'<td><a href="mailto:'. $i<$jml_hal.

'<tr><td>Email: </td>' . '$nama'.'. $side_news).'<td><input type="text" name="email"></td></tr>' . $komentar = $_POST['komentar'].' <a href="bukutamu.php?bukutamu_id=proses_form" method="post">' . $komentar).' . $menu).'.'mengandung unsur SARA!.'<td><input type="text" name="nama"></td></tr>' .'<td colspan="2" align="center">Form Buku Tamu</td> </tr>' . $skin->ganti_tag('{NEWS}'. '!@#$%'. '$komentar')". // cek kata-kata kotor.'<tr><td><input type="submit" value="KIRIM"></td></tr>' . ganti dengan !@#$% $kotor = array('fuck'.'<tr><td>Komentar: </td>' . } // akhir dari else ke dua } // akhir dari else pertama break. $tgl = date('G:i.'<tr><td>Nama: </td>' . 'bangsat'. foreach ($kotor as $kata) $komentar = eregi_replace($kata. komentar) VALUES ('$tgl'. '$email'. dan Mengakses MySQL Menggunakan PHP 201 . $hasil = mysql_query($query). $skin->ganti_tag('{UTAMA}'. // Format HH:MM.MySQL. else { //lakukan query konek_db(). 'bullshit'.'<table border="0" cellpadding="4">' . $skin->ganti_skin('template/java_skin. Bab 3 . d-m-Y').'<td><textarea name="komentar" rows="8" cols="45"> </textarea></td></tr>' . $pesan_error = ''. // cek apakah ada field yang kosong if (!cek_field($_POST)) $pesan_error = 'Error: masih ada field yang kosong<br>'.' ..$kembali. 'brengsek'. // akhir dari proses form case 'proses_form': $nama = $_POST['nama']. else { $page_bt = 'Data anda berhasil dimasukkan ke database.php">Lihat buku tamu</a>. DD-MM-YYYY $query = "INSERT INTO bukutamu (tgl_post. // cek kevalidan format email if (!cek_email($email)) $pesan_error . email. if (!$hasil) $page_bt = 'Error: gagal memasukkan data ke database. nama. 'ass'). Mohon komentar tidak ' . //jika isi $pesan_error tidak kosong maka ada error if ($pesan_error != '') $page_bt = $pesan_error. $email = $_POST['email'].= 'Error: email tidak valid<br>'.'<form action="bukutamu.'<tr bgcolor="#7cb500" class="putih">' . $skin->ganti_tag('{MENU}'.'Silahkan mengisi form buku tamu berikut. phpMyAdmin.'</table></form>'. $skin->ganti_tag('{JUDUL}'. break.'<tr bgcolor="#7cb500" height="15"><td colspan="2"> </td></tr>' . $page_bt).php'). // akhir daro proses proses_form } //akhir dari switch $skin = new skin. $judul).

Namun jika nanti terdapat error otomatis nilai dari variabel ini akan diubah. dan Mengakses MySQL Menggunakan PHP 202 . Pada case yang pertama yaitu view. Seperti biasa sebelum memasukkan ke database kita cek dulu semua field apa ada yang kosong. Case yang berikutnya yaitu proses_form. $skin->ganti_tampilan(). Seperti yang pernah kita Bab 3 . Kode pada case ini bertugas memproses data yang dikirm dari form isian buku tamu. Selanjutnya kita membuat variael $pesan_error. Agar isi dari error sebelumnya tidak tertindih.23: Output file bukutamu. Variabel ini tidak berisi apa-apa. Jika email juga tidak valid maka tambah isi dari $pesan_error dengan menggunakan tanda . Pada case ini tidak ada yang spesial hanya menampilkan form isian untuk buku tamu.php kita sudah membahasnya panjang lebar. Output dari file ini akan terlihat seperti gambar 3. Jika ada field yang belum terisi maka ubah isi dari variabel $pesan_error seperti berikut $pesan_error = 'Error: masih ada field yang kosong<br>'.php menghandel banyak proses maka kita gunakan switch dan case untuk menangani setiap kondisi. Case yang kedua yaitu form. Karena pada penjelasan tentang file index.= (titik sama dengan). phpMyAdmin.$skin->ganti_tag('{FORUM}'. $forum).php Karena file bukutamu. Gambar 3. Cara kerjanya sama dengan yang pernah kita tuliskan pada file index. ?> Simpan pada direktori Proyek-Bab3 dengan nama bukutamu. Kondisi yang dihandel adalah isi dari bukutamu_id pada URL. Untuk itu kita gunakan fungsi cek_field() yang akan mengecek semua field.MySQL.23 PENJELASAN SCRIPT Untuk menampilkan komentar per halaman dan masalah page tidak perlu saya jelaskan lagi disini.php.php.

'<td colspan="2" align="center">Form Pendaftaran</td></tr>' .'<tr><td>Kode Pos: </td>' .'<td><input type="text" name="alamat" size="50"></td></tr>' . Kita mengecek kata-kata kotor dan menggantinya dengan karakter !@#$%.'<td><input type="text" name="email" maxlength="30"></td></tr>' . switch ($daftar) { case 'form': // jika daftar_id = form eksekusi kode berikut $page_daftar . 16 karakter</td></tr>' .' max.php <?php include('template/template. $email = $_POST['email']. phpMyAdmin. Tugas file ini adalah untuk mendaftarkan user menjadi member.'</form>'. Jika isinya tidak kosong (!=) maka ada error. if ($daftar == '') $daftar = 'form'. Untuk itu isi dari $page_bt kita samakan dengan $pesan_error.'<td><input type="password" name="password" maxlength="16">' . 16 karakter</td></tr>' .'<tr><td><input type="submit" value="DAFTAR"></td></tr>' . Script dari file daftar.'<tr bgcolor="#7cb500" class="putih">' .php').MySQL.'<tr><td>Nama Lengkap: </td>' .'<td><input type="text" name="nama" maxlength="30"></td></tr>' . include('template/index_var.'</table>' .php?daftar_id=proses_form" method="post">' . /* variabel-variabel untuk halaman daftar */ /*****************************************/ konek_db().'<tr><td>Email: </td>' . Bab 3 .'<tr bgcolor="#7cb500" height="15"><td colspan="2"></td></tr>' .'<tr><td>Alamat: </td>' .'<td><input type="text" name="kodepos" maxlength="6" size="6"></td></tr>' .'<tr><td>Password: </td>' . Selanjutnya kita mengecek isi dari variabel $pesan_error.php.'<td><input type="text" name="kota" maxlength="20"></td></tr>' .= '<h3>Mohon isi Form berikut</h3>' . Selain itu proses data dan masukkan ke database. break.'<tr><td>Kota: </td>' .'<td><input type="text" name="username" maxlength="16">' .' max.'<tr><td>Username: </td>' .'<table border="0" cellpadding="4">' .php'). Anda dapat menambahkan daftar dari kata-kata kotor tersebut. Selain itu tampilkan pesan berhasil. // koneksikan ke MySQL $daftar = $_GET['daftar_id']. File berikutnya yang akan kita buat adalah daftar. $nama = $_POST['nama']. $password = $_POST['password']. Jika pada proses pemasukan data ke database terdapat error maka tampilkan pesan bahwa data gagal dimasukkan ke database.lakukan pada bab 1.'<form action="daftar. // cegah Cross site scripting $daftar = filter_str($daftar). // akhir dari proses form case 'proses_form': // jika daftar_id = proses_form eksekusi berikut $username = $_POST['username']. dan Mengakses MySQL Menggunakan PHP 203 .

silahkan pilih yang lain<br>'. $hasil = mysql_query($query).= 'Error: username hanya boleh terdiri dari huruf.com'. // sebelum memasukkan ke database cek setiap field dulu // panggil fungsi cek_field() untuk mengecek field if (!cek_field($_POST)) $pesan_error = 'Error: masih ada field yang kosong<br>'.= 'Error: username sudah terpakai.com\n\n" . '$password'. terima kasih telah menjadi member dari website kami.php">Login</a> untuk ' ."Saudara/i $nama. '$email'. '$alamat'."Username: $username\n" . Mohon coba lagi nanti!<br>'. // buat variabel untuk proses pengiriman email $to = $email.com'. // email dari user yang baru mendaftar $subject = 'Account anda di javafoundation."Berikut ini adalah username dan password untuk login di member area\n\n" ."=====================================\n\n" . else { $page_daftar = 'Registrasi sukses. // tutup koneksi if (!$hasil) $page_daftar = 'Error: gagal memasukkan data ke database. angka dan _<br>'. $isi_email = "Administrator javafoundation. Bab 3 .= 'Error: email tidak valid<br>'.$alamat = $_POST['alamat']. // cek username apakah mengandung karakter aneh if (ereg('[^a-zA-Z0-9_]'.". if (mysql_num_rows($q_cek) > 0) $pesan_error .'silahkan dicek.\n" . // cek password if (ereg('[^a-zA-Z0-9_]'. else { $query = "INSERT INTO member VALUES ('$username'. Data registrasi juga kami kirim ke email anda. angka dan _<br>'. // cek email if (!cek_email($email)) $pesan_error . phpMyAdmin.<br><br>Klik <a href="login. // cek isi dari $pesan_error jika tidak sama dengan '' maka ada error if ($pesan_error != '') $page_daftar = $pesan_error.MySQL.'masuk ke member area. $kodepos = $_POST['kodepos']. $password)) $pesan_error . ' ."====================================\n" .$kembali. '$kota')". $pesan_error = ''. $from = 'From: admin@javafoundation.= 'Error: password hanya boleh terdiri dari huruf. $username)) $pesan_error . '$nama'."Password: $password\n" . $kota = $_POST['kota'].'.$kembali. dan Mengakses MySQL Menggunakan PHP 204 ."Mari bersama selamat masa depan anak-anak Indonesia. '$kodepos'. // cek apakah username sudah terpakai atau belum $q_cek = mysql_query("SELECT * FROM member WHERE username='$username'"). mysql_close().

Untuk selebihnya tidak ada perbedaan dengan file-file sebelumnya. $skin->ganti_tag('{MENU}'. Namun karena ini berhubungan dengan registrasi maka sudah selayaknya kita mengirimkan username dan password ke alamat si pendaftar. $skin->ganti_tampilan(). Output dari file ini ditunjukkan oleh gambar 3. $judul). // tutup koneksi $skin = new skin. Gambar 3.24. $menu). $skin->ganti_tag('{JUDUL}'. $subject. Dan proses_form untuk memproses data yang dikirim dari form data pribadi. phpMyAdmin. $skin->ganti_skin('template/java_skin. ?> Simpan pada direktori Proyek-Bab3 dengan nama daftar. Oleh karena itu untuk sementara kita tangguhkan dulu fungsi mail() dengan memberi tanda komentar didepannya.24: tampilan daftar. dan Mengakses MySQL Menggunakan PHP 205 . Jika kita belum terhubung ke internet kita belum bisa mengetes hasil yang sebenarnya. Yaitu proses form untuk menampilkan form pengisian data pribadi.php juga memiliki beberapa proses.php'). // akhir dari proses proses_form } // akhir dari switch mysql_close().// jika tidak memiliki mail server atau belum di server sebenarnya // beri komentar pada fungsi mail() dibawah ini mail($to. PENJELASAN SCRIPT File daftar. } // akhir dari else ke dua } // akhir dari else pertama break. $skin->ganti_tag('{UTAMA}'. $from). $isi_email. $page_daftar). $forum).php Bab 3 .MySQL. $side_news). $skin->ganti_tag('{NEWS}'.php. $skin->ganti_tag('{FORUM}'.

php').File berikutnya adalah kontak.</p>' . if (!cek_field($_POST)) $pesan_error = 'Error: masih ada field yang kosong<br>'. break. <?php include('template/template. switch ($kontak) { case 'form': $page_kontak = '<h3>Kontak Kami</h3>' .'<p>Jika anda mempunyai pertanyaan seputar Java Kids Foundation.'<tr><td>Email: </td>' .'<td><input type="text" name="subject" size="50"> </td></tr>' . // cek email if (!cek_email($email)) $pesan_error . $pesan_error = ''. // email si pengirim Bab 3 .'<table border="0" cellpadding="4">' .'<tr bgcolor="#7cb500" height="15"><td colspan="2"> </td></tr>' . $pertanyaan = $_POST['pertanyaan'].$email.php.com'. Kami akan merespon pertanyaan anda secepat mungkin.'<tr bgcolor="#7cb500" class="putih">' .$kembali.php.'<td><input type="text" name="name"></td></tr>' .'<tr><td>Pertanyaan: </td>' .'<td colspan="2" align="center">Form Kontak</td> </tr>' .php?kontak_id=proses_form" method="post">' .'</table></form>'. Fungsi dari file ini adalah untuk mengirimkan pesan ke email kita lewat form kontak kami.= 'Error: email tidak valid<br>'.'<tr><td><input type="submit" value="KIRIM"> </td></tr>' . Untuk membuatnya klik File-New-PHP pada PHP DESIGNER 2006 lalu ketik kode berikut Script dari file kontak.'<td><input type="text" name="email"></td></tr>' . // akhir dari proses form case 'proses_form': $nama = $_POST['nama']. /* variabel-variabel untuk halaman kontak kami */ /***********************************************/ $kontak = $_GET['kontak_id'].'<tr><td>Subject: </td>' . dan Mengakses MySQL Menggunakan PHP 206 . $subject = $_POST['subject'].'<form action="kontak.'<tr><td>Nama: </td>' . // email anda $from = 'From: '.'</textarea></td></tr>' . if ($pesan_error != '') $page_kontak = $pesan_error. Silahkan isi form kontak dibawah ini.MySQL. //cegah cross site scripting $kontak = filter_str($kontak). else { $to = 'admin@rahasia-webmaster.'<td><textarea name="pertanyaan" rows="8" cols="50">' . if ($kontak == '') $kontak = 'form'. phpMyAdmin. $email = $_POST['email']. include('template/index_var.php').

} break. Klik File-New-PHP lalu ketik kode berikut Script dari file news. $subject.php'). $full_news).php <?php include('template/template.stripslashes($data['jdl_berita']). // lakukan query untuk mendapatkan berita selengkapnya $hasil = mysql_query("SELECT * FROM news WHERE id_berita = '$berita'").$isi_berita. $from).'<br>' . $menu). // tutup koneksi $skin = new skin. Untuk itu kita langsung saja membuat file berikutnya yaitu news. phpMyAdmin. $pertanyaan. mysql_close(). Tidak ada yang menarik dari file ini.// jika anda tidak memiliki mail server atau anda belum di server // sebenarnya beri komentar pada fungsi mail berikut mail($to. $skin->ganti_tag('{NEWS}'.'<p>'. $skin->ganti_skin('template/java_skin. Fungsi dari file ini adalah untuk menampilkan berita secara lengkap sesuai dengan judul berita yang diklik user pada samping halaman.MySQL. $forum). konek_db(). dan Mengakses MySQL Menggunakan PHP 207 . $data = mysql_fetch_array($hasil).php. $judul). $skin->ganti_tag('{UTAMA}'. $page_kontak = 'Pertanyaan anda telah terkirim. $page_kontak). ?> Simpan pada direktori Proyek-Bab3 dengan nama kontak. $skin->ganti_tag('{JUDUL}'. $skin->ganti_tag('{JUDUL}'. $skin->ganti_tag('{FORUM}'.php'). $skin->ganti_skin('template/java_skin. $side_news). $skin->ganti_tampilan(). // nl2br() fungsi alternatif untuk mengganti \n menjadi <br> // gunakan stripslashes() untuk menghilangkan escaping character $isi_berita = nl2br(stripslashes($data['isi_berita'])).'</b><br>' .'</p>'. // akhir dari proses proses_from } $skin = new skin. $side_news).'<b>'.php'). $judul). $full_news = $data['tgl_berita'].'. $skin->ganti_tag('{UTAMA}'. // koneksikan ke MySQL server /* variabel-variabe untuk menampilkan berita */ /*********************************************/ /* tampilkan berita secara lengkap */ $berita = $_GET['berita']. ?> Bab 3 . $skin->ganti_tampilan(). //cegah Cross Site Scripting $berita = filter_str($berita). $menu). $skin->ganti_tag('{MENU}'. $skin->ganti_tag('{MENU}'.php'). Sama seperti sebelumnya untuk sementara fungsi mail() kita beri tanda komentar dulu agar tidak dieksekusi. $skin->ganti_tag('{NEWS}'. Setelah terhubung ke internet hilangkan tanda komentar pada fungsi tersebut.php. include('template/index_var. Terima Kasih.

php'). Namun ada fungsi yang jarang kita pakai namun cukup berguna yaitu nl2br().25: Halaman berita secara lengkap Selanjutnya kita akan membuat file untuk login ke member area. /* variabel-variabel untuk halaman login */ /*****************************************/ $login = $_GET['login_id']. switch ($login) { 208 Bab 3 .php').Simpan pada direktori Proyek-Bab3 dengan nama news. include('template/template. Fungsi ini akan mengganti karakter garis baru \n menjadi format HTML yaitu <br>. // cegah Cross Site Scripting $login = filter_str($login). Klik FileNew-PHP pada PHP DESIGNER 2006 lalu ketik kode berikut Script dari file login. Proses form digunakan untuk menampilkan form login. include('template/index_var. dan Mengakses MySQL Menggunakan PHP . File ini memiliki dua proses. if ($login == '') $login = 'form'. Output dari file ini ditunjukkan oleh gambar 3. Gambar 3. Sedangkan proses_form untuk memproses form login dan membuat session baru.php. yaitu proses form dan proses_form. Cara kerja file ini sama dengan yang lainnya yaitu mendapatkan data dari database lalu menampilkannya.25.MySQL. phpMyAdmin.php <?php // panggil session_start() karena berhubungan dengan session session_start().

$password = filter_str($_POST['password']).'<input type="submit" value="Login"></td></tr>' .$kembali.php. // buat session bernama member $page_login = 'Login berhasil. // akhir dari proses proses_login } $skin = new skin.php">di sini</a>.'.'disini</a> untuk masuk ke member area. // akhir dari proses form case 'proses_login': // jika login_id = proses_login eksekusi berikut // cegah SQL injection $username = filter_str($_POST['username']).'<p>Lupa password? klik <a href="lupa_pass. $username.'<tr bgcolor="#7cb500" height="15"><td colspan="2"></td></tr>' .'</table>' . $skin->ganti_tag('{JUDUL}'. Lalu kita memanggil fungsi login().'<table border="0" cellpadding="4">' .'<form action="login. // tutup koneksi break. $skin->ganti_tag('{FORUM}'.</p>' .'<tr><td>Username: </td>' . dan Mengakses MySQL Menggunakan PHP 209 . // koneksikan ke MySQL server // panggil fungsi login() if (!login('member'. $password)) $page_login = 'Username atau password salah. $judul).'<tr><td colspan="2" align="center">' .'</form>' .php"> ' .<br>'. $page_login).'<tr bgcolor="#7cb500">' .'<td colspan="2" class="putih" align="center">Login Di sini</td></tr>' . Bab 3 .'<td><input type="password" name="password"></td></tr>' . konek_db(). Pada case form kita hanya menampilkan form login. ‘member’ pada parameter pertama pada fungsi login() yang kita tulis menunjukkan tabel yang kita gunakan yaitu tabel member. } mysql_close(). Silahkan klik <a href="member/index. $skin->ganti_tag('{NEWS}'.case 'form': // jika login_id = form maka eksekusi kode berikut $page_login = '<h3>Login Page</h3>' . $skin->ganti_tag('{UTAMA}'.'<tr><td>Password: </td>' . break.'<p>Untuk masuk ke member area silahkan login terlebih dahulu. Pada case proses_form kita mengambil data yang dipost dari form login. phpMyAdmin. $skin->ganti_tampilan(). Jika tidak ada record yang cocok tampilkan pesan bahwa username atau password salah. $menu).MySQL. $skin->ganti_tag('{MENU}'.'<td><input type="text" name="username"></td></tr>' .php?login_id=proses_login" method="post">' . Tampilan dari file ini akan terlihat seperti gambar 3. ?> Simpan pada direktori Proyek-Bab3 dengan nama login. $forum). Maka kita panggil fungsi session_start().php'). PENJELASAN SCRIPT Karena kita nantinya akan membuat session baru untuk pada file ini. $side_news). $skin->ganti_skin('template/java_skin. Yang menampilkan dua textbox yaitu textbox untuk username dan textbox untuk password.26.</p>'. else { $_SESSION['member'] = $username.

'<table border="0" cellpadding="4">' .'<td colspan="2" align="center">Form Lupa Password </td></tr>' .'<td><input type="text" name="email" maxlength="30"> ' .'<tr bgcolor="#7cb500" class="putih">' . phpMyAdmin.'<tr><td>Email: </td>' .Selain itu berarti username dan password yang dimasukkan cocok dengan yang ada di database. Gambar 3. Untuk membuatnya klik menu File-New-PHP.php. switch ($id) { case 'form': // titik dua bukan titik koma $page_lupa = '<h3>Lupa Password</h3>' .26: Form login untuk member File terakhir pada direktori Proyek-Bab3 adalah lupa_pass.php').'</td></tr>' Bab 3 . if ($id == '') $id = 'form'. dan Mengakses MySQL Menggunakan PHP 210 . File berguna untuk mengirimkan password ke alamat user yang lupa akan passwordnya.php <?php include('template/template. include('template/index_var.'<p>Masukkan email anda yang ada pada member area ' .MySQL.php?id=kirim" method="post">' . // cegah cross site Scripting $id = filter_str($id).localhost</p>' .'javakidsfoundation.'<form action="lupa_pass.php'). kemudian ketik kode berikut Script dari file lupa_pass. $id = $_GET['id']. Untuk itu buarkan session baru bernama member yang isinya adalah username dari user yang berhasil login.

// tutup koneksi if (mysql_num_rows($hasil) == 0) $page_lupa = 'Error: email '.php. else { //lakukan query untuk mengecek email apa ada di database konek_db().localhost'. $page_lupa = 'Password berhasil dikirim.php').$kembali. // akhir dari proses form case 'kirim': $email = $_POST['email']."=============================================\n\n" . $from). $skin->ganti_tag('{MENU}'. dan Mengakses MySQL Menggunakan PHP 211 . PENJELASAN SCRIPT File ini miliki dua proses yaitu form dan kirim."www. form untuk menampilkan textbox email. $side_news). Dan kirimi untuk memproses sekaligus mengirim email ke alamat email user tersebut."Password: ". mysql_close().'<tr><td><input type="submit" value="KIRIM"> </td></tr>' .$kembali. $from = 'From: admin@javakidsfoundation.jakidsfoundation. // koneksikan ke MySQL server $hasil = mysql_query("SELECT * FROM member WHERE email='$email'"). $page_lupa). $skin->ganti_skin('template/java_skin. Jika diperlukan catatlah password tersebut. // akhir dari proses kirim } // akhir dari switch $skin = new skin. $subject = 'Password Anda di javakidsfoundation.$data['username']. $subject.localhost'. ?> Simpan pada direktori Proyek-Bab3 dengan nama lupa_pass."Harap ingat baik-baik password anda tersebut.$data['password'].'</table></form>'.com". $skin->ganti_tag('{FORUM}'. $skin->ganti_tag('{NEWS}'."\n" . $forum). else { $data = mysql_fetch_array($hasil). Silahkan cek email anda'. // jika anda tidak memiliki mail server atau anda belum di server sebenarnya // beri komentar pada fungsi mail berikut mail($to.."Username: ". phpMyAdmin.' tidak ada di database.\n\n" . break.'<tr bgcolor="#7cb500" height="15"><td colspan="2"> </td></tr>' .<br>' . $isi_email = "Berikut ini adalah username dan password anda: \n" . // cek email if (!cek_email($email)) $page_lupa = 'Error: email tidak valid<br>'.MySQL. Bab 3 . $judul). $menu). // buat variabel untuk digunakan pada fungsi mail() $to = $email. } // akhir dari else ke dua } // akhir dari else pertama break. $isi_email. $skin->ganti_tag('{JUDUL}'. $skin->ganti_tampilan()."\n\n" .$email. $skin->ganti_tag('{UTAMA}'.

/login.php dan file untuk mengupdate profil profil. Silahkan <a href=". kemudian ketik kode berikut Script dari file index.php">Login </a> dulu. Akhir dari file yang berada pada direktori Proyek-Bab3 File-file yang akan kita buat berikutnya adalah untuk member area.php">di sini</a> untuk login kembali. include('. include('. break.Pada case kirim kita mengambil data yaitu email yang dimasukkan user pada textbox. Sebaiknya fungsi mail() kita tangguhkan agar PHP tidak memunculkan pesan error... phpMyAdmin. Yaitu file utama index.'.MySQL. else $utama = 'Anda telah logout dari sistem. switch ($proses) { case 'view': $utama = '<h3>Selamat Datang di Member Area</h3>' .'Anda login sebagai: '.$_SESSION['member'] . Jika anda tidak memiliki program mail server (contoh: hMailServer) atau anda belum mengupload ke server sebenarnya.'./login.. break..php'). if (!cek_session('member')) { $menu = ''. <a href=". File untuk member area hanya terdiri dari dua file./template/template.'.php">Login</a> dulu.'<a href=". if ($proses == '') $proses = 'view'. Untuk itu tampilkan pesan error. if (mysql_num_rows($hasil) == 0) Jika jumlah baris yang dikembalikan query SQL sama dengan nol berarti email tidak ada di database. dan Mengakses MySQL Menggunakan PHP 212 . Klik ' .php <?php // panggil fungsi session_start() session_start(). // akhir dari proses view case 'logout': if (!logout('member')) $utama = 'Tidak bisa logout.Klik menu File-New-PHP pada PHP DESIGNER 2006 untuk membuat file PHP baru.. Kita mengeceknya menggunakan fungsi mysql_num_rows().php'). // akhir dari proses logout } //akhir dari switch Bab 3 . Namun jika email ada di database pecah setiap field atau kolom pada record tersebut untuk mendapatkan username dan password.'<p> Halaman utama member area </p>'. $utama = 'Anda belum login. Untuk kemudian kita cocokkan apakah email tersebut ada didatabase atau tidak./template/member_var. } else { $proses = $_GET['proses']. Setelah itu kita masukkan username dan password pada isi dari email kita untuk dikirimkan. // cegah cross site scripting $proses = filter_str($proses)./login.php.

include('. Pada logout kita menghapus isi dari session member dan menghandurkannya dengan session_destroy().. $skin->ganti_tag('{UTAMA}'.php. Jika ternyata session member belum terisi ganti isi dari variabel $menu menjadi kosong. Klik File-New-PHP untuk membuat file baru kemudian ketik kode berikut Script dari file profil. Pada case view kita menampilkan halaman utama member area. dan Mengakses MySQL Menggunakan PHP 213 . $skin->ganti_skin('.27. $judul).MySQL. include('.php. File ini berfungsi untuk menyediakan form update dan memprosesnya.. Pada blok kode else ini ada dua proses yaitu proses view dan logout. Gambar 3. // cek apakah user sudah login atau belum if (!cek_session('member')) Bab 3 .} // akhir dari else $skin = new skin.php <?php // mulai session session_start().27: Halaman utama member area PENJELASAN SCRIPT Pertama kita akan mengecek dulu apakah session member telah terisi atau belum dengan menggunakan fungsi cek_session('member'). ?> Simpan pada direktori Proyek-Ba3\member\ dengan nama index. $skin->ganti_tag('{MENU}'.php'). Output dari file ini ditunjukkan oleh gambar 3. Jika user telah login maka blok pada else yang akan dieksekusi. $menu)..php')./template/template. $skin->ganti_tag('{JUDUL}'./template/member_var. $utama). $skin->ganti_tampilan().php')./template/member_skin. File berikutnya yaitu file profil. Dan variabel $utama kita isi dengan pesan bahwa user belum login. phpMyAdmin.

phpMyAdmin.'<td><input type="text" name="nama" value="'.$data['username']. // cegah cross site scripting $proses = filter_str($proses).</p>' . $email = $_POST['email'].'<td><input type="text" name="email" value="'.$data['kodepos']. $kodepos = $_POST['kodepos']. switch ($proses) { case 'view': // lakukan query database untuk mendapatkan profil $user = $_SESSION['member']. $profil= 'Anda belum login. dan Mengakses MySQL Menggunakan PHP 214 . // cek setiap field sebelum memasukkan ke database Bab 3 . mysql_close().'<td><input type="text" name="alamat" value="'.'.'"></td></tr>' .$data['kota'].'<table border="0" cellpadding="4">' .'"></td></tr>' .'<tr><td>Nama Lengkap: </td>' . Silahkan <a href=". // tutup koneksi $profil = '<h3>Update Profil</h3>' . // user yang sedang login konek_db().'"></td></tr>' .'<tr><td>Password: </td>' .$data['password']. $kota = $_POST['kota'].MySQL.'<tr><td><input type="submit" value="UPDATE"></td></tr>' .'<td colspan="2" align="center">Form Update</td>' .'<tr><td>Kode Pos: </td>' . Tekan UPDATE untuk memproses.'"></td></tr>' . //koneksikan ke MySQL Server $hasil = mysql_query("SELECT * FROM member WHERE username='$user'").{ $menu = ''. $data = mysql_fetch_array($hasil).'<td>'.$data['email'].'<td><input type="password" maxlength="16" name="password" value="'./login..$data['alamat']. if ($proses == '') $proses = 'view'.'<tr bgcolor="#7cb500"><td colspan="2" height="15"></td></tr>' . $nama = $_POST['nama'].'<tr bgcolor="#7cb500" class="putih">' .'<td><input type="text" name="kota" value="'.'<td><input type="text" name="kodepos" size="7" maxlength="7" value="'.'<tr><td>Kota: </td>' .'<tr><td>Email: </td>' .'</td>' .'</table></form>'.'<tr><td>Username: </td>' .php">Login</a> dulu.'<form action="profil.'<tr><td>Alamat: </td>' . } else { $proses = $_GET['proses'].'"></td></tr>' . // akhir dari proses view case 'update': $password = $_POST['password'].php?proses=update" method="post">' . break.'<p>Silahkan update data pribadi anda. $alamat = $_POST['alamat'].$data['nama']. $pesan_error = ''.'" size="50"></td></tr>' .

Isi dari atribut ini adalah data yang kita peroleh dari database.. $menu). Query yang kita gunakan pada kode diatas adalah $query = "UPDATE member SET password='$password'.if (!cek_field($_POST)) $pesan_error = 'Error: masih ada field yang kosong<br>'. // cek password selain alpabet. User ini tidak lain adalah isi dari session member.'. Bab 3 .php. kodepos='$kodepos'. // cek email if (!cek_email($email)) $pesan_error .= 'Error: password hanya boleh terdiri dari huruf. kota='$kota' WHERE username='$user'". alamat='$alamat'. else $profil = 'Profil berhasil diupdate. Query yang kita gunakan adalah $hasil = mysql_query("SELECT * FROM member WHERE username='$user'"). phpMyAdmin. $skin->ganti_tag('{UTAMA}'. $skin->ganti_skin('.MySQL. $skin->ganti_tag('{MENU}'. $skin->ganti_tag('{JUDUL}'.28 menunjukkan output dari ini. email='$email'. email='$email'. Kemudian kita membuat form profil. alamat='$alamat'. Untuk memberikan nilai pada setiap field kita menambahkan atribut value.php'). kota='$kota' WHERE username='$user'". PENJELASAN SCRIPT Pada file ini kita memiliki dua proses yaitu proses view untuk menampilkan form yang sudah terisi data dari database. angka. Untuk case update yang perlu kita perhatikan adalah query untuk melakukan update ke database. Proses ini bertugas untuk mengupdate data yang ada didatabase berdasarkan form profil. numerik dan _ maka Error if (ereg('[^a-zA-Z0-9_]'. Gambar 3./template/member_skin. nama='$nama'.php">Lihat Profil</a>'. nama='$nama'. ?> Simpan pada direktori Proyek-Bab3\member\ dengan nama profil. if ($pesan_error != '') $profil = $pesan_error.= 'Error: email tidak valid<br>'. $skin->ganti_tampilan(). } // akhir dari else ke dua } // akhir dari switch } // akhir dari else pertama // ganti tampilan $skin = new skin. dan Mengakses MySQL Menggunakan PHP 215 . $profil). // user yang sedang login $query = "UPDATE member SET password='$password'. $password)) $pesan_error . if (!$hasil) $profil = 'Error: tidak dapat mengupdate profil ke database. <a href="profil. Pada case view kita mengambil data dari database dari user yang sedang login. Proses yang ke dua yaitu update.$kembali. kodepos='$kodepos'. else { // masukkan data ke database konek_db(). $hasil = mysql_query($query). dan _<br>'. $judul). // koneksikan ke MySQL server $user = $_SESSION['login'].

********** Bab 3 . Tanpa ada klausa WHERE maka seluruh record akan ikut terupdate. Record yang diupdate adalah record yang field usernamenya adalah username yang sedang login. Akhir dari file yang berada pada direktori Proyek-Bab3\member\.MySQL. Gambar 3.Untuk query ini memang cukup panjang karena yang kita update seluruh field. phpMyAdmin.28: Halaman update profil pada member area. dan Mengakses MySQL Menggunakan PHP 216 .

Berikutnya Pada bab berikutnya kita akan membahas materi tentang masalah keamanan dan contohcontoh aplikasi. 217 .

Bab 4 Masalah Keamanan Error Handling Contoh-contoh Aplikasi Sebelum melanjutkan ikuti langkah-langkah berikut: Buatlah folder baru pada direktori C:\Apache2\htdocs\webmaster\ Berinama folder tersebut Bab4 ********** 218 .

bisnis. Karena informasi yang disimpan pada sistem tersebut tidak begitu penting. Memang harus kita yakini tidak ada sistem yang tidak bisa ditembus. Error Handling dan Contoh-contoh Aplikasi 219 . Anda harus mempertimbangkan hal itu baik untuk anda sendiri mauapun si cracker yang mencoba membobol sistem anda. bank atau militer tentu mempunyai kepentingan yang berbeda-beda. Kali ini kita akan membahas beberpa point masalah keamanan diantaranya: Seberapa Penting Informasi Anda? Ancaman Keamanan Enkripsi Data Mengamankan Input dari User Secure Login Firewall Materi diatas adalah materi seputar keamanan yang diharapkan anda kuasai dalam satu hari ke depan. Tentu nilai dari informasi yang disimpan sangatlah penting. anda harus dapat mengevaluasi pentingnya data yang anda simpan. Ancaman Keamanan (Security Threats) Apakah ancaman yang mungkin mengancam website anda?. Seberapa Penting Informasi Anda? Ketika bicara tentang security. Berikut ini beberapa kemungkinan ancaman yang mengancam website anda: Bab 4 .Masalah Keamanan Hari Ke-15 Seperti biasa karena sudah menginjak hari baru. Pentingnya informasi pada website komersial mungkin berada pada titik diantara kumpulan hobi dari user dan militer. Misalkan data yang disimpan pada komputer seperti kumpulan hobi user. Kumpulan hobi user tentu bukan target yang ideal bagi para cracker. Namun sudah tugas kita untuk membuat sistem tersebut sesulit mungkin untuk ditembus. untuk itu: Masuklah pada direktori C:\Apache2\htdocs\webmaster\Bab4\ Buat folder baru dan beri nama hari-15 Masalah Keamanan Jika kita bicara masalah keamanan di bidang internet seakan tidak akan ada ujungnya. Ini terbukti jika suatu teknologi baru muncul pasti memiliki bug yang dapat dimanfaatkan para cracker untuk membobol sistem. Untuk itu sudah pasti pengamanan yang harus diterapkan pada sistem ini adalah super ketat. Namun kita harus mengetahui pentingkah informasi ini untuk saya lindungi dengan biaya yang saya keluarkan. Kita dapat mengeluarkan biaya lebih untuk menjaga keamanan sistem kita. Cracker tentu memilih target yang menurutnya paling menguntungkan. Sedangkan jika informasi yang disimpan menyangkut militer. Cracker akan menghabiskan banyak usaha untuk menembus sedang informasi yang didapat tidak begitu berguna.Masalah Keamanan.

Dimana kita membuat fungsi filter_str() yang hanya mengijinkan alpabet. Jadi query diatas akan menjadi seperti berikut $hasil = mysql_query("SELECT * FROM admin WHERE username='admin'#' AND password='pas123'"). ''. Cara mengatasinya adalah dengan mem-filter input dari user dengan addslashes() atau strip_tags(). SELECT * FROM admin WHERE username='admin'. Jadi setelah tanda # SQL mengangap text tersebut komentar sehingga tidak dieksekusi. Sebenarnya masih banyak cara yang digunakan untuk memanipulasi query SQL. Error Handling dan Contoh-contoh Aplikasi . Tanda # pada query MySQL sama dengan -.0: Metode SQL Injection Jika query yang kita gunakan untuk memproses login diatas adalah seperti berikut $hasil = mysql_query("SELECT * FROM admin WHERE username='admin' AND password='pas123'"). Namun pada input username cracker memasukkan admin'#. Hasil dari query ke dua selalu mengembalikan satu baris artinya true karena sama saja dengan query berikut. Lihat query berikut Gambar 4. SQL Injection SQL Injection merupakan teknik untuk menembus sistem authentication dengan memanipulasi query SQL.Masalah Keamanan SQL Injection Cross Site Scripting Denial of Service (DoS) Error pada Software Mari kita kupas satu per satu ancaman tersebut. $string).yang berarti komentar. Tidak hanya terbatas dengan satu cara seperti diatas. Hal ini sudah pernah kita lakukan pada proyek bab 3. numerik. Manipulasi ini biasanya dilakukan pada input pada form login dengan memasukkan beberapa karakter tertentu seperti ‘ (petik satu). #. Source dari fungsi filter_str() adalah sebagai berikut function filter_str($string) { $filter = ereg_replace('[^a-zA-Z0-9_]'.Masalah Keamanan. dan underscore. dan sebagainya. 220 Bab 4 .

Untuk mencegahnya kita kita dapat mem-filter isi dari data dari proses $_GET pada URL. E-Trade dan Buy.com. Pada awal tahun 2000. Serangan semacam ini memerlukan ratusan bahkan ribuan komputer untuk melakukan request secara bersamaan. Kemudian menginstal tool tersebut ke mesin target. Tapi untuk berjaga-jaga sebaiknya kita membuat fungsi sendiri seperti diatas. Tanpa pengetahuan yang lebih seseorang dapat menscan banyak mesin untuk mengetahui mesin yang vulnerable(terdapat celah keamanan). Sehingga sistem target terkadang lumpuh total. Situs-situs diatas shutdown selama beberapa jam karena serangan DDoS ini. Karena tidak semua server diset demikian.Masalah Keamanan. Cara yang biasanya digunakan adalah dengan mengganti isi dari proses dengan kode tertentu. terjadi serangan Distributed Denial of Service (DDoS) terhadap situssitus terkemuka seperti Yahoo!. Cracker umumnya mengontrol komputer-komputer yang ingin digunakan untuk menyerang sistem target melalui IRC.com/index. Isi dari proses ini yang menjadi target XSS bagi para attacker. Bagaimana kalau isinya adalah javascript yang bertugas mendapatkan cookie.Masalah Keamanan return $filter. Sehingga target akan dibanjiri reply dari email yang dikirimkan.website. Reserve Spam menyebabkan seseorang untuk mengirim email sampah dengan target yang ada pada daftar email yang ada pada address book. Cross Site Scripting (XSS) Denial of Serivce (DoS) Salah satu serangan yang paling sulit untuk diatasi adalah Denialof Service(DoS). website tersebut melakukan request ke server. Metode yang digunakan dapat berupa menginstal program pada mesin target yang menghabiskan banyak resource CPU. Contoh http://www. Amazon. eBay. Serangan yang berbasis DDoS umumnya menggunakan nomor port yang tinggi. Automated tools digunakan untuk melancarkan serangan DDoS pada target.website. Reserve Spam dan menjalankan Automated tools. Jika halaman yang dituju tidak ada maka browser akan menampilkan permintaan kita tersebut. Salah satu alasan mengapa serangan ini sangat sulit untuk dihindari adalah karena sistem target dibanjiri dengan request dengan jumlah sangat besar.com/index.php?proses=proses_form. Cross Site Scripting merupakan metode eksploitasi sistem dengan cara memanipulasi variabel pada URL.php?ref=<h1>Your%20SITE%20Is%20Vulnerable</h1> Setiap kita membuka halaman web. Error pada Software Bab 4 . Isi dari XSS kita diatas tidak berbahaya. Kita dapat menggunakan fungsi strip_tags() dan fungsi yang kita buat sendiri seperti filter_str(). Biasanya pada URL terdapat variabel atau menu untuk masuk ke halaman lainnya. Contoh pada beberapa halaman yang pernah kita buat index. } Namun kebanyakan server sekarang sudah diset untuk tidak mengijinkan karakter-karakter yang berbahaya. Error Handling dan Contoh-contoh Aplikasi 221 . DoS merupakan serangan yang membanjiri target dengan request-request yang sangat menguras resource CPU.php?ref=user Jika kita mengganti isi dari ref menjadi seperti berikut apa yang akan terjadi? http://www. Ini adalah masalah serius.

Masalah Keamanan Ini masih tetap memungkinkan software yang berjalan disistem mengalami error. Namun bagaimana jika yang dikirimkan adalah password kita untuk login ke suatu situs. Lihat gambar 4. Ini cukup penting dilakukan karena konsumen kita pasti memiliki spesifikasi yang berbeda-beda. Itu baru masalah. Error pada software dapat menyebebakan sistem berlubang.2 untuk memperjelas proses enkripsi Bab 4 . Jadi sebelum data akhirnya sampai pada komputer anda mungkin saja data itu “mampir” ke host yang tidak terpercaya. dan layanan yang buruk pada kostumer.1. Ini dikarenakan koneksi TCP/IP memecah data menjadi paket-paket kecil dan mengirimkan paket ini dari satu mesin ke mesin lainnya sebelum akhirnya sampai di sisi klien. Error pada software dapat menyebabkan hal yang serius. Jika password anda tidak terenkripsi maka dengan mudah orang tersebut melihat password anda. Lihat gambar 4. Seperti mengetes semua kemungkinan kondisi input. Ketika anda berinternet anda mungkin tidak sadar bahwa aktivitas anda sedang dimonitor oleh seseorang. mengetes pada semua browser. Tanpa di-enkripsi informasi dari server ke klien atau sebaliknya dapat dimonitor oleh seseorang dari jarak jauh. Kebanyakan dari error ini karena spesifikasi yang buruk dan buruknya tes yang dilakukan. Mereka mengetahui semua paket yang dikirimkan atau yang diterima komputer anda. Pada enkripsi dikenal isitilah Chiper Text yang merupakan string acak hasil dari enkripsi sebuah text biasa(plain text).Masalah Keamanan. mengetes pada spesifikasi hardware yang berbeda. Error Handling dan Contoh-contoh Aplikasi 222 . Kita tahu semua bisnis yang memakai sistem komputer untuk memproses data mungkin saja memakai software yang vulnerable(memiliki celah keamanan). Gambar 4. resiko finansial. mengetes pada semua sistem operasi dan sebagainya. Enkripsi Data Enkripsi merupakan suatu proses algoritma yang merubah informasi awal menjadi data yang berupa string secara acak(random).1: Pengiriman data pada internet Seperti terlihat pada gambar diatas bahwa informasi yang kita terima sebenarnya melewati beberapa host terlebih dahulu sebelum akhirnya kita terima. dan memang itu adalah masalah serius. Dari penggambaran diatas dapat kita simpulkan pentingnya enkripsi dalam suatu transmit di internet. Sebelum melakukan pemasaran ada baiknya kita mengetes website kita pada segala kondisi. Jika informasi yang dikirimkan hanya berupa teks lagu itu tidak masalah. Informasi yang lalu lalang di internet bagaikan sebuah papan pengumuman yang siap dibaca oleh siapa saja yang melihatnya.

Masalah Keamanan Plain Text Algoritma Enkripsi Chiper Text Gambar 4."Panjang string setelah dienkrip: ".Masalah Keamanan.strlen($chiper_md5). Namun hasil enkripsi dari kedua fungsi ini yaitu md5() dan sha1() akan selalu sama dengan string input yang digunakan. Key yang digunakan untuk dekripsi harus dengan key yang digunakan sewaktu kita mengenkripsi text. $chiper_sha = sha1($string). echo "<p></p>". Untuk melakukan dekripsi kita memerlukan key atau kunci.3. ?> Simpan pada direktori hari-15 dengan nama md5_sha1. Untuk algoritma MD5 kita dapat menggunakan fungsi md5(). Proses dekripsi adalah mengubah kembali chiper text yaitu string hasil enkripsi menjadi plain text.strlen($chiper_sha). Lihat gambar 4. Kedua metode ini didukung oleh PHP.com'. Output yang ditampilkan browser dari kode diatas adalah String awal: rahasia-webmaster.com Setelah dienkrip MD5: 213ecd6efcb09078823634e18a25acf0 Panjang string setelah dienkrip: 32 String awal: rahasia-webmaster. Untuk mencobanya jalankan PHP DESIGNER 2005 klik menu File-New-PHP kemudian ketik kode berikut <?php // enkripsi menggunakan MD5 dan SHA $string = 'rahasia-webmaster. Sedang untuk algoritma SHA kita menggunakan fungsi sha1(). $chiper_md5 = md5($string). Dekripsi mengubah chiper text menjadi plain text Metode untuk melakukan enkripsi cukup beragam seperti MD5 dan SHA. Struktur dasar dari crypt() adalah sebagai berikut Bab 4 .php.com Setelah dienkrip SHA: 1f403aaa8492129605ca27a4421b96895bb85681 Panjang string setelah dienkrip: 40 Perlu diingat bahwa baik proses MD5 dan SHA tidak dapat didekripsi. Artinya hasil enkripsi ini tidak bisa dikembalikan menjadi string asalnya. Metode ini cocok kita gunakan untuk sistem login. echo "String awal: $string<br>" . echo "String awal: $string<br>" . Error Handling dan Contoh-contoh Aplikasi 223 . Fungsi ini memiliki dua parameter satu bersifat wajib dan satu bersifat opsional.2: proses enkripsi Kebalikan dari enkripsi adalah dekripsi."Panjang string setelah dienkrip: ". Key Plain Text Algoritma Enkripsi Chiper Text Algoritma Dekripsi Plain Text Gambar 4."Setelah dienkrip SHA: $chiper_sha<br>" .3: Enkripsi mengubah plain text menjadi chiper text."Setelah dienkrip MD5: $chiper_md5<br>" . Fungsi lain yang dapat kita gunakan untuk melakukan enkripsi adalah crypt().

Sedangkan pada fungsi crypt() yang kedua hasilnya akan selalu sama karena kita memberikan parameter kunci yaitu ‘xx’.buat database secure_login Bab 4 . Untuk mencobanya buat file baru pada PHP DESIGNER 2005 dengan mengklik File-New-PHP. mengambil beberapa karakter tertentu. Jadi untuk mempersulit lagi kita harus memodifikasi enkripsi MD5 dengan cara-cara tertentu. Error Handling dan Contoh-contoh Aplikasi 224 .'<p>Hasil yang dienkrip dengan crypt() menggunakan kunci:<br>' .NHCD1VgkZ3Fb28/ <== selalu berubah. Tool semacam ini biasanya dinamakan MD5 brute force. Enkripsi yang akan kita gunakan pada sistem login kita berdasarkan algoritma enkripsi MD5. Hasil yang dienkrip dengan crypt() menggunakan kunci: xx5S2eXCOIs4w <== tidak berubah.crypt($string. Mengapa? Karena sistem login yang kita terapkan tanpa menggunakan enkripsi sama sekali. Jika anda memasukkan string yang panjangnya lebih dari dua maka yang diambil adalah dua string pertama. echo '<p>Hasil yang dienkrip dengan crypt() tanpa kunci:<br>' . PENERAPAN TEORI SECURE LOGIN Jalankan PHP DESIGNER 2005 klik menu File-New-SQL untuk membuat file SQL baru.</p>' . Jalankan pada browser tekan tombol Refresh pada browser beberapa kali untuk melihat perubahannya. Maka sudah seharusnya kita memperhatikan hal ini. Secure Login Agar data baik yang diterima maupun dikirim klien tetap aman. meskipun bukan jaminan 100%. Pada fungsi crypt() yang pertama hasil yang akan ditampilkan selalu berubah-ubah.'<b>'. Panjang sring untuk kunci maksimal adalah 2. Sistem login yang pernah kita buat pada tiga bab sebelumnya sangatlah riskan.Masalah Keamanan. lalu ketik kode berikut <?php // enkripsi menggunanakan fungsi crypt $string = 'rahasia-webmaster. 'xx'). Meskipung memiliki kunci tetapi fungsi crypt tidak dapat mendekrip hasil dari enkripsinya sendiri. Seperti namanya brute force artinya tool ini akan mencoba segala kemungkinan password yang menghasilkan string hasil enkripsi MD5. Tetapi ini setidaknya akan mempersulit orang yang ingin mencuri password. Meskipun kemungkinan berhasilnya kecil.'<b>'.$SyR6s4. [kunci]).'</b> <== tidak berubah. Hasilnya akan seperti berikut: Hasil yang dienkrip dengan crypt() tanpa kunci: $1$jV5.wZ2.'</b> <== selalu berubah. tapi kita tetap harus berhati-hati. Metode enkripsi MD5 sekarang pun sudah ada tool untuk mengcracknya. ?> Simpan pada direktori hari-15 dengan nama crypt.crypt($string).Masalah Keamanan crypt(string yang dienkrip. mengacak letak karakter dan sebagainya. Kemudian ketik kode berikut -. Sehingga informasi password dapat dengan mudah diketahui orang lain.php.com'. Satu yang menarik dari fungsi ini adalah jika parameter kunci tidak diisi maka hasil enkripsi akan selalu berubah setiap kali fungsi tersebut dipanggil.</p>'. Kali ini kita akan membuat sistem login yang lebih aman. Misalnya membalik urutan hasil enkripsi MD5.

Simpan pada direktori hari-15 dengan nama secure.panjang password 32 karena panjang enkripsi MD5 demikian CREATE TABLE user ( username varchar(16) NOT NULL. $_SERVER['PHP_SELF'])) exit('Error: Akses ditolak'). DELETE ON secure_login.buat privilege untuk user dengan nama secure -. -.jika sudah ada hapus DROP DATABASE IF EXISTS secure_login.Masalah Keamanan. Eksekusi file ini dari phpMyAdmin atau dari MySQL Monitor. 'secure123'). PRIMARY KEY (username) ) TYPE='MyISAM'. ''.php if (eregi('fungsi. // fungsi untuk melakukan koneksi ke MySQL server function konek_db() { // untuk username = secure dan password = secure123 @ $koneksi = mysql_connect('localhost'. return true.sql. -.dan password secure123 untuk database ini GRANT SELECT.php'.aktifkan database secure_login USE secure_login. return $filter. CREATE DATABASE secure_login. Error Handling dan Contoh-contoh Aplikasi 225 . $string). lalu ketik kode berikut <?php /************************************************* ** Kumpulan Fungsi untuk file secure_login. INSERT. 'secure'. } Bab 4 . Selanjutnya kita akan membuat file PHP baru klik File-New-PHP. else { // pilih database yang digunakan mysql_select_db('secure_login').Masalah Keamanan -. // jika gagal melakukan koneksi kembalikan false if (!$koneksi) return false. -. UPDATE.php *** **************************************************/ // cegah pengaksesan langsung dari browser // isi dari $_SERVER['PHP_SELF'] adalah // /webmaster/Bab4/hari-15/fungsi. password varchar(32) NOT NULL.* TO secure@localhost IDENTIFIED BY 'secure123'. } } // fungsi untuk menfilter karakter function filter_str($string) { $filter = ereg_replace('[^a-zA-Z0-9_]'.buat tabel user -.

: untuk mengetes metode MD5 pada sistem login *******************************************************************/ // panggil file fungsi. break. kemudian salin listing kode berikut <?php /******************************************************************* ** Nama File..Masalah Keamanan // fungsi untuk mengenkripsi string dengan MD5 dan membaliknya function balik_md5($string) { // balik urutan string yang terenkripsi dengan md5() // menggunakan fungsi strrev() $chiper_text = strrev( md5($string) ). // tangani setiap proses dengan switch dan case switch ($proses) { /*****************/ case 'form_login': /*****************/ echo '<h2>Form login</h2>' .php').php ** Penulis... Untuk alasan keamanan kita mencegah pengaksesan file-file konfigurasi secara langsung dari browser.php?proses=tambah_user">Tambah User</a></p>'. // dapatkan data fari URL $proses = $_GET['proses'].</b></p>'.'Password: <input type="password" name="password"><br>' .php.: secure_login...php include ('fungsi.'</form>' ..: Rio Astamal ** Tanggal. Ini akan mempermudah anda dalam menangani error. Semua fungsi diatas saya rasa sudah jelas karena banyak komentar penjelasnya. <br> Cek kembali parameter untuk host. echo '<p><b>Hanya untuk testing. return $chiper_text.php?proses=proses_login" method="post">' .: 16-10-2005 ** Penjelasan.... Tulislah kode anda untuk semudah mungkin dapat dibaca. Error Handling dan Contoh-contoh Aplikasi 226 . if ($proses == '') $proses = 'form_login'. Buat file PHP baru dengan mengklik File-New-PHP.. /* Jika koneksi gagal tampilkan pesan */ if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server. Jangan terlalu pelit dalam memberi jarak ataupun memberi komentar. dan password!.'<input type="submit" value="LOGIN">' .'Username: <input type="text" name="username"><br>' . username.. /*************/ Bab 4 . } ?> Simpan dengan nama fungsi... Pada pengerjaan proyek berskala besar...'<p><a href="secure_login.'<form action="secure_login.')...Masalah Keamanan.

// jika jumlah baris lebih dari nol maka cocok if ( mysql_num_rows($hasil) > 0) { echo '<p><b>Login Berhasil</b></p>' . Bab 4 . $password = filter_str($_POST['password']).'). break.'Password: <input type="text" name="password"><br>' .php">Login Kembali</a>'. /*************/ /********************/ case 'proses_tambah': /********************/ // daftarkan variabel $username = $_POST['username'].php">Halaman Login</a></p>'. $password = $_POST['password'].php?proses=proses_tambah" method="post">' .'Username: <input type="text" name="username"><br>' .'<a href="secure_login.'<input type="submit" value="TAMBAH USER">' .Masalah Keamanan /*******************/ case 'proses_login': /*******************/ // daftarkan variabel $username = filter_str($_POST['username']).php">Halaman Login</a>'. // cek kecocokan data dengan yang ada didatabase $hasil = mysql_query("SELECT * FROM user WHERE username='$username' AND password='$password'"). // cek apakah data yang dipost mengandung karakter non alpanumerik foreach ($_POST as $data) { if (ereg('[^a-zA-Z0-9_]'.'</form>' .'<form action="secure_login. // enkripsi password $password = balik_md5($password). } // jika tidak ada kesalahan maka enkripsi password $password = balik_md5($password).'<a href="secure_login. Error Handling dan Contoh-contoh Aplikasi 227 .'<p><a href="secure_login. } else { echo '<p><b>Username atau Password salah!</b></p>' .Masalah Keamanan. } break. $data)) exit('Error: username atau password mengandung karakter bukan alpanumerik dan underscore. /***********/ /******************/ case 'tambah_user': /******************/ echo '<h2>Tambah User</h2>' .

Tetapi tetap menggunakan pas123 yang kemudian dienkrip menggunkan balik_md5() dan menghasilkan string chiper yang sama dengan didatabase.com/. Firewall dapat membatasi jaringan protokol yang digunakan. Jika sudah masuk maka outputnya akan seperti berikut +----------+----------------------------------+ | username | password | +----------+----------------------------------+ | guest | 0da656c1352c7ec167b91122dd6d1aff | +----------+----------------------------------+ Anda lihat password dari field bukan pas123. membatasi host yang akan dikoneksi.zonealarm. menyembunuyikan identitas komputer anda ketika online dan masih banyak lagi. Jika traffic tersebut tidak sesuai dengan ketentuan maka traffic tersebut akan dihentikan atau ditolak. Jalankan pada browser anda. merupakan alat yang digunakan untuk melindungsi komputer anda dari serangan pihak luar. Klik link Tambah User untuk menambah user baru. Firewall juga membatasi aktivitas seseorang dan mesin lain di luar firewall. else echo 'Data berhasil dimasukkan ke database<br><br>' . Sedangkan untuk software banyak yang tersedia secara gratis namun cukup baik seperti http://www. Untuk login user tidak perlu mengetikkan password 0da656c1352c7ec167b91122dd6d1aff.Masalah Keamanan // masukkan data ke database $hasil = mysql_query("INSERT INTO user VALUES ('$username'. Coba lihat isi dari tabel user pada phpMyAdmin atau MySQL monitor.php. Firewall menyaring paket dan menolak traffic yang tidak sesuai dengan ketentuan user. break. Bab 4 . Firewall Firewall yang berarti dinding api. Error Handling dan Contoh-contoh Aplikasi 228 . /**************/ } // akhir switch // tutup koneksi MySQL mysql_close(). ?> Simpan pada direktori hari-15 dengan nama secure_login. Untuk firewall yang berupa hardware harganya cukup mahal namun tingkat keamanannya lebih baik.php">Tes Login</a>'. '$password')"). Pada username isikan guest dan pada password isikan pas123. Sedangkan firewall yang berbentuk software merupakan sebuah program yang berjalan pada komputer anda. Hardware firewall biasanya seperti router dengan fungsi yang dapat menfilter traffic yang masuk.Masalah Keamanan. // jika ada kesalahan tampilkan if (!$hasil) echo 'Error: Gagal memasukkan data ke database'. Firewall dapat berupa hardware atau software.'<a href="secure_login. Software ini memonitor semua traffic dari satu jaringan ke jaringan yang lain.

dan baris keberapa. Materi yang harus anda kuasai antara lain: Programming Error Syntax Error Runtime Error Logic Error Itulah beberapa materi yang harus anda kuasai. String harus berada diantara tanda petik (petik satu atau petik dua). Programming Error Bahasa pemrograman apapun yang anda gunakan. Seperti namanya kesalahan ini disebabkan karena kita salah menuliskan syntax pada kode kita.Error Handling Error Handling Pada materi kali ini kita akan membahas bagaimana menangani suatu error (Error Handling). Untuk yang pertama kita akan membahas syntax error. Jika kita melanggarnya maka script kita tidak akan berkerja. Dan PHP menampilkan pesan error pada saat kita mencoba mengeksekusi script tersebut. Error yang terjadi tidak selalu pada baris yang ditunjukkan oleh PHP. Dimana kita lupa tidak memberi tanda titik koma (.php on line 3 Pesan error diatas disebabkan oleh kode berikut <?php $string = 'Apakah Saya Error?' echo $string. Seperti yang kita tahu Syntax merupakan aturan baku yang harus diikuti agar kode yang kita tulis valid.) pada akhir dari suatu statemen perintah. Contoh jika muncul error seperti ini Syntax Error Parse error: syntax error. Karena pesan error tersebut sangat berguna bagi kita untuk mengetahui jenis error.Masalah Keamanan. Runtime dan Logic Error. unexpected T_ECHO in C:\Apache2\htdocs\webmaster\Bab4\hari15\error. Syntax error juga sering disebut Parse Error.). Saya harap anda tidak kesal pada PHP karena mengeluarkan pesan error tersebut. Error yang terjadi biasanya berada pada baris sebulumnya dan pasti bukan baris setelah nomor error yang disebutkan. Contoh-contoh tersebut merupakan peraturan yang harus diikuti. Contoh lain jika pesan error seperti berikut Bab 4 . setidaknya bahasa itu pasti memiliki tiga tipe error pada pemrograman yaitu Syntax. Error Handling dan Contoh-contoh Aplikasi 229 . Contoh peraturan-peraturan yang harus kita ikuti pada PHP adalah akhir dari suatu statemen perintah harus diberi tanda titik koma(. ?> Jika anda mengira error yang terjadi pada baris ke-3 maka anda salah. Pada pesan error tersebut ada kata unexpected T_ECHO artinya perintah echo ini oleh PHP dianggap tidak terduga. pada file mana. Jika ingin membuat fungsi maka kita harus memberi keyword function dan kodenya diapit kurung kurawal. Error sebenarnya yang menyebabkan munculnya pesan tersebut adalah pada baris ke-2.

. Namun pada saat dijalankan muncul pesan error seperti berikut Warning: Division by zero in I:\Apache2\htdocs\webmaster\Bab4\hari-15\error. Bab 4 .04\PEAR') in I:\Apache2\htdocs\webmaster\Bab4\hari-15\error. Lain halnya dengan runtime error. Namun ketika dijalankan muncul pesan error seperti berikut Runtime Error Warning: main(tidak_ada.php').php on line 7 Kode yang menyebabkan error tersebut adalah <?php $a = 1. ?> Error diatas terjadi karena kita tidak memberi tanda kurung penutup } pada looping while yang kita tulis.php on line 4 Error diatas terjadi karena kita membagi(divide) bilangan dengan nol (zero). ?> Script diatas sudah valid dan tidak memiliki syntax error. while ($a < 6) { echo $a.include]: Failed opening 'tidak_ada. ?> Script diatas sudah sempurna dan tidak memiliki syntax error sama sekali.Error Handling Parse error: syntax error. $b = 0. $hasil = $a/$b.main]: failed to open stream: No such file or directory in I:\Apache2\htdocs\webmaster\Bab4\hari-15\error. Sehingga tanda penutup script PHP ?> dianggap tidak terduga (unexpected). unexpected $end in C:\Apache2\htdocs\webmaster\Bab4\hari15\error.php on line 2 Bagaimanapun tidak ada yang salah dengan kode kita. Secara matematika hasilnya tidak terdefinisi.php) [function. Rutime error lebih sulit untuk dideteksi dari pada syntax error. $a++. Lihat script berikut <?php include('tidak_ada. Error tersebut dapat dihindari dengan cara menentukan kondisi sebelum melakukan penghitungan. Munculnya runtime error biasanya disebabkan hubungan script anda dengan suatu aksi atau kondisi tertentu. Sehingga PHP mengeluarkan error tersebut.Masalah Keamanan. <?php $a = 5. Misalnya dengan statemen if.php.php on line 2 Warning: main() [function. Ini dikarenakan jika kita membuat syntax error PHP akan menampilkan pesan yang memberitahu kita dimana letak kesalahannya. namun kita coba memanggil file yang tidak ada yaitu tidak_ada.php' for inclusion (include_path='. Error Handling dan Contoh-contoh Aplikasi 230 .i:\php5. Jika syntax error begitu terdeteksi ketika script dieksekusi pertama kali. Secara umum syntax error adalah yang paling mudah ditangani.

txt) [function. Kesalahan tipe ini baisanya disebabkan karena kita tidak memiliki hak(permission) pada file tersebut. Jika anda menggunakan OS Windows maka kesalahan tipe ini mungkin tidak akan anda alami. Lihat contoh berikut Memanggil Fungsi Yang Tidak Ada Fatal error: Call to undefined function fungsiku() in I:\Apache2\htdocs\webmaster\Bab4\hari15\error. Error tipe ini sangat mudah ditangani karena PHP akan menampilkan pesan undifined function di file mana dan baris keberapa. eksekusi atau menulis. Namun kesalahan tipe ini sangat mudah dicari. Yaitu kesalahan pada parameter fungsi yang kita tulis. Membaca atau Menulis File Warning: file(fileku. Anda mungkin sering salah menulis fungsi karena salah pengejaan atau kurang karakter tertentu.php on line 2 Error diatas disebabkan oleh script berikut <?php fungsiku().php on line 2 Error diatas disebabkan oleh script berikut <?php ereg('string'). Sehingga muncul pesan error seperti diatas. Namun jika anda menggunakan OS yang berbasis UNIX seperti Linux. Jadi secara otomatis PHP akan mengeluarkan pesan undifined function artinya fungsi ini tidak terdifinisi. Misalnya permission untuk baca. ?> Fungsi ereg() parameter minimal yang harus diisi ada dua yaitu pola string yang dicari dan string yang dicari.Error Handling Penyebab umum runtime error antara lain: Memanggil fungsi yang tidak ada Membaca atau menulis file Interaksi dengan MySQL dan database Mari kita bahas satu per satu. Bab 4 .Masalah Keamanan. Selain karena fungsi tersebut tidak ada. Namun pada kode diatas kita hanya mengisikan satu parameter saja.php on line 113 Error diatas terjadi karena kode berikut file(fileku. Error Handling dan Contoh-contoh Aplikasi 231 . Warning: Wrong parameter count for ereg() in I:\Apache2\htdocs\webmaster\Bab4\hari15\error. ?> Fungsi fungsiku() tidak ada karena kita tidak membuatnya. BSD dan lainnya.file]: failed to open stream: Permission denied in /home/proyek/error. Misalnya fungsi ereg_replace() mempunyai tanda _ sebagai pemisah antar kata sedangkan fungsi addslashes() tidak.txt). Ada satu kesalahan lagi yang berhubungan dengan fungsi. Masalah permission mungkin sering anda alami jika anda tidak bekerja pada direktori home anda.

Logic Error (Kesalahan Logika) Tipe error inilah yang paling sulit untuk kita temukan dan perbaiki. Jika anda tidak menghandel error yang terjadi maka scrit anda akan terus dieksekusi dan terus berinteraksi dengan database. tulis dan eksekusi. if (!$koneksi) exit(“Gagal melakukan koneksi ke MySQL server. Contoh sederhana kode yang menampilkan logic error adalah seperti berikut <?php for ($i=0. Seperti kode yang pernah kita tulis sebelumnya kita dapat menghandel error menggunakan statemen if. Sebaiknya jangan gunakan tanda @ karena pesan error secara spesifik tidak akan anda ketahui. $i++). Namun hasilnya tidak seprti yang anda inginkan. Dengan demikian anda daat dengan mudah menghandel kemungkinan terjadinya error. # chmod 777 fileku.txt Interaksi dengan MySQL atau Database Lainnya Berintaksi dengan MySQL akan banyak menghasilkan error. menyebabkan logic error Blok kode ini sudah sepenuhnya benar.Masalah Keamanan. looping ke-1 dan seterusnya. “user”.txt diset untuk tidak dapat dibaca maka yang terjadi adalah error seperti diatas. “password”). Fungsi mysql_connect() saja setidaknya dapat memunculkan error berikut MySQL Connection Failed: Can’t Connect to MySQL server on ‘namahost’ (111) -> gagal melakukan koneksi MySQL Connection Failed: Can’t connect ti MySQL server through socket ‘/tmp/mysql. Akan tetapi yang ditampilkan pada layar adalah Looping ke-10 Bab 4 . Anda sebagai programmer menginkan blok kode dieksekusi sepuluh kali. } ?> tanda . Kontak Admin”). Pastikan permission direktori atau filenya dapat kita baca. @ $koneksi = mysql_connect(“localhost”. Dengan menggunakan kode seperti diatas maka pesan error yan gdimunculkan pada user akan sesuai dengan keinginan kita. Namun anda harus login sebagai root. { echo "Looping ke-$i<br>". Tanda @ kita gunakan agar error internal yang diciptakan PHP karena kegagalan fungsi tidak ikut dicetak ke layar. Sehingga hasilnya looping ke-0. Error Handling dan Contoh-contoh Aplikasi 232 . Dan tidak memiliki syntax error. Namun jika anda kode anda pada tahap pengembangan (development). Kode yang anda tulis sudah sepenuhnya benar dan tidak memiliki syntax error didalamnya. $i<10.sock’ (111) -> Masalah soket pada sistem UNIX MySQL Connection Failed: Unknow MySQL server host ‘namahost’ -> Nama host tidak diketahui atau tidak terdaftar pada tabel mysql MySQL Connection Failed: Access denied for user: ‘namauser@localhsot’ (Using password: YES) Seperti fungsi lainnya mysql_connect() juga akan mengembalikan nilai false jika terjadi error.Error Handling Kode diatas sebenarnya sudah benar namun karena permission dari file fileku. Dengan demikian hasil yang ditampilkan akan kacau dan terlihat tidak profesional. Anda dapat menggunakan perintah chmod untuk merubah permission direktori atau file. Untuk itu pastikan jika anda membuat script PHP yang berinteraksi dengan file.

) sehingga looping for tidak diulang sebanyak 10 kali. ********** Bab 4 . Melainkan hanya dieksekusi satu kali.Masalah Keamanan. Error Handling dan Contoh-contoh Aplikasi 233 .Error Handling Ini dikarenakan pada baris pertama yaitu anda memberi tanda titik koma (.

Bab 4 . Error Handling dan Contoh-contoh Aplikasi 234 .Masalah Keamanan.

Namun untuk mempermudah pemahaman. Masalah-masalah yang ada pada proyek ini adalah Pada bagian pengunjung User dihadapkan pada tiga pilihan polling (polling pemain terfavorit. NgawurPolling.NgawurPolling.localhost Hari Ke-16 Ikuti langkah-langkah berikut: Masuk pada direktori C:\Apache2\htdocs\webamster\Bab4\ Buat folder baru. polling klub terfavorit dan polling band terfavorit). Klub Polling Pemain Polling Klub Hasil Pol.localhost Dari namanya saja sudah terlihat bahwa polling ini hanya awur-awuran saja. Pemain Halaman Utama Hasil Pol. User hanya boleh mengikuti polling satu kali saja pada setiap kategori polling (jika admin memang menerapkannya). Kita mulai dari website yang pertama yaitu NgawurPolling. Tapi itu untuk pollingnya. Hasil Pol. sedangkan untuk kodenya sama sekali tidak ngawur. namai folder tersebut hari-16-17 & 17 Contoh-contoh Aplikasi Pada materi kali ini kita akan mencoba membuat aplikasi-aplikasi yang biasanya terdapat pada suatu website. Bab 4 . Aplikasi-aplikasi yang akan kita buat adalah NgawurPolling (website polling) Super Iklan (website iklan) Forum Bareng (website forum) Ketiga website diatas sebenarnya lebih cocok untuk dijadikan satu kesatuan dalam satu website. Band Polling Band Hasil Pol. Semua Kategori Gambar 4. Skema berikut menunjukkan hubungan antar halaman.4: Skema halaman NgawurPolling Sketsa Proyek Sebelum melanjutkan ada beberapa masalah yang pemecahannya akan kita terapkan pada website NgawurPolling. kita membuatnya secara terpisah.Masalah Keamanan. Dalam dua hari ke depan kita akan mengerjakan aplikasi ini. Error Handling dan Contoh-contoh Aplikasi 235 . Dan bahkan rasanya paling kompleks diantara proyek-proyek yang pernah kita kerjakan. Setelah anda mengerti anda dapat menggabungkannya menjadi satu website.

Artinya tidak ada yang sama satu sama lain. inc dan log Daftar file yang akan kita buat untuk membangun website NgawurPolling ditunjukkan pada tabel 4. Alamat IP satu komputer dengan komputer lain bersifat unik. Hasil polling ditunjukkan oleh warna grafik yang berbeda-beda pada masing-masing kategori.php  Menampilkan semua hasil polling  polling.Masalah Keamanan. User dapat melihat hasil polling masing-masing kategori atau hasil polling semua kategori. Sedangkan untuk komputer kita pada jaringan virtual yaitu localhost alamat IP-nya adalah 127.php  Melihat. menambah. Admin dapat melihat perolehan suara dari masing-masing kandidat.localhost Untuk mengecek apakah user sudah melakukan polling atau belum dapat dicek dari cookie atau alamat IP.php  Menampilkan hasil polling band dan memproses polling band  poll_semua.1. Pada bagian administrator Untuk masuk ke halaman administrator.NgawurPolling.php  Melihat. Untuk mengaplikasikan proyek ini sebelumnya ikuti langkah-langkah berikut untuk konfigurasi direktori: Masuk pada direktori C:\Apache2\htdocs\webmaster\Bab4\hari-16-17\ Buat folder baru namai folder tersebut polling Masuk pada direktori polling yang baru anda buat Buat beberapa folder baru berikut admin.php  fungsi. dan menghapus daftar polling band    Nama File  index.php  class_polling.0. dan menghapus daftar polling pemain  klub.7.php  Menampilkan halaman utama dan menampilkan form polling  poll_pemain. Untuk alamat IP komputer yang berada dalam jaringan lokal misalnya192. Error Handling dan Contoh-contoh Aplikasi .php  Menampilkan form login atau menu utama untuk admin  pemain.php    Nama File  red_bar.1.1 Daftar file untuk website NgawurPolling Direktori polling  Nama File  Fungsi  index. dan menghapus daftar polling klub  band.php  Menampilkan hasil polling klub dan memproses polling klub  poll_band.php  header.1 berdasarkan letak direktorinya. gambar.jpg    Direktori polling\inc  Fungsi  Me-redirect lokasi halaman  Menampilkan header HTML untuk semua halaman  Berisi kumpulan fungsi untuk keperluan NgawurPolling  Class untuk menggambar grafik dari masing-masing kandidat  Berisi konfigurasi untuk NgawurPolling    Direktori polling\gambar  Fungsi  Grafik bar warna merah  236 Bab 4 .0.php  Menampilkan hasil polling pemain dan memproses polling pemain  poll_klub.php  konfig. menambah.sql  File SQL untuk membangun database polling      Direktori polling\admin  Nama File  Fungsi  index. IP(Internet Protocol) merupakan alamat sebuah komputer dalam suatu jaringan baik lokal maupun internet. Tabel 4. Admin dapat menghapus dan menambah daftar poling dari masing-masing kategori.168. admin harus memasukkan username dan password.php  Melihat. menambah.

Selanjutnya kita akan membuat file SQL untuk membangun database polling yang kita gunakan untuk menyimpan statistik polling.Klik lembar gambar tersebut.. suara int(5) NOT NULL ) TYPE='MyISAM' 237 Bab 4 .. Klik menu Image > Attributes.jpg langkahnya sama hanya saja ganti warnanya dengan hijau sedangkan untuk blue_bar. Jalankan PHP DESIGNER 2005 klik menu File > New > SQL lalu ketik kode SQL berikut Script dari file polling.buat tabel poll_band CREATE TABLE poll_band ( band varchar(25) NOT NULL PRIMARY KEY.jpg  index.jpg warnanya adalah biru. -. Pada isian Width isikan 5 dan pada Height isikan 15. setelah itu akan muncul window Attributes.php   Nama File  ip. CREATE DATABASE polling. Namun pastikan satuan pada Units adalah pixel. -. Arahkan lokasinya ke C:\Apache2\htdocs\webmaster\Bab4\polling\gambar\ Simpan dengan nama red_bar. Aplikasi yang kita gunakan adalah aplikasi bawaan Windows untuk mengolah gambar yaitu Paint.localhost green_bar. Setelah itu klik OK.JPE.php Grafik bar warna hijau  Grafik bar warna biru  Meredirect ke halaman utama   Direktori polling\log  Fungsi  Untuk menyimpan alamat IP dan jenis polling user Meredirect ke halaman utama Untuk file pertama kita akan membuat file gambar untuk grafik bar.Masalah Keamanan.jika sudah ada hapus DROP DATABASE IF EXISTS polling. untuk menyimpan gambar. Setelah tombol Setelah itu arahkan kursor ke lembar gambar.JFIF). Pada window Save As pastikan isi dari Save as type: adalah JPEG(*. suara int(5) NOT NULL ) TYPE='MyISAM' COMMENT='Tabel Polling untuk Pemain Sepak Bola Terfavorit'. Jalankan Paint dengan cara klik Start >Program > Accecories > Paint atau klik Start > Run lalu ketikkan mspaint [ENTER] atau klik OK.JPG. -..sql -. toolbox. Error Handling dan Contoh-contoh Aplikasi .*.dat  index. kemudian warna lembar gambar akan berubah menjadi merah.JPEG. Setelah itu klik menu File > Save As. Untuk file green_bar. Lalu klik tombol (Fill With Color).jpg. aktif klik warna merah pada color box yang terletak dibagian bawah. dan color box.*..NgawurPolling. Setelah Paint terbuka akan nampak ruang kerja berupa kotak putih(lembar gambar). Lembar gambar akan berubah menjadi sangat kecil.jpg  blue_bar.*.buat database polling -.aktifkan database polling USE polling.buat tabel poll_pemain CREATE TABLE poll_pemain ( pemain varchar(20) NOT NULL PRIMARY KEY.

.php <?php // jika user mencoba masuk ke direktori // pindahkan ia ke halaman utama header ('Location: . File berikutnya juga sangat sederhana karena hanya berisi kumpulan kode HTML. password varchar(32) NOT NULL ) TYPE='MyISAM'.Masalah Keamanan.* TO userpoll IDENTIFIED BY 'poll123'./index...: untuk menampilkan header halaman *** ***********************************************************/ ?> <html> <head> <style> Bab 4 .sql.. Error Handling dan Contoh-contoh Aplikasi 238 .... Fungsi file ini adalah untuk mencetak header HTML pada setiap halaman. UPDATE. dan polling\gambar dengan nama index. Simpan pada direktori polling dengan nama polling.php <?php /********************************************************** ** Nama File.: 16-10-2005 *** ** Penjelasan. polling\log.. suara int(5) ) TYPE='MyISAM' COMMENT='Tabel Polling untuk Klub Terfavorit'. -.php *** ** Penulis.NgawurPolling.. Eksekusi file berikut melalui MySQL atau phpMyAdmin. Untuk membuatnya klik File > New > PHP pada PHP DESIGNER 2005 lalu ketik kode berikut Script dari file index.: Rio Astamal *** ** Tanggal. -... Karena file ini yang akan kita panggil pada hampir setiap halaman pada proyek kita.. INSERT..: header.buat privilege untuk database polling GRANT SELECT.. -. Buat file PHP baru pada PHP DESIGNER 2005 lalu ketik kode berikut Script dari file header.localhost COMMENT='Tabel polling untuk Band Terfavorit'.php')..php. DELETE ON polling. Tugas file ini hanyalah melakukan redirect ketika ada ayng mencoba masuk ke direktori inc..buat tabel untuk login admin CREATE TABLE admin ( username varchar(16) NOT NULL PRIMARY KEY. Kita mulai proyek kita dengan membuat file yang berada pada direktori inc terlebih dahulu.buat tabel poll_klub CREATE TABLE poll_klub ( klub varchar(25) NOT NULL PRIMARY KEY. ?> Save As tiga kali masing-masing pada direktori polling\inc.

php'..NgawurPolling. // yes atau no // tentukan masa aktif cookie dalam detik $masa_aktif = time() + 60 * 60 * 24 * 7..php *** ** Penulis.... Konfigurasi ini meliputi pengecekan user..: Rio Astamal *** ** Tanggal.jpg'.: fungsi..: berisi konfigurasi untuk polling *** ************************************************************/ // cegah pengaksesan langsung dari browser if (eregi('konfig.. // dalam pixel // batasi user untuk memilih hanya satu kali dengan cookie $cek_cookie = 'no'...: 16-10-2005 *** Bab 4 ...jpg'.. // grafik untuk polling band // tentukan lebar maximal dari gambar grafik $lebar_max = 400..php *** ** Penulis.... font-size: 11px} a{color: #076fd0} a:visited{color: #o76fd0} </style> </head> <body> Simpan pada direktori polling\inc dengan nama header.. Klik File > New > PHP untuk membuat file PHP baru lalu ketik kode berikut Script dari file konfig..php <?php /*********************************************************** ** Nama File.php. Untuk grafik bar pada masingmasing polling kita simpan pada array $gambar.. File berikutnya adalah file yang berisi konfigurasi untuk NgawurPolling.... // tentukan gambar yang digunakan untuk masing2 polling $gambar['pemain'] = 'gambar/green_bar.. // grafik untuk polling pemain $gambar['klub'] = 'gambar/red_bar.. // grafik untuk polling klub $gambar['band'] = 'gambar/blue_bar..: Rio Astamal *** ** Tanggal... File berikutnya yang akan kita buat adalah file yang menyimpan semua fungsi untuk yang digunakan pada setiap halaman NgawurPolling. Untuk membuatnya seperti biasa File > New > PHP lalu ketik kode berikut Script dari file fungsi.jpg'..localhost body{font-family: verdana.php. Error Handling dan Contoh-contoh Aplikasi 239 . font-size: 11px} td{font-family: verdana..Masalah Keamanan.. // yes atau no ?> Simpan pada direktori polling\inc dengan nama konfig. grafik bar yang digunakan dan sebagainya.: konfig.: 16-10-2005 *** ** Penjelasan. // 1 minggu // batasi user untuk memilih hanya satu kali dengan alamat IP $cek_ip = 'no'. $_SERVER['PHP_SELF'])) exit('Error: Akses ditolak')..php <?php /********************************************************** ** Nama File.

'userpoll'.'). return $filter. $_SERVER['PHP_SELF'])) exit('Error: Akses ditolak. Error Handling dan Contoh-contoh Aplikasi 240 .localhost ** Penjelasan. return true. // kembalikan nilai true } } Bab 4 . } // fungsi untuk mengecek session function cek_session($nama_ses) { // jika session kosong if (!isset($_SESSION[$nama_ses])) return false.NgawurPolling.php'. numerik dan _ function filter_str($string) { $filter = ereg_replace('[^a-zA-Z0-9_]'. } // fungsi untuk mengenkripsi string dengan metode MD5 // dan membalik urutannya function balik_md5($string) { // untuk membalik urutan string digunakan fungsi strrev() $chiper_text = strrev( md5( $string ) ). 'poll123'). ''... // jika gagal melakukan koneksi kembalikan false if (!$koneksi) return false. return $chiper_text. return true.: Kumpulan fungsi untuk polling *** ***********************************************************/ // cegah pengaksesan langsung dari browser if (eregi('fungsi. else { // pilih database yang digunakan mysql_select_db('polling'). } } // fungsi untuk menyaring string selain alpabet. // kembalikan nilai false else // jika tidak kosong return true. // kembalikan false else { // jika tidak kosong hancurkan session tersebut unset($_SESSION[$nama_ses]). $string). session_destroy(). // fungsi untuk mengkoneksikan dengan MySQL server function konek_db() { // untuk username = userpoll dan password = poll123 @ $koneksi = mysql_connect('localhost'.Masalah Keamanan. // kemblikan nilai true } // fungsi untuk logout (menghapus session) function logout($nama_ses) { // jika session kosong if (!isset($_SESSION[$nama_ses])) return false.

= '<br><input type="submit" value="POLLING">'. $i++) { $bagian = explode('#-#'. $field) { // lakukan query untuk mendapatkan daftar $hasil = mysql_query("SELECT * FROM $tabel").= '<input type="radio" name="'.$data[0]. Error Handling dan Contoh-contoh Aplikasi 241 . // kembalikan hasil dari daftar return $daftar. // lakukan looping untuk mencocokan setiap ip dan polling for ($i=0.'" value="' .Masalah Keamanan. // untuk jenis polling // // // if } return true. $nama_poll)) return false.php. $ip) && ereg($jenis_poll.$data[0]. Maka hanya fungsi yang baru saja yang akan saya jelaskan. // untuk alamat ip $nama_poll = $bagian[1].localhost // fungsi untuk menampilkan daftar polling sesuai parameter function daftar_poll($tabel. $letak='log/ip. // hitung jumlah baris berguna untuk looping for $jml_baris = count($daftar_ip).$field. // pecah setiap bagian $ip = $bagian[0]. Enkripsi yang digunakan adalah MD5 setelah dienkripsi kemudian urutan dari string chiper kita balik dengan menggunakan strrev(). } ?> // jika tidak ada kesalahan kembalikan true jika alamat IP dan jenis polling cocok maka ia pernah mengikuti polling pada kategori tersebut jadi kembalikan false (ereg($ip_user. PENJELASAN SCRIPT Karena sebagian besar fungsi sudah pernah kita buat. $daftar_ip[$i]). sedangkan yang kedua adalah nama untuk setiap data yang dipost. } $daftar . Untuk mendapatkan semua daftar polling Bab 4 .'<br>'. // tampilkan daftar dengan looping while ($data = mysql_fetch_array($hasil)) { $daftar . Simpan pada direktori polling\inc dengan nama fungsi. } // fungsi untuk mengecek kecocokan alamat IP dan jenis polling function cek_ip($jenis_poll. // dapatkan alamat ip user // buka dengan file() untuk mengubah setiap baris menjadi array $daftar_ip = file($letak). Parameter pertama adalah tabel yang digunakan. Fungsi ini mempunyai dua parameter yang keduanya wajib diisi. Fungsi berikutnya adalah daftar_poll(). Fungsi yang baru adalah balik_md5().'">'.dat') { $ip_user = $_SERVER['REMOTE_ADDR']. Fungsi ini memerlukan satu parameter yaitu string yang akan dienkrip.NgawurPolling. $i<$jml_baris.

$grafik. Format dari isi file ip. $total_pemilih. Fungsi ini memiliki dua parameter satu wajib diisi dan satu lagi opsional.: Rio Astamal *** ** Tanggal.txt adalah alamat_ip_user#-#jenis_polling.. } Bab 4 . Untuk itu kembalikan nilai false.NgawurPolling. Untuk membuatnya klik menu File > New > PHP lalu ketik kode berikut ini Script dari file class_polling. Karena dibuka dengan file maka setiap baris akan menjadi array dari $daftar_ip. Kita mencocokkan alamat ip dan jenis polling menggunakan ereg...localhost didatabase kita gunakan looping while..: 16-10-2005 *** ** Penjelasan.. $tabel.: class untuk menggambar grafik *** ***********************************************************/ // cegah pengaksesan langsung dari browser if (eregi('class_polling.. File yang akan kita buat berikutnya adalah file yang berisi class untuk menggambar grafik bar. var $suara_terbanyak. Maka user hanya boleh memilih satu kali saja pada satu jenis polling...: class_polling. $hasil_query.. Jika alamat ip dan jenis polling cocok maka ia pernah mengikuti polling.. Fungsi yang terakhir adalah cek_ip()..php *** ** Penulis.php <?php /********************************************************** ** Nama File. } // metode untuk menentukan lebar maximal grafik function get_lebar_max($angka) { $this->lebar_max = $angka.Masalah Keamanan. $persen. // buat class bernama polling class polling { // deklarasikan properti var $gambar... $_SERVER[‘REMOTE_ADDR’] merupakan array super global yang berisi alamat ip user yang mengakses website. Pada blok looping kita memecah setiap bagian dengan explode() untuk mendapatkan alamat ip dan jenis polling. Parameter pertama adalah untuk mengidentifikasi jenis polling yang akan kita cek. Jika tidak diisi defaultya adalah log/ip. Parameter ke dua adalah untuk file yang kita gunakan.. $lebar_max.. $jml_kandidat.... } // metode untuk memilih tabel yang digunakan function get_tabel($nama_tabel) { $this->tabel = $nama_tabel.txt. $_SERVER['PHP_SELF'])) exit('Error: Akses Ditolak')..php'. // buat metode untuk mendapakan lokasi gambar function get_gambar($lokasi) { $this->gambar = $lokasi. Error Handling dan Contoh-contoh Aplikasi 242 . Karena bersifat memilih maka input yang kita gunakan adalah radio button.php. Sebagaimana kita tahu jika kita memberi nilai yes pada $cek_ip di file konfig.

2). } // metode untuk mendapatkan persentase masing2 kandidat function get_persen($suara) { // jika total pemilih sama dengan nol tetapkan persen = 0 // untuk menghindari pembagian dengan nol // MATEMATIKA-nya /****************************************************** ** % = (jumlah suara kandidat : total pemilih) x 100 * *******************************************************/ if ($this->total_pemilih == 0) $this->persen = 0.total pemilih atau // sekedar melakukan query biasa function query_SQL($q = '') { // jika parameter tidak diisi lakukan query berikut if ($q == '') $query = mysql_query("SELECT * FROM $this->tabel"). } // metode untuk mendapatkan kandidat yang memiliki suara terbanyak function get_suara_terbanyak() { $cari_suara = mysql_fetch_array($this->hasil_query). else $this->persen = round(($suara / $this->total_pemilih) * 100.NgawurPolling. // 2 menunjukkan jumlah digit dibelakan koma Bab 4 . berguna untuk mendapatkan // jumlah kandidat. // sama dengan $total = $total + $kolom['suara'] } $this->total_pemilih = $total. $this->suara_terbanyak = $cari_suara['suara']. Error Handling dan Contoh-contoh Aplikasi 243 . // kembalikan hasil dari query } // metode untuk menentukan jumlah kandidat function get_jml_kandidat() { $hasil = mysql_num_rows($this->hasil_query). } // metode untuk mendapatkan jumlah total pemilih function get_total_pemilih() { // lakukan looping untuk menjumlah setiap isi dari kolom suara // looping diulng sebanyak jumlah kandidat yang ada for ($i=0. $total += $kolom['suara']. $this->jml_kandidat = $hasil. return $this->hasil_query.suara terbanyak. // kembalikan nilai karena akan dicetak ke layar return $this->total_pemilih. $i<$this->jml_kandidat. $i++) { $kolom = mysql_fetch_array($this->hasil_query).localhost // metode untuk melakukan query.Masalah Keamanan. else $query = mysql_query($q). $this->hasil_query = $query.

PENJELASAN SCRIPT Pada class polling diatas langkah pertama adalah kita mendeklarasikan properti. Kita ambil contoh pada metode pertama yaitu get_gambar().'">'. } // metode untuk meggambar grafik function gambar_grafik($suara) { // untuk menentukan lebar masing2 grafik MATEMATIKA-nya adalah /************************************************************** ** lebar = (lebar maximal x jumlah suara) : suara terbanyak ** ***************************************************************/ // jika suara terbanyak 0 tetapkan lebar = 0 untuk menghindari // pembagian dengan 0 if ($this->suara_terbanyak == 0) $lebar = 0. Pada metode ini memiliki satu parameter yaitu lokasi file gambar yang digunakan.$lebar.php. Sebenarnya tanpa deklarasipun tidak masalah. Jika kita ingin mendapatkan nilai get_gambar() pada class itu sendiri maka kita gunakan $this->gambar bukan memanggil metodenya.NgawurPolling.localhost // kembalikan nilai karena akan dicetak ke layar return $this->persen. Lihat cuplikan metode get_gambar() berikut function get_gambar($lokasi) { $this->gambar = $lokasi. Kemudian diikuti oleh tanda -> dan properti yang digunakan.Masalah Keamanan.$this->gambar. else Bab 4 . Pada class ini terdapat sembilan metode. Namun kedelapan metode tujuan akhirnya adalah metode ke sembilan yaitu gambar_grafik(). $this->grafik= '<img src="'. // kembalikan nilai karena akan dicetak ke layar return $this->grafik. Error Handling dan Contoh-contoh Aplikasi 244 . Hal ini hanya agar pengerjaan kita lebih terstruktur. Metode ini digunakan untuk mendapatkan persentase dari masing-masing kandidat polling. function get_persen($suara) { if ($this->total_pemilih == 0) $this->persen = 0. } } // akhir dari class ?> Simpan dengan pada direktori polling\inc dengan nama class_polling. } Jika metode ini dipanggil pada script nilai dari metode ini adalah parameter yang dimasukkan user. Perhatikan pada metode get_persen(). else $lebar = round(($this->lebar_max * $suara) / $this-> suara_terbanyak). Pada suatu metode untuk merujuk hasil dari metode itu sendiri kita gunakan variabel istimewa yaitu $this.'" height="15"width="' .

localhost $this->persen = round(($suara / $this->total_pemilih) * 100. if ($proses == '') $proses = 'login'..NgawurPolling. File ini berfungsi untuk login. Klik menu File > New > PHP pada PHP DESIGNER 2005 lalu ketik kode berikut Script dari file index. metode get_persen() bergantung pada nilai dari metode get_total_pemilih() yaitu $this->total_pemilih... Bab 4 .. Si A memperoleh 4 suara..: Rio Astamal *** ** Tanggal. Akhir dari file yang berada pada direktori inc File yang akan kita buat berikutnya adalah file utama untuk halaman administrator..php <?php /********************************************************** ** Nama File..php untuk menmpilkan header halaman include ('. Metode yang terakhir yaitu gambar_grafik() merupakan metode yang kita gunakan untuk menggambar grafik. // panggil file fungsi. Kita asumsikan lebar maximal grafiknya adalah 400./inc/fungsi.php'). return $this->persen.: index. // panggil file header. Kita mengembalikan nilai dari metode ini dengan return karena akan dicetak ke layar.Masalah Keamanan. // dapatkan proses dari URL $proses = $_GET['proses']...php include ('. Untuk menentukan lebar grafik dari masingmasing kandidat digunakan perhitungan sebagai berikut lebar = (lebar maximal x jumlah suara) : suara terbanyak Misalnya ada tiga kandidat A. Error Handling dan Contoh-contoh Aplikasi 245 ...../inc/header. Jadi suara terbanyak dari polling diatas adalah 6 suara..: 16-10-2005 *** ** Penjelasan.....: Untuk memanaje polling *** ***********************************************************/ // panggil session_start() karena berhubungan dengan session session_start().. Untuk melakukan perhitungan kita memanggil fungsi round().. Logika kerjanya adalah kita menggunakan tag HTML <img> yang isinya adalah $this->gambar dan untuk lebar maksimalnya adalah sesuai dengan isi dari metode get_lebar_max() yaitu $this->lebar_max. B. } Perhatikan bahwa untuk mendapatkan persentase.php').. 2). Si B memperoleh 2 suara sedangkan Si C 6 suara. dan C. maka kandidat yang memperoleh suara tertinggi pasti lebar grafiknya adalah 400 karena: A => ( 400 x 4 ) : 6 = 266 pixel B => ( 400 x 2 ) : 6 = 133 pixel C => ( 400 x 6 ) : 6 = 400 pixel ( Terbukti ) Bagaimana sudah mengerti bukan?.php *** ** Penulis. menampilkan menu dan logout.

'<input type="submit" value="LOGIN">' . /*************/ /*******************/ case 'proses_login': /*******************/ // ambil data yang di-post sekaligus filter $username = filter_str($_POST['username']).'</form>' .php"><< Back To Polling Page</a></p>'.php">Manaje Polling Klub</a><br></p>' .php">Manaje Polling Band</a><br></p>' ..php?proses=proses_login" method="post">' .'Password: <input type="password" name="password"><br><br>' .'<form action="index.php">Manaje Polling Pemain</a></p>' . // enkripsi password agar sama dengan yang ada didatabase $password = balik_md5($password). // handel setiap proses dengan switch dan case switch ($proses) { /************/ case 'login': /************/ // cek apakah admin sudah login atau belum // jika sudah tampilkan menu.Masalah Keamanan.php">di sini</a> untuk masuk ke admin area. // lakukan query untuk mencocokan data $hasil = mysql_query("SELECT * FROM admin WHERE username='$username' AND password='$password'"). } else Bab 4 ./index.php?proses=logout">Logout</a><br></p>'.localhost // filter setiap isi dari proses $proses = filter_str($proses). $password = filter_str($_POST['password']). // koneksikan ke database if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server.'<p><a href=".Mohon Login</h2>' . jika belum tampilkan form login if (!cek_session('admin')) { echo '<h2>Admin Area . Error Handling dan Contoh-contoh Aplikasi 246 .'<p><a href="index. } break.'<p><a href="band.'<p><a href="klub.NgawurPolling. echo 'Login berhasil. } else { // jika sudah terisi maka tampilkan menu untuk memanaje polling echo '<h2>Selamat Datang di Admin Area</h2>' . Klik <a href="index. // jika jumlah baris yang dikembalikan lebih dari nol maka cocok if (mysql_num_rows($hasil) > 0) { // buatkan session bernama admin $_SESSION['admin'] = $username. username dan password').'.'<p><a href="pemain.'Username: <input type="text" name="username"><br><br>' . <br> Cek kembali settingan untuk host.

kita tidak menyediakan form untuk menambahkan account admin ke database melainkan langsung melakukan query */ // tentukan username dan password yang diinginkan $username = 'admin'. <a href="index. /**********/ } // akhir dari switch mysql_close().'<a href="index.localhost echo 'Username atau Password salah!. /***********/ /*************/ case 'logout': /*************/ // panggil fungsi logout() untuk menghancurkan session if (!logout('admin')) echo 'Logout gagal. /***********/ /********************************/ case '__add_admin_to_database__': /********************************/ /* case ini berfungsi untuk memasukkan account administrator ke database ini dikarenakan fungsi yang kita gunakan login adalah balik_md5() dan untuk menghasilkan string chiper ini hanya bisa dilakukan lewat script PHP bukan pada MySQL untuk memanggil fungsi ini harus diketikkan langsung pada address bar index. <a href="index.'. else echo 'Anda telah logout dari sistem.php?proses=__add_admin_to_database__ lalu ENTER untuk mencegah eksploitasi sistem.NgawurPolling.php">Login</a> dulu. else echo 'Account untuk administrator berhasil dimasukkan ke database. <a href="index.'. Error Handling dan Contoh-contoh Aplikasi 247 . $password = balik_md5('__pas123__'). if (!$hasil) echo 'Error: Gagal memasukkan ke database.php">Login</a> kembali. break. Mungkin account sudah dimasukkan. break. '$password')").'. break.'.php">Login</a>'. // lakukan query INSERT untuk memasukkan account ke database $hasil = mysql_query("INSERT INTO admin VALUES('$username'. // tutup koneksi ke MySQL ?> </body> </html> Bab 4 . <br>' .php">Login</a> kembali.Masalah Keamanan.

Yang berarti tidak boleh ada yang sama..... Untuk login gunakan username admin dan password __pas123__..php <?php /********************************************************** ** Nama File. File ini berfungsi untuk menampilkan.NgawurPolling.Masalah Keamanan. Jika anda memanggil ulang proses ini (tekan Refresh atau F5) maka akan muncul pesan error.: Rio Astamal *** ** Tanggal.. Jadi untuk membuat account untuk administrator kita harus memanggil case ini dulu dengan cara http://localhost/webmaster/Bab4/hari-1617/admin/index.: untuk memanaje polling pemain *** ***********************************************************/ Bab 4 . Tentu untuk memanggil fungsi tersebut hanya dapat dilakukan lewat script PHP. Pada PHP DESIGNER 2005 klik menu File > New > PHP. Error Handling dan Contoh-contoh Aplikasi 248 . Ini dikarenakan sifat dari kolom username pada tabel admin adalah primary key.: pemain......php?proses=__add_admin_to_database__ . script-script lainnya akan kita tulis dengan cara demikian agar mudah dipahami. Secara otomatis __pas123__ akan dienkrip dengan fungsi balik_md5() sehingga akan menghasilkan string chiper yang sama dengan yang ada didatabase.: 16-10-2005 *** ** Penjelasan.. menambah dan menghapus daftar pemain yang menjadi subjek polling...php.localhost Simpan pada direktori polling\admin dengan nama index. Case ini kita buat karena untuk menghasilkan string chiper text yang berisi algoritma md5 yang susunannya dibalik hanya bisa dilakukan dengan fungsi balik_md5().php *** ** Penulis. Gambar 4.. lalu ketik kode berikut Script dari file pemain.. Perhatikan bahwa bukan hanya script ini saja.. PENJELASAN SCRIPT Yang perlu saya jelaskan disini adalah case __add_admin_to_database__.5: Halaman utama untuk admin File berikutnya adalah file yang kita gunakan untuk memanaje polling untuk pemain terfavorit...

'</td><td align="center">'. dan password').'<td><b>Nama Pemain</b></td>' . // koneksikan ke MySQL server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL Server.php include ('. else { // handel setiap proses dengan switch dan case switch ($proses) { /***********/ case 'view': /***********/ echo '<h3>Daftar Polling Untuk Pemain Terfavorit</h3>'.php').'</tr>'. // panggil file header. // cek apakah administrator sudah login atau belum if (!cek_session('admin')) echo 'Anda belum login. // tampilkan semua pemain dan hasil suaranya $hasil = mysql_query("SELECT * FROM poll_pemain").$data[1]. // cek jumlah baris yang dikembalikan if (mysql_num_rows($hasil) == 0) echo 'Tidak ada daftar pemain untuk polling. // hapus kita beri tanda [] karena bertipe array } Bab 4 . username.<br><br> <a href="pemain.php?proses=tambah">Tambah Daftar</a>..php'). // filter isi dari proses $proses = filter_str($proses).localhost session_start().'<td align="center"><input type="checkbox" name="hapus[]" ' .'<td><b>Jumlah Suara</b></td>' .php">Login</a> dulu.'<td><b>Hapus?</b></td>' . <a href="index. '</td>' . else { echo '<form action="pemain.'<tr bgcolor="#d7e7f3">' .'. // lakukan looping untuk mendapatkan semua record while ($data = mysql_fetch_array( $hasil )) { echo '<tr><td>'.php?proses=hapus" method="post">' .$data[0]. // panggil file fungsi.NgawurPolling.'value="'.Masalah Keamanan. <br> Cek kembali settingan untuk host./inc/fungsi. if ($proses == '') $proses = 'view'. // cek isi dari proses $proses = $_GET['proses'].$data[0]./inc/header. Error Handling dan Contoh-contoh Aplikasi 249 .php include ('.'"></td>'..'.'<table border="0" cellpadding="4" cellspacing="0">' .

'</table>' .back()">Kembali</a>'). // buat variabel error berguna untuk mengidentifikasi error $error = 0. // tetapkan maksimal untuk polling 10 pemain if ($jml_field > 10) exit('Anda itu ingin membingukan pemilih dengan membuat pilihan sebanyak '. } echo '<input type="submit" value="TAMBAH">' . } break.') ' .'<a href="pemain.'</form></p>' .<br><br>' .'</form>'.' &nbsp &nbsp <input type="submit" value="TAMPILKAN">' . if (count($pemain) == 0) // hitung jumlah data yang dikirim exit('Error: Tidak ada pemain yang dimasukkan.'<p><a href="index.'</form>' .').'<form action="pemain.$jml_field.NgawurPolling.'Jumlah field: <input type="text" name="jml_field" value="1"> ' . // lakukan looping untuk memasukkan setiap field ke database foreach ($pemain as $nama) { if ($nama == '') Bab 4 . $i++) { echo intval($i + 1). echo '<p><form action="pemain. Error Handling dan Contoh-contoh Aplikasi 250 . /**************/ /*************/ case 'tambah': /*************/ // ambil data yang di post untuk menetapkan jumlah field $jml_field = $_POST['jml_field'].'Nama Pemain: <input type="text" name="pemain[]"><br><br>'. $i<$jml_field.Masalah Keamanan. break.localhost echo '<tr bgcolor="#d7e7f3" height="15"><td colspan="2"></td>' .php?proses=tambah">Tambah Daftar</a></p>'.php?proses=tambah" method="post">' . // buat field untuk menambah daftar pemain sebanyak $jml_field for ($i=0.'<td><input type="submit" value="HAPUS"></td></tr>' .'Isi jumlah field lalu tekan TAMPILKAN.'!.php?proses=proses_tambah" method="post">'.php">Halaman Utama</a> &nbsp ' .'<a href="index.<br><br> <a href="javascript: history. Maksimal adalah 10.php">Halaman Utama</a> &nbsp ' . /************/ /********************/ case 'proses_tambah': /********************/ // ambil data yang dipost $pemain = $_POST['pemain'].php">Polling Pemain</a>'.'<a href="pemain. echo '<h3>Tambah Nama Pemain untuk Polling</h3>' .

// tutup koneksi ke MySQL ?> </body> </html> Simpan pada direktori polling\admin dengan nama pemain.'<a href="pemain.php">Kembali</a>'). else echo 'Data berhasil dihapus dari database. } // jika ada kesalahan tampilkan if (!$hasil) echo 'Error: Gagal menghapus data dari database<br><br>' . else echo '<p>Data berhasil dimasukkan ke database. break. // artinnya $error = $error + 1. else $hasil = mysql_query("INSERT INTO poll_pemain VALUES ('$nama'. <a href="pemain. // lakukan looping untuk menghapus setiap item foreach ($hapus as $sampah) { // lakukan query DELETE untuk menghapus record $hasil = mysql_query("DELETE FROM poll_pemain WHERE pemain='$sampah'"). break. if (!$hasil) echo 'Error: Gagal memasukkan data ke database.'. /***********/ } } // akhir dari switch // akhir dari else mysql_close(). Error Handling dan Contoh-contoh Aplikasi 251 .<br><br> <a href="pemain.php">Kembali</a>'.NgawurPolling.Masalah Keamanan. /************/ /************/ case 'hapus': /************/ // ambil data dari case view $hapus = $_POST['hapus'].<br><br>' . PENJELASAN SCRIPT Bab 4 .localhost $error += 1. } // jika $error tidak sama dengan nol berarti ada error if ($error != 0) echo '<p>Ada '.' field yang tidak dimasukkan ke database</p>'. 0)").php.php">Lihat</a>'.php">Polling Pemain</a>'.'<a href="pemain.$error. // hitung jumlah dari hapus jika nol maka tidak ada yang dicek if (count($hapus) == 0) exit('Error: Tidak ada item yang dipilih.

php.Masalah Keamanan.6 menunjukkan tampilan daftar polling untuk pemain. Query DELETE pada blok kode diatas akan diluang sebanyak pemain yang ingin dihapus. Kita cukup mengisi field jumlah field lalu menekan tombol TAMPILKAN. Memasukkan setiap pemain ke database kita gunakan looping foreach seperti berikut foreach ($pemain as $nama) { if ($nama == '') $error += 1. Jadi penjelasan dari file ini akan sama artinya dengan kedua file lainnya. Tanda [] menunjukkan bahwa data yang kita post berupa array. Cara ini tentu lebih efisien ketimbang memberi link hapus pada setiap data. } Arti perintah looping diatas adalah untuk setiap isi dari $hapus sebagai $sampah. Untuk menghapus data cara yang kita terapkan disini berbeda dengan sebelumnya. Kita dapat menentukan jumlah pemain yang akan dimasukkan sekaligus.6: Daftar pemain untuk polling pada admin area Untuk nama dari setiap item adalah hapus[].NgawurPolling. Gambar 4.php adalah sama. Yang cukup menarik adalah case tambah. klub.localhost Struktur dari file pemain. Jika lebih dari 10 maka saat pemrosesan akan dimunculkan pesan error. 0)"). Agar setiap data yang diberi tanda cek yang terhapus maka kita gunakan looping foreach seperti berikut foreach ($hapus as $sampah) { // lakukan query DELETE untuk menghapus record $hasil = mysql_query("DELETE FROM poll_pemain WHERE pemain='$sampah'"). Maka field Nama Pemain akan dibuat sebanyak angka yang kita masukkan tadi. Maka untuk memasukkannya pun harus dengan cara array. Kita menggunakan checkbox untuk memilih data mana saja yang ingin kita hapus lalu tekan HAPUS. // artinnya $error = $error + 1. } Bab 4 . dan band. else $hasil = mysql_query("INSERT INTO poll_pemain VALUES ('$nama'. Error Handling dan Contoh-contoh Aplikasi 252 . Gambar 4.php. Jadi untuk menanganinya juga harus dengan perlakuan array. Sama dengan hapus karena pemain bertipe array. Maksimal field yang dapat kita buat adalah 10.

. else { // handel setiap proses dengan switch dan case switch ($proses) { /***********/ 253 Bab 4 .'.php *** ** Penulis... File berikutnya adalah file yang kita gunakan untuk memanaje polling klub.php include ('... // panggil file header.: untuk memanaje polling klub *** ***********************************************************/ session_start().. Lalu ubah konfigurasinya sesuai dengan link dan tabel untuk klub polling... <a href="index..: Rio Astamal *** ** Tanggal. if ($proses == '') $proses = 'view'.: pemain.: 16-10-2005 *** ** Penjelasan.php include ('.php untuk membuat file ini. // panggil file fungsi. dan password'). Jika ada field yang masing masing kosong tambah nilai $error dengan 1.Masalah Keamanan.php')... // cek isi dari proses $proses = $_GET['proses']... Klik File > New > PHP untuk membuat file PHP baru lalu ketik kode berikut Tips: Anda dapat menggunakan teknik copy dan paste dari file pemain. Script dari file klub.php')./inc/fungsi. // cek apakah administrator sudah login atau belum if (!cek_session('admin')) echo 'Anda belum login.php <?php /********************************************************** ** Nama File. <br> Cek kembali settingan untuk host.... Untuk itu tampilkan pesan jumlah field yang tidak dimasukkan ke database. Fungsi file ini adalah menampilkan.. Error Handling dan Contoh-contoh Aplikasi ..../inc/header. Jika $error nilainya tidak sama dengan nol maka terdapat field yang tidak diisi. Misalnnya ada 3 field dan admin hanya mengisi satu maka pesan error untuk pemasukan database tidak ditampilkan. Sebaliknya jika admin tidak mengisi satu pun field maka pesan error database akan dimunculkan.php">Login</a> dulu.localhost Jadi untuk setiap isi dari array $pemain kita masukkan pada variabel $nama. menambah dan menghapus daftar dari polling untuk klub. // koneksikan ke MySQL server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL Server. username. // filter isi dari proses $proses = filter_str($proses).NgawurPolling. Untuk mengcopy sebaiknya lakukan case demi case untuk menghindari kesalahan.. Karena tidak ada satupun data yang dimasukkan ke database.

'Isi jumlah field lalu tekan TAMPILKAN.<br><br>' .').php">Halaman Utama</a> &nbsp ' .<br><br> <a href="klub.'<table border="0" cellpadding="4" cellspacing="0">' .'!. // tetapkan maksimal untuk polling 10 klub if ($jml_field > 10) exit('Anda itu ingin membingukan pemilih dengan membuat pilihan sebanyak '.$data[0]. // hapus kita beri tanda [] karena bertipe array } echo '<tr bgcolor="#d7e7f3" height="15"><td colspan="2"></td>' .localhost case 'view': /***********/ echo '<h3>Daftar Polling untuk Klub Terfavorit</h3>'.php?proses=hapus" method="post">' .'</table>' .'<a href="klub.$data[1]. Maksimal adalah 10.Masalah Keamanan.php?proses=tambah">Tambah Daftar</a>.' &nbsp &nbsp <input type="submit" value="TAMPILKAN">' .php?proses=tambah" method="post">' . // cek jumlah baris yang dikembalikan if (mysql_num_rows($hasil) == 0) echo 'Tidak ada daftar klub untuk polling.'<tr bgcolor="#d7e7f3">' .'<p><a href="index.'Jumlah field: <input type="text" name="jml_field" value="0"> ' .'</tr>'.'<td><b>Jumlah Suara</b></td>' .'<td align="center"><input type="checkbox" name="hapus[]" ' .'<td><input type="submit" value="HAPUS"></td></tr>' .'<form action="klub.php?proses=proses_tambah" method="post">'.'<td><b>Hapus?</b></td>' .'</td><td align="center">'. Bab 4 .'. } // akhir dari else break. /**************/ /*************/ case 'tambah': /*************/ // ambil data yang di post untuk menetapkan jumlah field $jml_field = $_POST['jml_field']. echo '<p><form action="klub.$data[0].'</form>' .php?proses=tambah">Tambah Daftar</a></p>'. // tampilkan semua daftar untuk polling klub $hasil = mysql_query("SELECT * FROM poll_klub").'</td>' . else { echo '<form action="klub.'</form>'.'<td><b>Nama Klub</b></td>' . Error Handling dan Contoh-contoh Aplikasi 254 .$jml_field. echo '<h3>Tambah Nama Klub untuk Polling</h3>' .'"></td>'.'value="'.NgawurPolling. // lakukan looping untuk mendapatkan semua record while ($data = mysql_fetch_array( $hasil )) { echo '<tr><td>'.

Error Handling dan Contoh-contoh Aplikasi 255 . /************/ /************/ case 'hapus': /************/ // ambil data dari case view $hapus = $_POST['hapus']. } // jika $error tidak sama dengan nol berarti ada error if ($error != 0) echo '<p>Ada '. } echo '<input type="submit" value="TAMBAH">' . $i++) { echo intval($i + 1). // artinnya $error = $error + 1. break.<br><br> <a href="pemain.back()">Kembali</a>').$error. else $hasil = mysql_query("INSERT INTO poll_klub VALUES ('$tim'. // lakukan looping untuk menghapus setiap item foreach ($hapus as $sampah) Bab 4 .<br><br> <a href="javascript: history. <a href="klub.'<a href="index. // lakukan looping untuk memasukkan setiap field ke database foreach ($klub as $tim) { if ($tim == '') $error += 1.php">Polling Klub</a>'. // buat variabel error berguna untuk mengidentifikasi error $error = 0.php">Kembali</a>').NgawurPolling. /************/ /********************/ case 'proses_tambah': /********************/ // ambil data yang dipost $klub = $_POST['klub']. // hitung jumlah dari hapus jika nol maka tidak ada yang dicek if (count($hapus) == 0) exit('Error: Tidak ada item yang dipilih.php">Halaman Utama</a> &nbsp ' .localhost // buat field untuk menambah daftar klub sebanyak $jml_field for ($i=0.'<a href="klub.'.Masalah Keamanan.php">Lihat</a>'. if (!$hasil) echo 'Error: Gagal memasukkan data ke database.'Nama Klub: <input type="text" name="klub[]"><br><br>'. 0)"). break. else echo '<p>Data berhasil dimasukkan ke database.'</form></p>' .') ' . $i<$jml_field.' field yang tidak dimasukkan ke database</p>'. if (count($klub) == 0) // hitung jumlah data yang dikirim exit('Error: Tidak ada klub yang dimasukkan.

<br><br>' . else echo 'Data berhasil dihapus dari database. break. } // jika ada kesalahan tampilkan if (!$hasil) echo 'Error: Gagal menghapus data dari database<br><br>' .'<a href="klub.php">Polling Klub</a>'.localhost { // lakukan query DELETE untuk menghapus record $hasil = mysql_query("DELETE FROM poll_klub WHERE klub='$sampah'").php sama persis dengan file.7 menunjukkan proses pemnambahan daftar klub yang akan menjadi subjek polling. /***********/ } // akhir dari switch } // akhir dari else ?> </body> </html> Simpan pada direktori polling\admin dengan nama klub.7: Proses saat menambah daftar polling Bab 4 . Jadi saya rasa tidak ada yang perlu dijelaskan lagi. Error Handling dan Contoh-contoh Aplikasi 256 .php">Kembali</a>'. Gambar 4. Struktur kode dari file klub.Masalah Keamanan. Gambar 4.php.'<a href="pemain.NgawurPolling.

'<table border="0" cellpadding="4" cellspacing="0">' Bab 4 .. // filter isi dari proses $proses = filter_str($proses).. // panggil file header..: pemain..Masalah Keamanan.<br><br> <a href="band.. <br> Cek kembali settingan untuk host.localhost Sama dengan file pemain.: Rio Astamal *** ** Tanggal. Struktur dari file band. if ($proses == '') $proses = 'view'.php?proses=hapus" method="post">' .php <?php /********************************************************** ** Nama File. // tampilkan semua pemain dan hasil suaranya $hasil = mysql_query("SELECT * FROM poll_band").. Buat file baru pada PHP DESIGNER 2005 salin kode berikut Script dari file band.... // cek jumlah baris yang dikembalikan if (mysql_num_rows($hasil) == 0) echo 'Tidak ada daftar band untuk polling.'.php?proses=tambah">Tambah Daftar</a>. username.php include ('../inc/fungsi./inc/header. Jadi untuk membuatnya gunakan teknik copy dan paste seperti pada Tips.'.php dan klub..php include ('..php')..NgawurPolling. // koneksikan ke MySQL server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL Server..: untuk memanaje polling band *** ***********************************************************/ session_start(). // panggil file fungsi.. // cek isi dari proses $proses = $_GET['proses'].php sama persis dengan keduanya. else { echo '<form action="band. // cek apakah administrator sudah login atau belum if (!cek_session('admin')) echo 'Anda belum login. <a href="index....php'). Error Handling dan Contoh-contoh Aplikasi 257 . else { // handel setiap proses dengan switch dan case switch ($proses) { /***********/ case 'view': /***********/ echo '<h3>Daftar Polling Untuk Band Terfavorit</h3>'.php">Login</a> dulu..: 16-10-2005 *** ** Penjelasan.php *** ** Penulis..php. dan password')..

'<td align="center"><input type="checkbox" name="hapus[]" ' .'</tr>'.$data[1].<br><br>' .'!. $i++) { echo intval($i + 1).php?proses=tambah">Tambah Daftar</a></p>'.'</table>' .'<td><input type="submit" value="HAPUS"></td></tr>' .'<td><b>Jumlah Suara</b></td>' .'value="'.$data[0].'Nama Band: <input type="text" name="band[]"><br><br>'. } break. // lakukan looping untuk mendapatkan semua record while ($data = mysql_fetch_array( $hasil )) { echo '<tr><td>'.$jml_field.' &nbsp &nbsp <input type="submit" value="TAMPILKAN">' .'<p><a href="index.php">Polling Band</a>'. /**************/ /*************/ case 'tambah': /*************/ // ambil data yang di post untuk menetapkan jumlah field $jml_field = $_POST['jml_field'].'"></td>'.'<td><b>Hapus?</b></td>' . $i<$jml_field.'<a href="index.'<a href="band. echo '<p><form action="band.$data[0].'<td><b>Nama Band</b></td>' . Error Handling dan Contoh-contoh Aplikasi 258 .'Jumlah field: <input type="text" name="jml_field" value="0"> ' .NgawurPolling.php?proses=tambah" method="post">' .php">Halaman Utama</a> &nbsp ' .localhost . Maksimal adalah 10.'</td><td align="center">'.'). break. // buat field untuk menambah daftar pemain sebanyak $jml_field for ($i=0. echo '<h3>Tambah Nama Band untuk Polling</h3>' . //hapus kita beri tanda [] karena bertipe array } echo '<tr bgcolor="#d7e7f3" height="15"><td colspan="2"></td>' .php?proses=proses_tambah" method="post">'.') ' . /************/ /********************/ case 'proses_tambah': Bab 4 .Masalah Keamanan.'Isi jumlah field lalu tekan TAMPILKAN. // tetapkan maksimal untuk polling 10 pemain if ($jml_field > 10) exit('Anda itu ingin membingukan pemilih dengan membuat pilihan sebanyak '.'<a href="band.'</form></p>' .'<form action="band.'<tr bgcolor="#d7e7f3">' .php">Halaman Utama</a> &nbsp ' . } echo '<input type="submit" value="TAMBAH">' .'</td>' .'</form>'.'</form>' .

else $hasil = mysql_query("INSERT INTO poll_band VALUES ('$artis'. } // jika ada kesalahan tampilkan if (!$hasil) echo 'Error: Gagal menghapus data dari database<br><br>' .NgawurPolling.php">Polling Band</a>'.php">Kembali</a>'). if (count($band) == 0) // hitung jumlah data yang dikirim exit('Error: Tidak ada band yang dimasukkan. 0)"). // buat variabel error berguna untuk mengidentifikasi error $error = 0. // lakukan looping untuk memasukkan setiap field ke database foreach ($band as $artis) { if ($artis == '') $error += 1. <a href="band.back()">Kembali</a>').' field yang tidak dimasukkan ke database</p>'. } // jika $error tidak sama dengan nol berarti ada error if ($error != 0) echo '<p>Ada '.Masalah Keamanan.php">Kembali</a>'.'<a href="pemain.localhost /********************/ // ambil data yang dipost $band = $_POST['band'].'.php">Lihat</a>'. Error Handling dan Contoh-contoh Aplikasi 259 .<br><br> <a href="javascript: history. /***********/ } // akhir dari switch Bab 4 . break. // artinnya $error = $error + 1. if (!$hasil) echo 'Error: Gagal memasukkan data ke database.'<a href="band. else echo 'Data berhasil dihapus dari database.<br><br>' .<br><br> <a href="pemain. // lakukan looping untuk menghapus setiap item foreach ($hapus as $sampah) { // lakukan query DELETE untuk menghapus record $hasil = mysql_query("DELETE FROM poll_band WHERE band='$sampah'"). // hitung jumlah dari hapus jika nol maka tidak ada yang dicek if (count($hapus) == 0) exit('Error: Tidak ada item yang dipilih. else echo '<p>Data berhasil dimasukkan ke database. /************/ /************/ case 'hapus': /************/ // ambil data dari case view $hapus = $_POST['hapus']. break.$error.

com</h2>' .. username. Akhir dari file yang berada pada direktori admin..php include ('inc/class_polling.php').localhost } // akhir dari else ?> </body> </html> Simpan pada direktori polling\admin dengan nama band. // panggil file fungsi.php *** ** Penulis.NgawurPolling.php.php')..: index.php'). // koneksikan ke MySQL server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server..php'). // handel setiap proses dengan switch dan case switch ($proses) { /**************/ case 'pilihan': /**************/ echo '<h2>Selamat Datang di NgawurPolling..php include ('inc/fungsi.. File pertama yang akan kita buat adalah file utama untuk website NgawurPolling. File-file berikutnya yang akan kita bahas adalah file pada direktori polling. if ($proses == '') $proses = 'pilihan'.: 16-10-2005 *** ** Penjelasan.: Rio Astamal *** ** Tanggal. Untuk membuatnya klik File > New > PHP lalu ketik kode berikut Script dari file index.php include ('inc/header.<br> Cek kembali settingan untuk host...Masalah Keamanan.<br><br>' Bab 4 . // dapatkan data dari proses pada URL $proses = $_GET['proses'].. dan password').php include ('inc/konfig.php <?php /********************************************************** ** Nama File...: halaman utama untuk ngawur polling *** ***********************************************************/ // panggil file header.. // panggil file class_polling.. // dapatkan konfigurasi dari file konfig.. Error Handling dan Contoh-contoh Aplikasi 260 .. // filter isi dari proses $proses = filter_str($proses).'<p>Silahkan pilih polling yang sesuai dengan keinginan anda.

php?proses=proses_poll" method="post">'.php?proses=band">Polling Band Terfavorit</b></a>' .php">Home</a>'.'<p><b><a href="index.'<form action="poll_band.php">Hasil Polling</a> ]<p>' .</p>' .php?proses=proses_poll" method="post">'.'<a href="index.'<p>Manakah Band Favorit Anda?</p>' .'<p><b><a href="index. break.'<p>Siapakah Pemain Favorit Anda?</p>' .'<p><b><a href="index.'<form action="poll_klub.Masalah Keamanan.php">Hasil Polling Semua Kategori</a> ]</p>' .'<a href="index. /***********/ /*************/ case 'klub': /*************/ // siapkan form echo '<h2>Polling Klub Terfavorit</h2>' . // panggil fungsi daftar_poll() untuk menampilkan daftar klub echo daftar_poll('poll_band'. echo '</form>' Bab 4 .'<p>[ <a href="poll_semua.'<p align="center">&#169 2005 ngawurpolling. 'klub').'<p>Tekan tombol POLLING untuk memulai proses polling. // panggil fungsi daftar_poll() untuk menampilkan daftar pemain echo daftar_poll('poll_pemain'. // panggil fungsi daftar_poll() untuk menampilkan daftar klub echo daftar_poll('poll_klub'.php">Hasil Polling</a> ]</p>' .php?proses=pemain">Polling Pemain Terfavorit<b></a>' . /***********/ /*************/ case 'band': /*************/ // siapkan form echo '<h2>Polling Band Terfavorit</h2>' . 'pemain'). 'band').'Daftar Polling untuk Minggu ini: </p>' .com</p>'.' &nbsp [ <a href="poll_pemain. /*************/ /*************/ case 'pemain': /*************/ // siapkan form echo '<h2>Polling Pemain Terfavorit</h2>' .' &nbsp [ <a href="poll_klub.'<form action="poll_pemain.NgawurPolling. Error Handling dan Contoh-contoh Aplikasi 261 .php?proses=klub">Polling Klub Terfavorit</b></a>' .php?proses=proses_poll" method="post">'.php">Home</a>'. break. echo '</form>' .localhost . break.'<p>Manakah Klub Favorit Anda?</p>' .'<p>Tekan tombol POLLING untuk memulai proses polling.php">Hasil Polling</a> ]</p>' . echo '</form>' .</p>' .' &nbsp [ <a href="poll_band.

'<a href="index. 'pemain').. Pada fungsi diatas kita menetapkan parameter untuk tabel yang diisi adalah poll_pemain.php <?php /************************************************************** ** Nama File.php">Home</a>'.: untuk memproses polling dan menampilkan *** ** hasil polling pemain. Selain itu file ini juga berfungsi untuk menampilkan hasil dari polling.NgawurPolling.php.8.: 16-10-2005 *** ** Penjelasan. Gambar 4...'<p>Tekan tombol POLLING untuk memulai proses polling. Error Handling dan Contoh-contoh Aplikasi 262 .. break.' *** ***************************************************************/ // panggil fungsi output buffering karena berhubungan dengan // cookie ob_start(). File berikutnya adalah adalah poll_pemain. Cuplikan script berikut akan menampilkan daftar kandidat untuk polling pemain... klub dan band.. echo daftar_poll('poll_pemain'. Isi dari parameter ke dua yaitu pemain menunjukkan nama dari data yang kita post.. Klik File > New >PHP untuk membut file PHP baru lalu ketik kode berikut Script dari file poll_pemain.</p>' . /***********/ } ?> Simpan pada direktori polling dengan nama index..php.: poll_pemain. Pada case-case tersebut kita memanggil fungsi daftar_poll() untuk menampilkan daftar kandidat untuk polling.php.....8: Tampilan halaman utama NgawurPolling PENJELASAN SCRIPT Tidak ada yang menarik dari script ini. Yang perlu anda perhatikan adalah case pemain.php *** ** Penulis..localhost . Fungsi file ini adalah untuk memproses form polling pemain yang dipost dari file index.: Rio Astamal *** ** Tanggal. Output dari file ini akan terlihat seperti gambar 4. Bab 4 . Hasi yang ditampilkan berupa persentase dan grafik.Masalah Keamanan..

// nama masing2 kandidat $suara = $data[1]. Error Handling dan Contoh-contoh Aplikasi 263 .NgawurPolling.Masalah Keamanan. // handel setiap proses dengan switch dan case switch ($proses) { /****************/ case 'view_poll': /****************/ echo '<h2>Hasil Polling Pemain Terfavorit</h2>' . // persentase masing2 kandidat Bab 4 . // letaknya di konfig.php $poll->get_lebar_max($lebar_max).php').'<td><b>Nama Pemain</b><td><b>Grafik</b></td>' . $poll->get_gambar($gambar['pemain']). digunakan untuk menghitung lebar grafik $poll->query_SQL("SELECT * FROM poll_pemain ORDER BY suara DESC"). while ($data = mysql_fetch_array($hasil)) { $kandidat = $data[0].php include ('inc/konfig. // koneksikan ke MySQL server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server.<br> Cek kembali settingan untuk host. // panggil file class_polling. if ($proses == '') $proses = 'view_poll'. dan password'). $poll->get_jml_kandidat(). // letaknya di konfig. // dapatkan suara yang terbanyak // lakukan query ulang $poll->query_SQL(). username.php $poll->get_tabel('poll_pemain'). // suara masing2 kandidat $persen = $poll->get_persen($suara). // hitung jumlah kandidat $poll->get_suara_terbanyak(). // filter isi dari proses $proses = filter_str($proses).'<table border="0" cellpadding="4" cellspacing="4">' .php'). // hitung jumlah total pemilih // lakukan looping untuk menggambar setiap grafik $hasil = $poll->query_SQL().php include ('inc/fungsi. // pilih tabel yang digunakan // lakukan query untuk mendapatkan jumlah kandidat dan suara terbanyak // urutkan secara DESCENDING agar yang suaranya terbanyak berada // pada record paling atas. // dapatkan data dari proses pada URL $proses = $_GET['proses'].php'). // dapatkan konfigurasi dari file konfig.php include ('inc/class_polling.php include ('inc/header.'<td><b>Persentase (%)</b></td><td><b>Jumlah Pemilih</td></b>' . $total_pml = $poll->get_total_pemilih().'<tr bgcolor="#d7e7f3">' . // panggil class polling untuk menggambar grafik $poll = new polling.php').'</tr>'.localhost // panggil file header. // panggil file fungsi.

<a href="index.'<a href="index. break.$persen. // grafik dari masing2 kandidat echo '<tr><td>'.$kandidat.NgawurPolling.php?proses=view_poll">Hasil Polling</a>'.'<td>'.php jika yes maka cek if ($cek_cookie == 'yes') { // jika isi cookie poll_pemain telah diset maka user pernah polling if (isset($_COOKIE['poll_pemain'])) exit($pesan_error). Error Handling dan Contoh-contoh Aplikasi 264 . // catat IP dan jenis polling ke file ip.'</td><td>'.'%</td><td>'. <a href="index.'</td></tr>'. <br><br>' .php // cek settingan cek_cookie pada konfig.php">Home</a>'.php">Home</a>'.dat Bab 4 . $masa_aktif). } if ($cek_ip == 'yes') // jika yes cek alamat ip { // cek ip dan jenis pollingnya adalah poll_pemain if (!cek_ip('poll_pemain')) // panggil fungsi cek_ip() exit($pesan_error). // cek apakah user boleh memilih lebih dari satu kali // settingan ada di konfig.php?proses=pemain">Kembali</a>').'<p><a href="index. Anda hanya boleh mengikuti polling pemain terfavorit satu kali saja.'<a href="poll_pemain. } // lanjutkan memproses jika user diperbolehkan polling // ambil data dari form polling $pemain = $_POST['pemain']. } // tutup table echo '<tr bgcolor="#d7e7f3" height="15"><td colspan="4"></td></tr>' .$total_pml.php?proses=pemain">Ikuti Polling</a></p>'.'<a href="index.</p>' .php">Home</a> &nbsp ' . <br><br>' .'<p>Total Pemilih: <b>'. if ($pemain == '') exit('Error: Anda belum memilih pemain. '1'. /**********/ /******************/ case 'proses_poll': /******************/ $pesan_error = 'Maaf.Masalah Keamanan.localhost $grafik = $poll->gambar_grafik($suara).'</td>' .'</table>' . // jika tidak ada cookie yang bername poll_pemain maka buat if (!isset($_COOKIE['poll_pemain'])) setcookie('poll_pemain'.'</b> orang. // lakukan query UPDATE untuk mengupdate isi dari pemain yang dipilih $hasil = mysql_query("UPDATE poll_pemain SET suara=suara+1 WHERE pemain='$pemain'"). if (!$hasil) echo 'Error: Gagal memasukkan data ke database. else { echo 'Terima Kasih karena telah mengikuti polling kami.$grafik.$suara.

while ($data = mysql_fetch_array($hasil)) 265 Bab 4 . // dapatkan suara yang terbanyak Untuk mendapatkan suara terbanyak kita cukup mengambil data pada record pertama. Untuk mendapatkan metode init kita harus memanggil terlebih dahulu metode query_SQL() yang akan mengurut data secara descending yaitu mulai dari yang terbesar ke yang terekecil.localhost $buka_file = fopen('log/ip. presentase dan jumlah pemilih masing-masing kandidat kita gunakan looping while. Metode yang perlu anda perhatikan adalah metode untuk mendapatkan suara terbanyak. fclose($buka_file). Lihat cuplikan kode berikut $poll->query_SQL("SELECT * FROM poll_pemain ORDER BY suara DESC").Masalah Keamanan.NgawurPolling. Lihat cuplikan scipt berikut $hasil = $poll->query_SQL(). Hasil polling pemain ditunjukkan oleh gambar 4.9.php. $isi = $_SERVER['REMOTE_ADDR'].'#-#poll_pemain'. fwrite($buka_file. Objek ini merupakan implementasi dari dari class polling. Ini sudah dilakukan oleh metode get_suara_terbanyak().9: Hasil polling pemain terfavorit PENJELASAN SCRIPT Yang menarik adalah pada case pada view poll. 'a'). Kita membuat objek ini dengan cara memanggil class polling seperti berikut $poll = new polling.dat'. /************/ } ?> Simpan pada direktori polling dengan nama poll_pemain. $isi). Pada case ini kita membuat objek untuk membuat grafik. $poll->get_jml_kandidat(). Gambar 4. Error Handling dan Contoh-contoh Aplikasi . } break."\n". // hitung jumlah kandidat $poll->get_suara_terbanyak(). Untuk menampilkan gambar grafik.

.php Bab 4 ..dat pada direktori log karena pada parameter kita tidak menentukannya. Jika data berhasil dimasukkan ke database buat cookie yang bernama poll_pemain yang isinya satu. Oleh karena itu penjelasannya pun sama. Hal tersebut sesuai dengan settingan yang ada di file konfig. // panggil file fungsi. Error Handling dan Contoh-contoh Aplikasi 266 . // panggil file header. Akan tetapi jika menggunakan metode cek ip.. *** ***************************************************************/ // panggil fungsi output buffering karena berhubungan dengan // cookie ob_start().php strukturnya sama dengan poll_pemain. Setelah itu kita gunakan looping while untuk mendapatkan daftar seluruh kandidat.php yaitu isi dari $cek_cookie atau $cek_ip. Jika tidak ada error maka lanjutkan memproses data. Sehingga jika user sudah pernah mengikuti polling maka ia tidak bisa lagi menikutinya ulang. File berikutnya yaitu poll_klub.php *** ** Penulis... Jika ternyata ada cookie bernama poll_pemain maka keluar dari rutin program dan tampilkan pesan error. Case berikutnya adalah proses_poll.php <?php /************************************************************** ** Nama File.php.: poll_klub. poll_pemain menunjukkan jenis polling yang kita cek.localhost Arti $poll->query_SQL() diatas sama dengan SELECT * FROM poll_pemain karena pada metode get_tabel() kita isikan parameternya poll_pemain.: untuk memproses polling dan menampilkan *** ** hasil polling klub. Jadi tampilkan pesan error... Anda dapat menggunakan trik copy – paste untuk membuat file poll_klub.: Rio Astamal *** ** Tanggal. Pada kode diatas secara default fungsi cek_ip() akan mengecek isi dari file ip. Jika ip dan jenis polling cocok maka user tersebut sudah pernah polling.php include ('inc/header.Masalah Keamanan.. Didalam blok kode looping while kita memanggil metode get_persen() dan gambar_grafik() untuk mendapatkan persentase dan grafik dari masing-masing kandidat.. Klik File > New > PHP pada PHP DESIGNER lalu ketik kode berikut Script dari file poll_klub.... if (!cek_ip('poll_pemain')) // panggil fungsi cek_ip() exit($pesan_error). Maka kita memanggil fungsi cek_ip() yang pernah kita buat sebelumnya.: 16-10-2005 *** ** Penjelasan.. Pada kode diatas kita mengecek isi dari $cek_cookie...NgawurPolling. Jika yes maka cek isi cookie. Kemudian catat alamat IP user dan jenis pollingnya ke file ip.php. Jika memang cookie tersebut belum ada. Pada case ini kita memberikan ijin kepada user untuk mengikuti polling lebih dari satu kali atau tidak. Kelemahan dari pengecekan menggunakan cookie adalah user dapat menghapus cookie tersebut lewat browser sehingga ia dapat mengikuki polling ulang. Namun dengan catatan ubah konfigurasinya sesuai dengan polling klub. Jika kita mengecek berdasarkan alamat IP. User tidak dapat menghapus daftar ip-nya karena file tersebut berada di server.php').dat dengan format IP#-#Jenis_Polling.

while ($data = mysql_fetch_array($hasil)) { $kandidat = $data[0]. // dapatkan data dari proses pada URL $proses = $_GET['proses'].'<tr bgcolor="#d7e7f3">' . $poll->get_gambar($gambar['klub']).'<td><b>Nama Klub</b><td><b>Grafik</b></td>' . dan password'). Bab 4 . $total_pml = $poll->get_total_pemilih().'<table border="0" cellpadding="4" cellspacing="4">' . // hitung jumlah total pemilih // lakukan looping untuk menggambar setiap grafik $hasil = $poll->query_SQL(). // panggil file class_polling.<br> Cek kembali settingan untuk host.php include ('inc/class_polling. // panggil class polling untuk menggambar grafik $poll = new polling. // pilih tabel yang digunakan // lakukan query untuk mendapatkan jumlah kandidat dan suara terbanyak // urutkan secara DESCENDING agar yang suaranya terbanyak berada // pada record paling atas.$grafik.php include ('inc/konfig. if ($proses == '') $proses = 'view_poll'.'<td><b>Persentase (%)</b></td><td><b>Jumlah Pemilih</td></b>' .NgawurPolling. digunakan untuk menghitung lebar grafik $poll->query_SQL("SELECT * FROM poll_klub ORDER BY suara DESC").php'). Error Handling dan Contoh-contoh Aplikasi 267 .localhost include ('inc/fungsi.$kandidat.'</td><td>'.php'). // nama masing2 kandidat $suara = $data[1].'</tr>'.$suara. // dapatkan suara yang terbanyak // lakukan query ulang $poll->query_SQL(). // letaknya di konfig.php'). // letaknya di konfig. // suara masing2 kandidat $persen = $poll->get_persen($suara).'</td>' .'<td>'. username. // grafik dari masing2 kandidat echo '<tr><td>'.php $poll->get_lebar_max($lebar_max).'%</td><td>'. // filter isi dari proses $proses = filter_str($proses).Masalah Keamanan. // persentase masing2 kandidat $grafik = $poll->gambar_grafik($suara). // koneksikan ke MySQL server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server. // hitung jumlah kandidat $poll->get_suara_terbanyak(). // handel setiap proses dengan switch dan case switch ($proses) { /****************/ case 'view_poll': /****************/ echo '<h2>Hasil Polling Klub Terfavorit</h2>' .'</td></tr>'. $poll->get_jml_kandidat().$persen.php $poll->get_tabel('poll_klub'). // dapatkan konfigurasi dari file konfig.

php?proses=view_poll">Hasil Polling</a>'. $isi = $_SERVER['REMOTE_ADDR']. Error Handling dan Contoh-contoh Aplikasi cek settingan cek_cookie pada konfig.'#-#poll_klub'.Masalah Keamanan. // lakukan query UPDATE untuk mengupdate isi dari pemain yang dipilih $hasil = mysql_query("UPDATE poll_klub SET suara=suara+1 WHERE klub='$klub'").dat'. Anda hanya boleh mengikuti polling klub terfavorit satu kali saja.'<a href="index. fclose($buka_file). <a href="index. // if { // if } if ($cek_ip == 'yes') // cek alamat IP { // cek ip dan jenis pollingnya adalah poll_klub if (!cek_ip('poll_klub')) // panggil fungsi cek_ip() exit($pesan_error).php">Home</a> &nbsp ' . } // lanjutkan memproses jika user diperbolehkan polling // ambil data dari form polling $klub = $_POST['klub']. fwrite($buka_file.php $pesan_error = 'Maaf. <br><br>' .$total_pml.'</b> orang. 'a'). <a href="index.php jika yes maka cek ($cek_cookie == 'yes') jika isi cookie poll_klub telah diset maka user pernah polling (isset($_COOKIE['poll_klub'])) exit($pesan_error).'</table>' . if (!$hasil) echo 'Error: Gagal memasukkan data ke database.'<a href="index. <br><br>' . $isi). /**********/ /******************/ case 'proses_poll': /******************/ // cek apakah user boleh memilih lebih dari satu kali // settingan ada di konfig."\n".'<p>Total Pemilih: <b>'. 268 . Bab 4 . $masa_aktif). '1'. break.'<p><a href="index.localhost } // tutup table echo '<tr bgcolor="#d7e7f3" height="15"><td colspan="4"></td></tr>' . if ($klub == '') exit('Error: Anda belum memilih klub. // jika tidak ada cookie yang bername poll_klub maka buat if (!isset($_COOKIE['poll_klub'])) setcookie('poll_klub'.php?proses=klub">Ikuti Polling</a></p>'. else { echo 'Terima Kasih karena telah mengikuti polling kami.dat $buka_file = fopen('log/ip.php">Home</a>'.</p>' .php?proses=klub">Kembali</a>').NgawurPolling.php">Home</a>'. // catat IP dan jenis polling ke file ip.'<a href="poll_klub.

Output dari file ini ditunjukkan oleh gambar 4.php').10: Hasil polling klub terfavorit File berikutnya adalah poll_band.php include ('inc/header.: Rio Astamal *** ** Tanggal.Masalah Keamanan. klik File > New > PHP lalu ketik kode berikut: Script dari file poll_band.php <?php /************************************************************** ** Nama File...php. // akhir dari switch Gambar 4.: 16-10-2005 *** ** Penjelasan..: poll_band.. // panggil file fungsi.. Error Handling dan Contoh-contoh Aplikasi 269 .localhost } break.' *** ***************************************************************/ // panggil fungsi output buffering karena berhubungan dengan // cookie ob_start(). Langsung saja.php.: untuk memproses polling dan menampilkan *** ** hasil polling band. /************/ } ?> </body> </html> Simpan pada direktori polling dengan nama poll_klub.. Script ini secara struktur sama dengan file poll_pemain.. Fungsi file ini untuk memproses dan menampilkan hasil polling band terfavorit... // panggil file header.10..php *** ** Penulis.....php Bab 4 .php..NgawurPolling.

'<td><b>Nama Band</b><td><b>Grafik</b></td>' .php include ('inc/konfig. // dapatkan data dari proses pada URL $proses = $_GET['proses']. // filter isi dari proses $proses = filter_str($proses).'<tr bgcolor="#d7e7f3">' .'</td>' .php').'</tr>'.$suara. while ($data = mysql_fetch_array($hasil)) { $kandidat = $data[0].php include ('inc/class_polling. // koneksikan ke MySQL server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server. // hitung jumlah total pemilih // lakukan looping untuk menggambar setiap grafik $hasil = $poll->query_SQL(). // hitung jumlah kandidat $poll->get_suara_terbanyak(). // persentase masing2 kandidat $grafik = $poll->gambar_grafik($suara). // dapatkan konfigurasi dari file konfig. // handel setiap proses dengan switch dan case switch ($proses) { /****************/ case 'view_poll': /****************/ echo '<h2>Hasil Polling Band Terfavorit</h2>' . dan password').<br> Cek kembali settingan untuk host. // dapatkan suara yang terbanyak // lakukan query ulang $poll->query_SQL(). Bab 4 . // panggil class polling untuk menggambar grafik $poll = new polling.localhost include ('inc/fungsi. // letaknya di konfig. $poll->get_jml_kandidat(). // pilih tabel yang digunakan // lakukan query untuk mendapatkan jumlah kandidat dan suara terbanyak // urutkan secara DESCENDING agar yang suaranya terbanyak berada // pada record paling atas.'<td><b>Persentase (%)</b></td><td><b>Jumlah Pemilih</td></b>' .'<table border="0" cellpadding="4" cellspacing="4">' . username.php').$persen. // nama masing2 kandidat $suara = $data[1]. digunakan untuk menghitung lebar grafik $poll->query_SQL("SELECT * FROM poll_band ORDER BY suara DESC").'</td><td>'. // panggil file class_polling.$kandidat. $poll->get_gambar($gambar['band']). if ($proses == '') $proses = 'view_poll'. // suara masing2 kandidat $persen = $poll->get_persen($suara).'%</td><td>'.'<td>'.$grafik. // grafik dari masing2 kandidat echo '<tr><td>'. $total_pml = $poll->get_total_pemilih().php').php $poll->get_tabel('poll_band'). Error Handling dan Contoh-contoh Aplikasi 270 .php $poll->get_lebar_max($lebar_max). // letaknya di konfig.NgawurPolling.'</td></tr>'.Masalah Keamanan.

php $pesan_error = 'Maaf.NgawurPolling. <a href="index. Anda hanya boleh mengikuti polling band terfavorit satu kali saja. // catat IP dan jenis polling ke file ip.'<p><a href="index.php?proses=band">Ikuti Polling</a></p>'. break. Bab 4 .'<a href="poll_band. } // lanjutkan memproses jika user diperbolehkan polling // ambil data dari form polling $band = $_POST['band'].'<p>Total Pemilih: <b>'. <br><br>' .'<a href="index. 'a').php?proses=view_poll">Hasil Polling</a>'. /**********/ /******************/ case 'proses_poll': /******************/ // cek apakah user boleh memilih lebih dari satu kali // settingan ada di konfig.'</b> orang.'<a href="index. // if { // if } if ($cek_ip == 'yes') // cek alamat IP { // cek ip dan jenis pollingnya adalah poll_band if (!cek_ip('poll_band')) // panggil fungsi cek_ip() exit($pesan_error).php">Home</a> &nbsp ' ."\n".</p>' .dat $buka_file = fopen('log/ip.php">Home</a>'.php jika yes maka cek ($cek_cookie == 'yes') jika isi cookie poll_klub telah diset maka user pernah polling (isset($_COOKIE['poll_band'])) exit($pesan_error).dat'. Error Handling dan Contoh-contoh Aplikasi cek settingan cek_cookie pada konfig.php">Home</a>'. $isi = $_SERVER['REMOTE_ADDR']. fwrite($buka_file. $masa_aktif). <a href="index.localhost } // tutup table echo '<tr bgcolor="#d7e7f3" height="15"><td colspan="4"></td></tr>' . // jika tidak ada cookie yang bername poll_pemain maka buat if (!isset($_COOKIE['poll_band'])) setcookie('poll_band'. 271 . <br><br>' .'</table>' .'#-#poll_band'. else { echo 'Terima Kasih karena telah mengikuti polling kami. if ($band == '') exit('Error: Anda belum memilih band. $isi). '1'.Masalah Keamanan.php?proses=band">Kembali</a>'). // lakukan query UPDATE untuk mengupdate isi dari band yang dipilih $hasil = mysql_query("UPDATE poll_band SET suara=suara+1 WHERE band='$band'"). if (!$hasil) echo 'Error: Gagal memasukkan data ke database.$total_pml. fclose($buka_file).

: Rio Astamal *** ** Tanggal.php.php').localhost } break.php').php <?php /************************************************************** ** Nama File. // koneksikan ke MySQL server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server.'<td><b>Nama Pemain</b><td><b>Grafik</b></td>' .: untuk menampilan seluruh polling *** ***************************************************************/ // panggil file header. Error Handling dan Contoh-contoh Aplikasi // akhir dari switch 272 . // panggil file class_polling.Masalah Keamanan. $poll->get_gambar($gambar['pemain']).php')..'</tr>'.php include ('inc/konfig.. Jadi kita nantinya kita akan membuat tiga objek dari class polling. // panggil file fungsi.php *** ** Penulis. // panggil class polling untuk menggambar grafik $poll = new polling.. Bab 4 . File yang terakhir adalah poll_semua..NgawurPolling.. dan password'). // dapatkan konfigurasi dari file konfig..: poll_semua.php include ('inc/class_polling.php $poll->get_tabel('poll_pemain').'<tr bgcolor="#d7e7f3">' .php. // letaknya di konfig.php include ('inc/fungsi. // mulai tampilkan semua hasil polling // hasil polling dari pemain terfavorit echo '<h2>Hasil Polling Pemain Terfavorit</h2>' .'<table border="0" cellpadding="4" cellspacing="4">' . username. // pilih tabel yang digunakan $poll->query_SQL("SELECT * FROM poll_pemain ORDER BY suara DESC").....: 16-10-2005 *** ** Penjelasan..<br> Cek kembali settingan untuk host..php include ('inc/header. Fungsi file ini adalah untuk menampilkan seluruh hasil polling dalam satu halaman sekaligus.. /************/ } ?> </body> </html> Simpan pada direktori polling dengan nama poll_band. // letaknya di konfig...php').php $poll->get_lebar_max($lebar_max). Untuk lebih memperjelas buat file baru pada PHP DESIGNER lalu ketik kode berikut Script dari poll_semua.'<td><b>Persentase (%)</b></td><td><b>Jumlah Pemilih</td></b>' .

'<td>'. // pilih tabel yang digunakan $poll->query_SQL("SELECT * FROM poll_klub ORDER BY suara DESC").'<table border="0" cellpadding="4" cellspacing="4">' . // panggil class polling untuk menggambar grafik $poll = new polling.$kandidat.'</table>' .'<td><b>Persentase (%)</b></td><td><b>Jumlah Pemilih</td></b>' .$total_pml. // hitung jumlah total pemilih // lakukan looping untuk menggambar setiap grafik $hasil = $poll->query_SQL().'<a href="index. $total_pml = $poll->get_total_pemilih().NgawurPolling. // persentase masing2 kandidat $grafik = $poll->gambar_grafik($suara).localhost $poll->get_jml_kandidat().php?proses=pemain">Ikuti Polling</a></p>'.'</tr>'. while ($data = mysql_fetch_array($hasil)) { $kandidat = $data[0].php">Home</a> &nbsp ' . // nama masing2 kandidat $suara = $data[1].'<p>Total Pemilih: <b>'. // hitung jumlah kandidat $poll->get_suara_terbanyak().$persen.'</td><td>'.'<p><a href="index. /******************************************************************/ // hasil polling klub terfavorit echo '<h2>Hasil Polling Klub Terfavorit</h2>' . } // tutup table echo '<tr bgcolor="#d7e7f3" height="15"><td colspan="4"></td></tr>' .'</td></tr>'. // suara masing2 kandidat $persen = $poll->get_persen($suara). while ($data = mysql_fetch_array($hasil)) { $kandidat = $data[0]. // dapatkan suara yang terbanyak // lakukan query ulang $poll->query_SQL().'</td>' . $total_pml = $poll->get_total_pemilih(). // persentase masing2 kandidat $grafik = $poll->gambar_grafik($suara).$kandidat. $poll->get_gambar($gambar['klub']). // grafik dari masing2 kandidat echo '<tr><td>'. $poll->get_jml_kandidat(). // dapatkan suara yang terbanyak // lakukan query ulang $poll->query_SQL().$persen. // hitung jumlah total pemilih // lakukan looping untuk menggambar setiap grafik $hasil = $poll->query_SQL(). } // tutup table Bab 4 . // hitung jumlah kandidat $poll->get_suara_terbanyak().$suara.'<tr bgcolor="#d7e7f3">' .'</td><td>'.php $poll->get_lebar_max($lebar_max).'</b> orang.'<td><b>Nama Klub</b><td><b>Grafik</b></td>' . // grafik dari masing2 kandidat echo '<tr><td>'.</p>' .'<td>'. // nama masing2 kandidat $suara = $data[1].'</td></tr>'. // suara masing2 kandidat $persen = $poll->get_persen($suara).$grafik.'</td>' .'%</td><td>'.Masalah Keamanan.'%</td><td>'. // letaknya di konfig.$suara.php $poll->get_tabel('poll_klub').$grafik. Error Handling dan Contoh-contoh Aplikasi 273 . // letaknya di konfig.

'<p><a href="index.'</td>' .'</table>' . // nama masing2 kandidat $suara = $data[1].'</table>' .'<table border="0" cellpadding="4" cellspacing="4">' .php">Home</a> &nbsp ' . Tampilan file ditunjukkan oleh gambar 4.php">Home</a> &nbsp ' .localhost echo '<tr bgcolor="#d7e7f3" height="15"><td colspan="4"></td></tr>' . // grafik dari masing2 kandidat echo '<tr><td>'.php?proses=band">Ikuti Polling</a></p>'.'</td><td>'.NgawurPolling. Error Handling dan Contoh-contoh Aplikasi 274 .Masalah Keamanan.'</tr>'.'%</td><td>'. while ($data = mysql_fetch_array($hasil)) { $kandidat = $data[0]. $total_pml = $poll->get_total_pemilih().'<p>Total Pemilih: <b>'.11. // pilih tabel yang digunakan $poll->query_SQL("SELECT * FROM poll_band ORDER BY suara DESC").$total_pml.$grafik. // hitung jumlah total pemilih // lakukan looping untuk menggambar setiap grafik $hasil = $poll->query_SQL().$total_pml. // suara masing2 kandidat $persen = $poll->get_persen($suara).'<p><a href="index. $poll->get_gambar($gambar['band']). /*****************************************************************/ // hasil pollind dari band terfavorit echo '<h2>Hasil Polling Band Terfavorit</h2>' .$kandidat.$suara.'<td>'.'</b> orang.php $poll->get_tabel('poll_band').'<a href="index. ?> </body> </html> Simpan pada direktori polling dengan nama poll_semua. // hitung jumlah kandidat $poll->get_suara_terbanyak().php.'<td><b>Nama Band</b><td><b>Grafik</b></td>' . Bab 4 .php?proses=klub">Ikuti Polling</a></p>'. // letaknya di konfig. // dapatkan suara yang terbanyak // lakukan query ulang $poll->query_SQL().'<tr bgcolor="#d7e7f3">' .'</td></tr>'.</p>' .'</b> orang. // persentase masing2 kandidat $grafik = $poll->gambar_grafik($suara). $poll->get_jml_kandidat().php $poll->get_lebar_max($lebar_max).</p>' .$persen.'<p>Total Pemilih: <b>'. } // tutup table echo '<tr bgcolor="#d7e7f3" height="15"><td colspan="4"></td></tr>' . // letaknya di konfig. // panggil class polling untuk menggambar grafik $poll = new polling.'<a href="index.'<td><b>Persentase (%)</b></td><td><b>Jumlah Pemilih</td></b>' .

Masalah Keamanan.localhost Gambar 4. Error Handling dan Contoh-contoh Aplikasi 275 .NgawurPolling.11: Semua hasil polling Akhir dari file yang berada pada direktori polling Bab 4 .

Masalah Keamanan.Bab 4 . Error Handling dan Contoh-contoh Aplikasi 276 .

menghapus dan mengedit forum Admin dapat menambah dan menghapus topik pada forum Admin dapat menghapus reply dari user pada topik tertentu Admin dapat menghapus user/member Admin dapat mengatur berapa daftar reply. namai folder terseut hari-18-19-20 ForumBARENG.localhost Hari Ke-18 - 19 & 20 Seperti biasa karena kita sudah menginjak hari baru maka ikuti langkah-langkah berikut: Masuk pada direktori C:\Apache2\htdocs\webmaster\Bab4\ Buat folder baru.12: Sketsa halaman ForumBARENG Sketsa Proyek Sketsa proyek kita bagi dalam dua bagian. Bagian Administrator Untuk masuk ke halaman administrator / control panel admin harus memasukkan username dan password Admin dapat menambah. Update Profil Logout Buat Topik Hal. Member Login Lupa Pass Form Daftar Hal. Untuk lebih jelasnya lihat bagan sketsa proyek berikut. Utama/ Daftar Forum Daftar Topik Reply Topik Daftar Reply Gambar 4.localhost Aplikasi ke dua yang kita buat adalah sebuah website forum. Pembuatan website kita bukan kita tekankan pada tampilan melainkan pada fungsionalnya.ForumBareng.Masalah Keamanan. Untuk yang pertama kita bahas dulu bagian administrator. Kita akan mengerjakan proyek ini dalam dua hari kedepan. yaitu bagian administrator dan bagian pengunjung. Error Handling dan Contoh-contoh Aplikasi 277 . Untuk masalah tampilan akan dibahas pada bab khusus. topik atau forum yang ditampilkan per halaman baik untuk control panel maupun untuk bagian user Admin dapat mengirim email ke semua member Bagian Pengunjung/Member User dapat menjadi member dari ForumBareng dengan cara mendaftar lewat form daftar Jika user belum login atau ia belum menjadi member maka user ID-nya adalah guest User dapat memilih forum yang ada pada forumBareng sesuai dengan keinginan User dapat membuat topik baru pada forum tertentu User dapat melakukan reply pada topik atau reply dari user yang lain User dapat melakukan reset pada passwordnya jika lupa dan password baru langsung dikirim ke alamat email user Untuk Mengaplikasikan proyek ini ikuti beberapa langkah berikut untuk konfigurasi direktori: Masuk pada direktori C:\Apache2\htdocs\webmaster\Bab4\hari-18-19-20 Buat folder baru namai folder tersebut forum Masuk pada direktori forum yang baru anda buat Bab 4 .

php member.php topik. Bab 4 . Untuk itu jalankan PHP DESIGNER 2005 klik menu File > New > SQL kemudian salin kode berikut ini Script dari file db_forum. kita akan membuat file untuk membangun databasenya terlebih dahulu. tb_topik dan tb_reply pada database forum Tabel tb_forum id_forum  jdl_forum  ket_forum Tabel tb_topik jdl_topik  tgl_post Tabel tb_reply isi_reply  tgl_post id_topik  id_forum  Username  id_reply  id_topik  id_forum  Username email  Gambar 4. dan update profil daftar.php fungsi.2 Daftar file untuk website ForumBARENG Direktori forum Nama File Fungsi index.php kata_kotor.13: Sketsa hubungan antar tabel forum.php Menampilkan form login. CREATE DATABASE forum. dan menghapus forum Menampilkan daftar topik dan menghapus topik Menampilkan daftar reply dan menghapus reply Menampilkan daftar member dan menghapus member Direktori forum\inc Fungsi Melakukan redirect ke halaman utama Menyimpan tampilan header HTML Menyimpan kumpulan fungsi untuk semua halaman Berisi class halaman berguna untuk menampilkan nomor halaman Menyimpan konfigurasi halaman Menyimpan daftar kata-kata kotor Nama File index.php reply.sql Script SQL untuk membangun database forum Direktori forum\admin Fungsi Menampilkan form login atau menu administrator Menampilkan. daftar menu.jika sudah ada hapus DROP DATABASE IF EXISTS forum.php Menampilkan dan memproses form lupa password db_forum. Error Handling dan Contoh-contoh Aplikasi 278 .Masalah Keamanan.php Menampilkan dan memproses form registrasi lupa_pass.2 berdasarkan letak direktorinya. Untuk file yang pertama seperti biasa. Tabel 4.php Nama File index.php Menampilkan daftar topik dan mem-post topik reply.php forum.php header.php class_forum.ForumBareng.php Menampilkan halaman utama dan daftar forum topik.php Menampilkan daftar reply dan mem-post reply member.localhost Buat dua folder berikut admin dan inc Daftar file yang akan kita buat untuk membangun website ForumBARENG ditunjukkan oleh tabel 4.Buat database forum -. topik dan replay.txt Berikut ini adalah sketsa hubungan(Relational) dari dari tabel tb_forum.php konfig. mengedit.sql -.

last_login varchar(30) ) TYPE='MyISAM'. tgl_post varchar(20) ) TYPE='MyISAM'.localhost -. id_forum varchar(12). DELETE ON forum. tgl_post varchar(20) ) TYPE='MyISAM'.buat tabel admin CREATE TABLE admin ( username varchar(16) PRIMARY KEY. id_topik int(4). ket_forum varchar(255) ) TYPE='MyISAM'. isi_reply text. Pada MySQL monitor ketikkan Bab 4 . posting int(4).buat privilege untuk database ini GRANT SELECT. Untuk mengeksekusi file ini terdapat dua cara yaitu melalui MySQL Monitor atau lewat phpMyAdmin.buat tabel forum CREATE TABLE tb_forum ( id_forum varchar(12) PRIMARY KEY. -. -. -.sql.buat tabe member CREATE TABLE member ( username varchar(16) PRIMARY KEY.Masalah Keamanan.* TO userforum@localhost IDENTIFIED BY 'forum123'. -.jika ada penambahan record baru CREATE TABLE tb_topik ( id_topik int(4) PRIMARY KEY AUTO_INCREMENT. username varchar(16). Error Handling dan Contoh-contoh Aplikasi 279 . INSERT.buat tabel reply CREATE TABLE tb_reply ( id_reply int(4) PRIMARY KEY AUTO_INCREMENT. password varchar(32). password varchar(32) ) TYPE='MyISAM'. jdl_topik varchar(100). email varchar(50). -. -. UPDATE. jdl_forum varchar(50). username varchar(16).aktifkan database forum USE forum. id_forum varchar(12). -. email varchar(50).buat tabel topik -.ForumBareng.akhir dari file (EOF) Simpan pada direktori forumdengan nama db_forum.id_topik bertipe auto_icrement artinya selalu ditambah satu -.

.php <?php Bab 4 . tidak bermaksud pornografi atau kasar) ass asshole shit bullshit fuck fucker keparat bangsat bajingan brengsek Simpan pada direktori inc dengan nama kata_kotor. ?> Simpan pada direktori forum\inc dengan nama index.php *** ** Penulis.. klik tombol Browse lalu arahkan ke alamat seperti diatas. wordpad..php')..php..php <?php /********************************************************** ** Nama File.Masalah Keamanan. Script dari file header.. Buat file baru pada PHP DESIGNER 2005 lalu ketik kode berikut....txt. Baik untuk halaman administrator ataupun halaman pengunjung... gedit dan sebagainya).ForumBareng.: 12-10-2005 *** ** Penjelasan. Kita membuat file-file pada direktori ini terlebih dahulu karena file-file pada direktori ini akan kita panggil hampir pada setiap halaman.sql Pada phpMyAdmin... Karena dalam pikiran saya yang terpikir hanya sepuluh kata tersebut.: Rio Astamal *** ** Tanggal. vi..txt (maaf. Isi dari file kata_kotor./index.. Berikutnya kita akan membuat file yang menyimpan daftar kata-kata kotor.. Anda dapat menambahkan katakata lain yang menurut anda perlu untuk difilter.. Selanjutnya kita akan membuat file yang akan menampilkan header HTML pada setiap halaman. Tugas file ini hanyalah melakukan redirect halaman ketika ada yang mencoba masuk ke direktori inc.. Tanpa banyak gocek lagi langsung saja klik File > New > PHP pada PHP DESIGNER 2005 lalu ketik kode berikut Script dari file index..localhost mysql> source C:/Apache2/htdocs/webmaster/Bab4/hari-18-19-20/forum/db_forum. Error Handling dan Contoh-contoh Aplikasi 280 . File-file berikutnya yang akan kita buat adalah file yang berada pada direktori inc. Ketik daftar kata berikut. Untuk itu buka text editor kesayangan anda (notepad.: melakukan redirect halaman *** ***********************************************************/ // Jika user mencoba masuk ke direkori inc kembalikan ia // ke halaman utama header('Location: .: index..

..Masalah Keamanan. Klik File > New > PHP untuk membuat file PHP baru lalu ketik kode berikut.../index..: 17-10-2005 *** ** Penjelasan..: 12-10-2005 *** ** Penjelasan. // 2 member per halaman // tentukan letak file yang menyimpan daftar kata kotor Bab 4 .ForumBareng... font-size: 11px} a{color: #076fd0} a:visited{color: #076fd0} </style> </head> <body> Simpan pada direktori forum\inc dengan nama header... File selanjutnya adalah file yang berfungsi untuk menyimpan setting tampilan...: konfig. // keluar dari rutin script } /********************************************************** Konfigurasi untuk administrator **********************************************************/ // tentukan daftar topik yang ditampilkan per halaman $a_tph = 3... exit..php.. Script dari file konfig. $_SERVER['PHP_SELF'])) { // kembalikan ke halaman utama header('Location: .. // 2 reply per halaman // tentukan daftar member yang ditampilkan per halaman $a_mph = 2... // 3 topik per halaman // tentukan daftar reply yang ditampilkan per halaman $a_rph = 2. font-size: 11px} td{font-family: verdana.: Rio Astamal *** ** Tanggal.. Kita nantinya memanggil file ini dengan include() atau require().: berisi konfigurasi untuk forum *** ***********************************************************/ // cegah pengaksesan langsung dari browser if (eregi('class_forum..: header....php *** ** Penulis...php'... Berapa topik atau reply yang harus ditampilkan per halaman kita simpan pada file ini.Mari Berbagi!</title> <style> body{font-family: verdana..localhost /********************************************************** ** Nama File. Error Handling dan Contoh-contoh Aplikasi 281 ...php <?php /********************************************************** ** Nama File. File ini hanya bertugas untuk menampilkan header HTML pada setiap halaman.php *** ** Penulis..php').: Untuk menampilkan HTML header *** ***********************************************************/ ?> <html> <head> <title>Forum BARENG .......: Rio Astamal *** ** Tanggal..

} } // cek setiap field apa ada yang kosong function cek_field($var) { foreach ($var as $field) { if ($field == '' || !isset($field)) return false.... 'forum123')... $_SERVER['PHP_SELF'])) exit('Error: Akses ditolak.localhost $daftar_kata = 'inc/kata_kotor... Dan untuk user diawali huruf u seperti $u_tph.: fungsi.'). // fungsi untuk mengkoneksikan dengan MySQL server function konek_db() { // untuk username = secure dan password = secure123 @ $koneksi = mysql_connect('localhost'. Kita membagi konfigurasi menjadi dua bagian yaitu untuk administrator dan user.. return true. // 3 topik per halaman // tentukan daftar reply yang ditampilkan per halaman $u_rph = 2.: Kumpulan fungsi untuk forum *** ***********************************************************/ // cegah pengaksesan langsung dari browser if (eregi('fungsi. Error Handling dan Contoh-contoh Aplikasi 282 . Pada file ini kita juga menentukan letak file yang menyimpan daftar kata kotor.ForumBareng...: Rio Astamal *** ** Tanggal. } Bab 4 ..php <?php /********************************************************** ** Nama File.. /*********************************************************** Konfigurasi untuk user ***********************************************************/ // tentukan daftar topik yang ditampilkan per halaman $u_tph = 3. Buat file baru pada PHP DESIGNER 2005 dengan mengklik File > New > PHP lalu ketik kode berikut ini.php'.php..php *** ** Penulis. Selanjutnya kita akan membuat file yan gberisi kumpulan fungsi yang kita pakai pada hampir setiap halaman pada website ForumBARENG.Masalah Keamanan.txt'. // jika gagal melakukan koneksi kembalikan false if (!$koneksi) return false.: 12-10-2005 *** ** Penjelasan. // 2 reply per halaman ?> Simpan pada direkori forum\inc dengan nama konfig. Script dari file fungsi.. else { // pilih database yang digunakan mysql_select_db('forum'). 'userforum'. Untuk administrator nama variabelnya diawali dengan huruf a seperti $a_tph..

Masalah Keamanan. // kembalikan nilai false else // jika tidak kosong return true. // lakukan looping sebanyak $panjang(parameter) Bab 4 . // kembalikan nilai true } // fungsi untuk membuat password secara acak // digunakan untuk mengirim password pada form lupa password function pass_acak($panjang=8) { $kar = "ABCDEFGHJKLMNPRSTUVWXYZ0123456789abchefghjkmnpqrstuvwxyz". $password) { // lakukan query untuk mencocokkan data $hasil = mysql_query("SELECT * FROM $tabel WHERE username='$username AND password='$password'"). // acak karakter srand((double)microtime() * 1000000). // data tidak cocok else return true. // cek baris yang dikembalikan if (mysql_num_rows($hasil) == 0) return false. ''. } // cek kevalidan email function cek_email($email) { // fungsi untuk mengecek kevalidan email if (ereg('^[a-zA-Z0-9_\-]+@[a-zA-Z0-9\-]+\. $username. } // fungsi untuk menyaring string selain alpabet. return $chiper_text. return $filter. Error Handling dan Contoh-contoh Aplikasi 283 .]+$'. else return false. $email)) return true. // kemblikan nilai true } // fungsi untuk login function login($tabel.[a-zA-Z0-9\-\.ForumBareng. $string). } // fungsi untuk mengecek session function cek_session($nama_ses) { // jika session kosong if (!isset($_SESSION[$nama_ses])) return false.localhost return true. numerik dan _ function filter_str($string) { $filter = ereg_replace('[^a-zA-Z0-9_]'. } // fungsi untuk mengenkripsi string dengan metode MD5 // dan membalik urutannya function balik_md5($string) { // untuk membalik urutan string digunakan fungsi strrev() $chiper_text = strrev( md5( $string ) ).

$i<$panjang..ForumBareng. // kembalikan hasil } // fungsi untuk mengecek kata-kata kotor function filter_kata($string. } return $string. // untuk mendapatkan satu nomor acak $pass . $nom_acak = rand() % 53. // kembalikan false else { // jika tidak kosong hancurkan session tersebut unset($_SESSION[$nama_ses]).. 1).localhost for ($i=0. // ganti menggunakan fungsi eregi_replace() $string = eregi_replace($kotor.php. $nom_acak. // kembalikan nilai true } } ?> Simpan pada direkori forum\inc dengan nama fungsi. $nom_acak. Oh. session_destroy(). Namun jika tidak diisi panjang defaultnya adalah delapan karakter. // kembalikan hasil } // fungsi untuk logout (menghapus session) function logout($nama_ses) { // jika session kosong if (!isset($_SESSION[$nama_ses])) return false. Error Handling dan Contoh-contoh Aplikasi 284 .= substr($kar. $file) { // buka file untuk daftar kata kotor $daftar_kata = file($file). $string). PENJELASAN SCRIPT Saya rasa fungsi-fungsi yang ada sudah pernah kita buat sebelumnya.Masalah Keamanan. Untuk mendapatkan karakter sebanyak $panjang maka kita lakukan looping for sebanyak $panjang juga.= substr($kar. Pertama kita membuat variabel yang berisi karakter alpabet dan numerik yang kita simpan pada variabel $kar. Fungsi pass_acak() berguna untuk membuat karakter acak yang panjangnya dapat kita tentukan pada parameter. // ambil satu karakter Bab 4 . return true. 1). Kemudian kita mengacak karakter menggunakan fungsi srand((double)microtime() * 1000000). // ambil satu karakter } return $pass.ada dua yang belum pernah kita buat yaitu fungsi pass_acak() dan filter_kata(). // lakukan looping untuk mengganti setiap kata kotor dengan !@#$% foreach($daftar_kata as $kotor) { // hilangkan spasi diawal dan diakhir kata $kotor = trim($kotor). // untuk mendapatkan satu nomor acak $pass . $i++) // default diulang sebanya 8x { $nom_acak = rand() % 53. '!@#$%'.

// keluar dari rutin script } class halaman { // deklarasilam properti untuk class var $tabel. Seperti first. Script dari file class_forum. Karakter yang dihasilkan fungsi pass_acak() selalu berubah pada setiap fungsi itu dipanggil..txt yang ada pada direkori inc. C60AS5hh dan sebagainya. 4bZHM3us.ForumBareng. $last_page.. untuk mengganti setiap kata kotor kita menggunakan looping foreach dan fungsi eregi_replace().. last dan next.. exit...: Rio Astamal *** ** Tanggal. Fungsi filter_kata() berfungsi untuk mengganti kata yang ada pada daftar kata kotor. $file. $page. $_SERVER['PHP_SELF'])) { // kembalikan ke halaman utama header('Location: . $tampilkan_hal.. Untuk membuatnya klik File > New > PHP pada PHP DESIGNER 2005 kemudian ketik kode berikut. // metode umtuk memilih tabel yang digunakan function set_tabel($nama_tabel) { $this->tabel = $nama_tabel.: Class untuk menampilkan link nomor *** ** halaman *** ***********************************************************/ // cegah pengaksesan langsung dari browser if (eregi('class_forum.. File berikunya yang akan kita buat adalah file yang berisi class halaman.. $per_halaman...php'. $hasil_query.. Contoh karakter yang dihasilkan dari fungsi pass_acak() tanpa mengisikan parameter adalah XCYDn08R.. } // metode untuk menentukan data yang di-post function set_page($halaman) { $this->page = $halaman. Karena pada blok looping kita menuliskan $pass dengan tanda ..php').: class_forum. $jml_data.Masalah Keamanan..: 12-10-2005 *** ** Penjelasan.php <?php /********************************************************** ** Nama File. Daftar kata kotor kita simpan pada file kata_kotor. Error Handling dan Contoh-contoh Aplikasi 285 . $sebelumnya.. before.. Kemudian kita mengambil satu karakter dari karakter-karakter yang ada di $kar secara acak menggunakan substr()./index. } // metode untuk menentukan banyaknya pesan per halaman Bab 4 . Karena eregi_replace tidak membedakan huruf kecil atau huruf besar (tidak case sensitive). $berikutnya.localhost Pada blok kode looping kita membuat variabel $nom_acak yang isinya adalah satu angka yang kita dapat secara acak. var $record.= maka isi dari $pass sebelumnya akan digabung dengan isi $pass berikutnya hingga delapan kali atau sesuai parameter.. 5uMwsrvj... $jml_hal. Fungsi file ini adalah untuk menampilkan link nomor halaman.php *** ** Penulis.

} // metode untuk mendapatkan halaman // paling awal. } // metode untuk melakukan query sql.Masalah Keamanan. $id=''.2 atau 3 lakukan query sesuai parameter $this->hasil_query = $query. } // metode untuk mendapatkan jumlah record yang harus ditampilkan // pada query SQL. digunakan untuk mendapatkan jumlah // data. return $this->record. // kembalikan hasil dari query } // metode untuk mendapatkan jumlah data pada database function get_jml_data() { $jumlah = mysql_num_rows($this->hasil_query).localhost function set_pph($angka) { $this->per_halaman = $angka. jumlah record dan sebagainya function query_SQL($q = 1. return $this->jml_data. $this->record = $hasil.ForumBareng. $this->jml_hal = $jumlah. Error Handling dan Contoh-contoh Aplikasi 286 . $this->jml_data = $jumlah. $lainnya='') { // jika parameter pertama berisi 1 lakukan query berikut if ($q == 1) $query = mysql_query("SELECT * FROM $this->tabel"). $isi=''. else if ($q == 3) // jika 3 lakukan query berikut $query = mysql_query("SELECT * FROM $this->tabel WHERE $id='$isi' ORDER BY $lainnya DESC LIMIT $this->record. sebelumnya. berikutnya dan paling akhir function set_hal() { Bab 4 . return $this->jml_hal. // jika bukan 1. } // metode untuk mendapatkan jumlah halaman function get_jml_hal() { // untuk menghitung jumlah halaman digunakan fungsi ceil // dimana >> Jumlah data : pesan per halaman // jika hasilnya koma. $this->per_halaman"). else $query = mysql_query($q). jumlah record = halaman x pesan per halaman function get_record() { $hasil = $this->page * $this->per_halaman. else if ($q == 2) // jika 2 lakukan query berikut $query = mysql_query("SELECT * FROM $this->tabel WHERE $id='$isi'"). maka dibulatkan ke atas $jumlah = ceil($this->jml_data / $this->per_halaman). return $this->per_halaman. return $this->hasil_query.

= "&nbsp $next &nbsp $last\n". Error Handling dan Contoh-contoh Aplikasi 287 . $next = "<font color='#cccccc'>Next ></font>". } // tampilkan $halaman = "$first &nbsp $back &nbsp\n". // link halaman berikutnya didapat dengan menambahkan nilai // halaman sekarang dengan satu $this->berikutnya = $this->page + 1. } else { $first = "<a href='$URL&page=0'><< First</a>".= " <font size='+1'><b><a href='$URL&page=$i'>" .intval($i + 1). } $halaman ."</a></b></font> \n"."</a>\n". // gunakan looping untuk menampilkan setiap nomor halaman for ($i=0.1.1.ForumBareng.intval($i + 1). // output dari halaman jika jumlah halamannya lebih dari satu Bab 4 . $back = "<a href='$URL&page=$this->sebelumnya'>< Before</a>". } // jika halaman sekarang sama dengan nilai halaman terakhir // jangan tampilkan link last dan next if ($this->page == $this->last_page) { $last = "<font color='#cccccc'>Last >></font>". $i++) { // jika nomor halaman sama dengan halaman yang sedang // dibuka perbesar angka tersebut if ($i == $this->page) $halaman . // link halaman sebelumnya didapat dengan mengurangi nilai // halaman sekarang(yang aktif) dengan satu $this->sebelumnya = $this->page . Lihat pada bagian // intval($i + 1) $this->last_page = $this->jml_hal . else $halaman . $next = "<a href='$URL&page=$this->berikutnya'>Next ></a>". } else { $last = "<a href='$URL&page=$this->last_page'>Last >></a>". } // metode untuk menampilkan nomor halaman function show_page($URL) { // jika jumlah halaman lebih dari satu tampilkan selain itu jangan if ($this->jml_hal > 1) { // jika halaman sekarang 0 (paling awal) jangan tampilkan link // first dan before ganti dengan tulisan biasa(warna abu-abu) if ($this->page == 0) { $first = "<font color='#cccccc'><< First</font>".Masalah Keamanan.= " <a href='$URL&page=$i'>". $i<$this->jml_hal.localhost // halaman terakhir kita kurangi satu karena pada nomor // link halaman kita menambahkan satu. $back = "<font color='#cccccc'>< Before</font>".

Jumlah halaman = jumlah baris : pesan per halaman Untuk menghitung kita gunakan fungsi ceil() agar hasilnya dibulatkan ke atas.localhost // kurang lebih seperti berikut.Masalah Keamanan. Record = halaman x pesan per halaman Pada metode query_SQL() kita membuat empat parameter. 2 Bab 4 . Dengan mengetahui jumlah record kita dapat memberitahukan MySQL harus dimulai dari baris keberapa data yang harus ditampilkan. // hasilnya 2. 1. jumlah record yang harus ditampilkan. Khusus query 3 terdapat klausa LIMIT yang berguna untuk menampilkan sejumlah data per halaman. 2. Nilai dari record kita dapat dengan mengalikan yang halaman yang aktif dengan banyaknya pesan per halaman. Halaman 0. Untuk metode get_jml_data() kita hanya menghitung jumlah baris yang dikembalikan oleh metode query_SQL(). PENJELASAN SCRIPT Sebenarnya pada bab 3 kita pernah membuat nomor link halaman untuk bukutamu dan berita. Sehingga kode kita akan lebih efisien. Query 1 dan dua biasanya kita gunakan untuk mendapatkan jumlah baris dan jumlah halaman.5 dibulatkan menjadi 3. Jumlah record berhubugan dengan jumlah data yang harus ditampilkan pada halaman. Misalnya sekarang halaman 2 dan jumlah data per halaman yang ditetapkan adalah 3. Sedangkan untuk metode get_jml_hal() kita menghitung jumlah halaman dengan cara membagi jumlah data/baris dengan pesan per halaman. // artinya halaman yang ada hanya satu $this->tampilkan_hal = $halaman. 3 pada metode query_SQL kita sesuaikan dengan kebutuhan kita. maka nilai recordnya adalah 2 * 3 = 6. Misalnya jumlah baris 5 dan pesan per halaman 2. Untuk menampilkan link nomor halaman ada beberapa nilai yang harus ditentukan yaitu. Namun pada bab tiga kita membuatnya dengan cara tradisional. jumlah baris/data dan jumlah halaman. pesan per halaman. Sekarang kita coba membuatnya namun menggunakan metode class. Query 1. Error Handling dan Contoh-contoh Aplikasi 288 . Jadi pada query SQL akan seperti berikut SELECT * FROM nama_tb WHERE id='xxx' ORDER BY id_xxx DESC LIMIT 6. } } // akhir dari class halaman ?> Simpan pada direkori forum\inc dengan nama class_forum. 3 Jadi data yang ditampilkan akan dimulai dari record/baris ke-6 tampilkan sebanyak 3 baris. data halaman yang dihandel.php. Sedangkan untuk query 3 kita untuk menampilkan data pada database. Maka jumlah halamannya $jml_hal = ceil(5/2). Satu wajib diisi dan tiga lainnya bersifat opsional. dimana x adalah nomor halaman // << First < Before x x x Next > Last >> } else $halaman = ''.ForumBareng. // kembalikan nilai karena akan dicetak ke layar return $this->tampilkan_hal.

Maka jangan tampilkan link Next > dab Last >>. Sebaliknya untuk nilai next dengan menambahkan nilai halaman sekarang dengan 1. File-file berikunya yang akan kiat buat adalah file-file yang ada pada direktori admin. Langkah terakhir adalah dengan membuat nilai dari properti $this->tampilkan_hal yaitu sama dengan $halaman.localhost Metode berikutnya adalah set_hal(). $i++) Yang menarik juga adalah kita memberi tanda pada user halaman mana yang sedang ia buka dengan cara memperbesar ukuran hurufnya. Nilai before kita perloleh dengan mengurangi nilai halaman sekarang dengan 1. Sebelum menampilkan halaman ada satu kondisi yang harus dipenuhi yaitu jumlah halaman harus lebih dari satu. Tanpa mengurangi satu maka nilai last page adalah dua. Melihat daftar topik atau reply dan menghapusnya. Jika kondisi terpenuhi artinya jumlah halaman lebih dari satu. Fungsi metode ini adalah untuk menentukan isi dari link halaman Before.ForumBareng. Selain itu tetap cetak nomor halaman dengan ukuran normal. Metode yang terakhir adalah show_page(). mengedit atau menghapus forum. File-file yang ada pada direktori ini kita gunakan untuk memanaje website forum. Memanaje member yang telah bergabung dengan ForumBARENG. Next. Baik menambah. Sedangkan halaman dua tidak ada. Untuk first nilainya tidak perlu kita set karena sudah pasti NOL karena merupakan halaman pertama. Metode ini memiliki satu parameter yaitu URL halaman. if ($this->page == $this->last_page) Selanjutnya untuk menampilkan nomor link halaman kita gunakan looping for yang diulang sebanyak jumlah halaman. Error Handling dan Contoh-contoh Aplikasi 289 .php <?php Bab 4 . Jika jumlah halaman hanya satu maka link nomor halaman tidak akan ditampilkan. Sehingga halaman terakhir adalah 1. dan Last. Cek kembali beberapa kondisi yang mungkin terjadi. if ($this->page == 0) Begitu juga jika halaman sekarang sama dengan nilai dari $this->last_page (halaman terakhir). File pertama yang akan kita buat adalah file untuk login dan menampilkan daftar menu untuk halaman control panel. Akhir dari file-file yang berada pada direktori forum\inc. Untuk halaman terakhir nilainya kita tentukan dengan mengurangi jumlah halaman dengan 1. Yang pertama jika halaman sekarang sama dengan NOL maka jangan tampilkan link << First dan < Before. for ($i=0. $i<$this->jml_hal.Masalah Keamanan. Untuk itu kita gunakan kondisi sebagai berikut if ($i == $this->page) Artinya jika nomor halaman sama dengan halaman sekarang maka perbesar ukuran huruf tersebut. Karena akan dicetak ke layar kembalikan hasil dengan cara return $this->tampilkan_hal. Klik File > New > PHP untuk membuat file baru kemudian ketik kode berikut ini Script dari file index. Sebagaimana kita tahu jika jumlah halamannya dua maka halamannya adalah 0 dan 1.

"<p><a href='forum.php?proses=logout'>Logout</a></p>\n"..: index. if ($proses == '') $proses = 'login'.php'>Manaje Forum</a></p>\n" ....../inc/fungsi.php'>Manaje Member</a></p>\n" . <br> Cek kembali settingan untuk host.Masalah Keamanan.: 12-10-2005 *** ** Penjelasan.. // panggil file header. Error Handling dan Contoh-contoh Aplikasi 290 .."</form>\n". Bab 4 .. // filter karakter pada proses $proses = filter_str($proses)."<p><a href='reply.php')."<p>Silahkan pilih link dibawah ini untuk memanaje forum</p>\n" ."<form action='index..php'>Manaje Topik</a></p>\n" ..php include('....php'>Manaje Reply</a></p>\n" .: Untul login admin dan menu utama *** ***********************************************************/ // panggil session_start() karena berhubungan dengan session session_start().../inc/header.ForumBareng. // koneksikan ke MySQL Server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server. // dapatkan data dari URL $proses = $_GET['proses'].."<p><a href='member."<p><a href='topik.: Rio Astamal *** ** Tanggal."<input type='submit' value='LOGIN'>\n" .. dengan catatan untuk mencetak // string kita menggunakan petik dua echo "<h2>ForumBARENG Admin Area . // panggil file fungsi."Password: <input type='password' name='password'><br><br>\n" . // sebagai alternatif kita gunakan \n agar source kode HTML-nya sesuai // dengan struktur kode PHP kita // handel setiap proses dengan switch dan case switch ($proses) { /************/ case 'login': /************/ // jika session admin kosong maka admin belum login // jadi tampilkan form login selain itu tampilkan menu utama if (!cek_session('admin')) { // sebagai alternatif kita gunakan \n agar source HTML-nya // sesuai dengan struktur kode.Please login</h2>\n" ."<p><a href='index.. username dan password'). } else { echo "<h2>Selamat Datang di Control Panel ForumBARENG</h2>\n" .php *** ** Penulis."Username: <input type='text' name='username'><br><br>\n" .php').php include('.php?proses=proses_login' method='post'>\n" ...localhost /********************************************************** ** Nama File.

'disini</a> untuk login kembali. $username. /**********/ /********************************/ case '__add_admin_to_database__': /********************************/ /* case ini berfungsi untuk memasukkan account administrator ke database ini dikarenakan fungsi yang kita gunakan login adalah balik_md5() dan untuk menghasilkan string chiper ini hanya bisa dilakukan lewat script PHP bukan pada MySQL untuk memanggil fungsi ini harus diketikkan langsung pada address bar index. /************/ /************/ case 'logout': /************/ if (!logout('admin')) echo 'Tidak bisa logout. /*************/ /*******************/ case 'proses_login': /*******************/ // ambil data yang dipost sekaligus filter karakter $username = filter_str($_POST['username']). // enkripsi password $password = balik_md5($password).Masalah Keamanan. break. Error Handling dan Contoh-contoh Aplikasi 291 . echo 'Login berhasil. else echo 'Anda telah logout dari sistem. $password = filter_str($_POST['password']).php?proses=__add_admin_to_database__ lalu ENTER untuk mencegah eksploitasi sistem. <a href="index. } else { // buatkan session karena berhasil login $_SESSION['admin'] = $username. Klik <a href="index. kita tidak menyediakan form untuk menambahkan account admin ke database melainkan langsung melakukan query */ Bab 4 . <a href="index.'masuk ke admin area'.'. // gunakan fungsi login() untuk mengecek kecocokan data if (!login('admin'. } break.php">Kembali</a>'.php">Login</a> dulu. Klik <a href="index.php">disini</a> untuk ' .ForumBareng. $password)) { // jika gagal jangan buatkan session echo 'Username atau password salah.php"> ' .localhost } // akhir dari else break.'.

Bab 4 . else echo 'Account untuk administrator berhasil dimasukkan ke database. Pada halaman utama jika session admin belum terisi maka ia(admin) belum login. Untuk memasukkan account administrator ke database kita dapat mengetikkan langsung pada URL http://./Bab4/hari-18-19-20/admin/index..Masalah Keamanan. Output dari menu utama admin area ditunjukkan oleh gambar 4. Setelah mengeksekusi URL diatas anda dapat login ke admin area menggunakan username admin dan password __pas123__. if (!$hasil) echo 'Error: Gagal memasukkan ke database. // tutup koneksi ke MySQL ?> </body> </html> Simpan pada direktori forum\admin dengan nama index.12 PENJELASAN SCRIPT Struktur file ini sama dengan yang biasa kiat gunakan untuk halaman administrator pada proyek-proyek sebelumnya. // lakukan query INSERT untuk memasukkan account ke database $hasil = mysql_query("INSERT INTO admin VALUES('$username'.localhost // tentukan username dan password yang diinginkan $username = 'admin'.ForumBareng.php">Login</a>'.'. break. Ini dikarenakan tipe kolom username primary key artinya tidak boleh ada data yang sama. <br>' .. Karena pada login kita menggunakan fungsi balik_md5() maka untuk memasukkan account untuk administrator harus dilakukan dari script PHP.php. Error Handling dan Contoh-contoh Aplikasi 292 . $password = balik_md5('__pas123__'). Untuk itu tampilkan form login sebaliknya jika sudah terisi tampilkan menu untuk manajemen forum. '$password')"). Mungkin account sudah dimasukkan.php?proses=__add_admin_to_database__ Jika isi dari $username dari case ini tidak dirubah case ini hanya bisa dieksekusi satu kali saja..'<a href="index. Mengingat string chiper hasil fungsi balik_md5() tidak bisa dihasilkan lewat MySQL. /**********/ } // akhir dari switch mysql_close().

. Script dari file forum.php').php include('....php'). // cek isi session admin. mengedit. Error Handling dan Contoh-contoh Aplikasi ...: halaman untuk memanaje forum *** ***********************************************************/ // panggil session_start() karena berhubungan dengan session session_start().php <?php /********************************************************** ** Nama File. /// panggil file class_forum.. <br> Cek kembali settingan untuk host.php'). <a href='index.12: Halaman utama admin area.</p>\n". 293 Bab 4 .: Rio Astamal *** ** Tanggal.. // panggil file header.localhost Gambar 4. Untuk membuatnya klik File > New > PHP pada PHP DESIGNER 2005 lalu ketik kode berikut.. File berikunya yang akan kita buat adalah file yang berfungsi untuk menambah. untuk mengetahui sudah login atau belum if (!cek_session('admin')) echo "<p>Anda belum login.: 12-10-2005 *** ** Penjelasan./inc/class_forum.... // filter isi dari proses dan page $proses = filter_str($proses). // koneksikan ke MySQL Server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server. username dan password').ForumBareng..Masalah Keamanan.. if ($proses == '') $proses = 'view'.php include('.: forum.php *** ** Penulis../inc/header.php include('.php'>Login</a> dulu.../inc/fungsi. dan menghapus forum.. // panggil file fungsi. // dapatkan proses dari URL $proses = $_GET['proses'].

php?proses=tambah'>Buat Forum</a>\n"). // buat header tabel echo "<table border='0' cellpadding='4'>\n" ." <td>Judul Forum</td><td>Edit?</td>\n" ."'>HAPUS</a></td>\n" .$data['id_forum'] .php?proses=topik&forum="."<p><a href='index.localhost else { // handel setiap proses dengan switch dan case switch ($proses) { /***********/ case 'view': /***********/ echo "<h2>Daftar Forum yang ada pada ForumBARENG</h2>\n"."<td>".php'>Home</a> &nbsp " . // cek jumlah data/baris yang dikembalikan if (mysql_num_rows($hasil) == 0) exit("<p>Masih belum ada forum yang dibuat.ForumBareng."'>TOPIK</a></td>\n" .Masalah Keamanan.php?proses=hapus&forum=".$data['id_forum'] .php?proses=tambah'>Tambah Forum</a></p>\n"."'>EDIT</a></td>\n" ."<td><a href='topik. Error Handling dan Contoh-contoh Aplikasi 294 ."<td><a href='forum. /**********/ /***********/ case 'edit': /***********/ // ambil data dari URL $id_forum = $_GET['forum']. // tampilkan hasil dengan looping while ($data = mysql_fetch_array($hasil)) { echo "<tr>\n" ."<a href='forum." <td>Topik</td>\n" .</p>\n <a href='forum." </tr>\n". break. Bab 4 ."<td colspan='4'></td></tr>\n" ." <td>Hapus?</td>\n" . } // akhir dari while // tutup tabel echo "<tr bgcolor='#d7e7f3' height='15'> \n" . // lakukan query $hasil = mysql_query("SELECT * FROM tb_forum"). $data = mysql_fetch_array($hasil)."</tr>\n". // lakukan query untuk mendapat forum yang diedit $hasil = mysql_query("SELECT * FROM tb_forum WHERE id_forum='$id_forum'")."</table>\n\n" ."</td>\n" .php?proses=edit&forum=".$data['id_forum'] ." <tr bgcolor='#d7e7f3'>\n" .$data['jdl_forum']."<td><a href='forum.

php'>Home</a> &nbsp " .Masalah Keamanan."<a href='forum.php'>Forum</a>\n"."Keterangan Forum: <br>\n" ."</form>\n\n" ."ID Forum: <br><input type='text' name='id'><br><br>\n" .php?proses=proses_edit' method='post'>\n" .php'>Home</a> &nbsp " ."value='". <a href='javascript: history."<input type='hidden' name='id_forum' value='$id_forum'>\n" ."<p><a href='index."<a href='forum."value='". // masukkan perubahan ke database $hasil = mysql_query("UPDATE tb_forum SET jdl_forum='$judul'."<input type='text' name='ket_forum' " . // cek berhasil atau tidak if (!$hasil) echo "Error: Gagal mengupdate database."' size='30'><br><br>\n" . <a href='forum."Judul Forum: <br>\n" . break."<p><a href='index. $judul = $_POST['jdl_forum']. Error Handling dan Contoh-contoh Aplikasi 295 .localhost // buat form echo "<h2>Form Edit Forum</h2>\n\n" . $ket = $_POST['ket_forum']."' size='75'><br><br>\n" .$data['ket_forum'].$data['jdl_forum'].php'>Daftar Forum</a></p>\n". /*********/ /********************/ case 'proses_tambah': /********************/ // ambil data yang di-post $id = $_POST['id']. else echo "Forum berhasil diupdate.php?proses=proses_tambah' method='post'>\n" ."<input type='text' name='jdl_forum' " . ket_forum= '$ket' WHERE id_forum='$id'")."<form action='forum."<form action='forum."<input type='submit' value='E D I T'>\n" ."</form>\n\n" . break. /*********/ /******************/ case 'proses_edit': /******************/ // ambil data yang di-post $id = $_POST['id_forum']. Bab 4 . break."Keterangan: <br><input type='text' name='ket' size='100'> <br><br>\n" ."Judul Forum: <br><input type='text' name='judul' size='30'> <br><br>\n" .php'>Daftar Forum</a></p>\n"."<input type='submit' value='T A M B A H'>\n" . /***********/ /*************/ case 'tambah': /*************/ // buat form untuk menambah forum echo "<h2>Tambah Forum</h2>\n" .back()'>Kembali</a>\n".ForumBareng.

// tutup koneksi ke MySQL ?> </body> </html> Simpan pada direktori forum\admin dengan nama forum. else echo "Data berhasil dimasukkan ke database. Keterangan forum Pada forum ini anda dapat berdiskusi bla bla bla .. Bab 4 .13.\n". // cek jika masih ada field yang kosong if (!cek_field($_POST)) exit("Error: Masih ada field yang kosong. '$judul'. /************/ } // akhir dari switch } //akhir dari else mysql_close(). // masukkan data ke database $hasil = mysql_query("INSERT INTO tb_forum VALUES ('$id'. " . $ket = $_POST['ket'].ForumBareng. break.Masalah Keamanan."<a href='javascript: history.localhost $judul = $_POST['judul']. " .php.php'>Forum</a>\n". // lakukan query untuk menghapus data $hasil = mysql_query("DELETE FROM tb_forum WHERE id_forum='$id_forum'"). /**********/ /************/ case 'hapus': /************/ // ambil data dari URL $id_forum = $_GET['forum']. judul forum Web programming dengan PHP. Coba buat forum baru misalnya dengan id forum PHP. if (!$hasil) echo "Error: Gagal menghapus data dari database. Output dari file ini akan terlihat seperti gambar 4.. else echo "Data berhasil dihapus dari database."<a href='forum. " .back()'>Kembali</a>")."."<a href='forum. '$ket')").php'>Forum</a>". break. Error Handling dan Contoh-contoh Aplikasi 296 . if (!$hasil) echo "Error: Gagal memasukkan data ke database.

Untuk membuatnya klik File > New > PHP pada PHP DESIGNER 2005. Pada halaman ini nantinya kita menerapkan class halaman yang pernah kita buat.localhost Gambar 4.ForumBareng. Case yang terakhir adalah hapus. judul forum dan keterangan forum. Dan case yang terakhir adalah case hapus yang berguna untuk menghapus forum. Kita membuat tiga type input yaitu dua berupa text dan satu berupa hidden. Selanjutnya kita melakukan query untuk mendapatkan informasi judul dan keterangan forum yang bersangkutan.php terdapat beberapa case yaitu case view untuk menampilkan daftar forum.Masalah Keamanan. Case tambah untuk menambah topik dan case proses_tambah untuk memproses data dari case tambah. File berikutnya yang kita buat adalah file yang berfungsi untuk menampilkan daftar topik dan menghapus topik. Case proses_edit untuk memproses data yang dikirim dari form edit. Form terdiri dari tiga input text yaitu textbox untuk id forum. Error Handling dan Contoh-contoh Aplikasi 297 . dan HAPUS kita sertakan id dari forum-forum tersebut agar saat mengedit. Kita nantinya melaukan update terhadap forum menggunakan query SQL UPDATE. melihat. Saya rasa tanpa penjelasan anda sudah tahu maksud dari kode masing-masing case. Case proses_tambah berfungsi untuk memasukkan data yang di-post dari case tambah ke database. ID forum yang akan kita edit kita masukkan pada input type hidden. Case ini berfungsi menghapus forum yang ber-id sesuai dengan forum yang diklik admin. Case edit untuk mengedit forum yang ada.13: Tampilan halaman forum pada control panel PENJELASAN SCRIPT Pada halaman forum. kemudian ketik kode berikut ini Bab 4 . Dimana forum yang diupdate adalah forum yang ber-id berdasarkan id forum yang dipost. Pada proses_edit kita mengambil data yang di-post dari form edit menggunakan metode post. Untuk menampilkannya kita gunakan looping while seperti biasa yaitu while ($data = mysql_fetch_array($hasil)) Pada setiap link baik EDIT. Case selanjutnya yaitu tambah pada proses kita hanya meyediakan form untuk menambah forum. Pada case view kita mendaftar semua forum yang ada menggunakan query SQL seperti berikut $hasil = mysql_query("SELECT * FROM tb_forum"). Pada proses edit kita mengambil id dari forum yang akan edit menggunakan metode $_POST. topik atau menghapus yang dituju forum yang kita klik. TOPIK. Namun saya coba menjelaskannya secara singkat.

..php *** ** Penulis.php')../inc/header..."dulu.: topik..php'). // panggil file class_forum.php').Masalah Keamanan. // dapatkan proses dari URL $proses = $_GET['proses'].</p>\n". // lakukan query untuk mendaftar forum $hasil = mysql_query("SELECT * FROM tb_forum")..localhost Script dari file topik.. <br><br>\n <a href='forum.php include('.php').php include('./inc/konfig.php'>Login</a>" . if ($proses == '') $proses = 'view'.php include('.: 12-10-2005 *** ** Penjelasan.. // cek isi session admin... // panggil file header..: Rio Astamal *** ** Tanggal.. <br> Cek kembali settingan untuk host.: Untuk memanaje topik *** ***********************************************************/ // panggil session_start() karena berhubungan dengan session session_start()./inc/class_forum. // panggil file fungsi. Error Handling dan Contoh-contoh Aplikasi 298 .. // filter isi dari proses $proses = filter_str($proses)... // cek jumlah yang dikembalikan if (mysql_num_rows($hasil) == 0) exit("Masih belum ada forum. Bab 4 .php <?php /********************************************************** ** Nama File... // koneksikan ke MySQL Server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server.php?proses=tambah'>Buat Forum</a>\n").ForumBareng./inc/fungsi. username dan password'). <a href='index.. untuk mengetahui sudah login atau belum if (!cek_session('admin')) echo "<p>Anda belum login. else { // handel setiap proses dengan switch dan case switch ($proses) { /***********/ case 'view': /***********/ echo "<h2>Daftar Topik untuk masing-masing Forum</h2>\n".php include('... // panggil file konfig...

/**********/ /*************/ case 'tambah': /*************/ // buat form echo "<h2>Tambah Topik</h2>\n" ." <td><b>Forum</b></td><td><b>Jumlah Topik</b></td>" ."<p><a href='index."</form>\n\n" ."Username: <br><input type='text' name='username'> <br><br>\n" ."</tr>\n"."<td>$judul</td><td>$jml_topik [ $link ]</td>\n" . $judul = $data['jdl_forum']. // sama dengan $data['id_forum'] echo "<option value='$id'>$id</option>\n". $jml_topik = mysql_num_rows($query)."<p><a href='index. // buat link untuk setiap forum $link = "<a href='topik.php?proses=tambah'>Tambah Topik</a>\n"."<form action='topik." <tr bgcolor='#d7e7f3'>\n" .localhost // buat header tabel echo "<table border='0' cellpadding='4'>\n" ."<a href='topik.php'>Topik</a></p>\n". // lakukan looping untuk mendapatkan seluruh pilihan forum $hasil = mysql_query("SELECT * FROM tb_forum"). /***********/ Bab 4 ."Judul Topik: <br><input type='text' name='judul' size='50'> <br><br>\n" . // lakukan query untuk menghitung jumlah topik $query = mysql_query("SELECT * FROM tb_topik WHERE id_forum='$id'").ForumBareng. } // tutup table echo "<tr bgcolor='#d7e7f3' height='15'><td colspan='2'></td></tr>\n" . // tampilkan data dengan looping while ($data = mysql_fetch_array($hasil)) { // buat variabel $id = $data['id_forum']. echo "<tr>\n" ."</table>\n" . } echo "</select><br><br>\n" // tutup select .Masalah Keamanan. break."<a href='topik.php?proses=proses_tambah' method='post'>\n" // buat pilihan Forum dengan type select . while ($data = mysql_fetch_array($hasil)) { $id = $data[0]."Pilih Forum: <select name='forum'>\n".php?proses=topik&forum=$id'>Lihat</a>". Error Handling dan Contoh-contoh Aplikasi 299 ."<input type='submit' value='P O S T'>\n" . break.php'>Home</a> &nbsp " ." </tr>".php'>Home</a> &nbsp " .

"<table border='0' cellpadding='4'>\n" . $judul = $_POST['judul']. '$judul'. // panggil class halaman untuk menampilkan link halaman $hal = new halaman. // lakukan query SQL $jml_data = $hal->get_jml_data(). <br>\n". else echo "Data berhasil dimasukkan ke database. <br><br>\n <a href='javascript: history.ForumBareng. // buat form header tabel echo "<form action='topik. // cek apakah masih ada field yang kosong if (!cek_field($_POST)) exit("Error: Masih ada field yang kosong. // buat objek halaman $hal->set_tabel('tb_topik'). // tentukan tabel yang digunakan $hal->set_page($page). // data halaman yang dihandel $pph = $hal->set_pph($a_tph). <a href='topik. // jika tidak ada kesalahan masukkan ke database $hasil = mysql_query("INSERT INTO tb_topik (id_forum.localhost /********************/ case 'proses_tambah': /********************/ // ambil data yang di-post $forum = $_POST['forum']. // cek status if (!$hasil) echo "Error: Gagal memasukkan data ke database.php) $hal->query_SQL(2. '$tgl')"). /**********/ /************/ case 'topik': /************/ // ambil data dari URL $forum = filter_str($_GET['forum']). $user = $_POST['username'].php'>Topik</a>"). <br><br>\n" . echo "<h2>Daftar Topik</h2>\n". // buat tanggal $tgl = date('d-m-Y."<a href='topik. '$user'." <td><b>Posted By</b></td><td><b>Topik</b></td>\n" Bab 4 . // dapatkan jumlah data/baris $hal->get_jml_hal(). break.back()'>Kembali</a>\n").php?proses=hapus' method='post'>\n" . $page = filter_str($_GET['page']). H:i'). username. tgl_post) VALUES ('$forum'. if ($page == '') $page = 0." <tr bgcolor='#d7e7f3'>\n" . $forum). jdl_topik. // tampilan per halaman (konfig.php'>Topik</a>\n". 'id_forum'. Error Handling dan Contoh-contoh Aplikasi 300 . // dapatkan jumlah halaman // cek jumlah data/baris yang dikembalikan if ($jml_data == 0) exit("Tidak ada topik untuk forum ini.Masalah Keamanan.

break. } Bab 4 .<br>\n". echo "<tr>\n" ." <td><input type='submit' value='HAPUS'></td></tr>\n" ."</table>\n" ." <td align='center'><b>Hapus?</b></td>\n" . 'id_forum'. // cek jumlah id jika 0 maka tidak ada item yang dicek if (count($id) == 0) exit("Error: Anda belum memilih item satu pun.php?proses=reply&topik=$id'>Reply</a>\n".php'>Topik</a></p>\n".ForumBareng.back()'>Kembali</a>\n"). $reply = "<a href='reply. Error Handling dan Contoh-contoh Aplikasi 301 .Masalah Keamanan. $judul = $data['jdl_topik'].localhost ." </tr>\n"."<p><a href='index. 'id_topik'). // lakukan looping untuk menambilkan semua entry while ($data = mysql_fetch_array($hasil)) { //buat variabel $id = $data['id_topik']. $checkbox = "<input type='checkbox' name='id[]' value='$id'>\n"." <td>$user</td><td>$judul</td><td>$tgl</td>" . } echo "<tr bgcolor='#d7e7f3' height='15'>\n <td colspan=4></td>" . $hal->set_hal().php?proses=topik&forum=$forum") . $forum."<br>\n" . // untuk memberi nilai Last. <br><br>\n" . // tampilkan pesan berhasil atau tidaknya data dihapus if (!$hasil) echo "Error: Gagal menghapus topik dengan id: $sampah."</form>\n\n"."<a href='topik." <td><b>Posted On</b></td><td><b>Reply</b></td>\n" . // lakukan looping untuk menghapus setiap data foreach ($id as $sampah) { // gunakan query DELETE untuk menghapus $hasil = mysql_query("DELETE FROM tb_topik WHERE id_topik='$sampah'").<br>\n". else echo "Topik dengan id: $sampah berhasil dihapus. $tgl = $data['tgl_post']. $record = $hal->get_record(). before dan next // tampilkan link nomor halaman echo $hal->show_page("topik.php'>Home</a> &nbsp " . /************/ /************/ case 'hapus': /************/ // ambil data yang di-post (berupa array) $id = $_POST['id']."<a href='javascript: history. // dapatkan jumlah record yang harus ditampilkan // query ulang untuk mengurutkan data $hasil = $hal->query_SQL(3." <td>$reply</td><td align='center'>$checkbox</td>\n</tr>\n". $user = $data['username'].

ForumBareng.14: Daftar topic pada halaman control panel Jika belum ada topik kita bisa membuat topik baru dengan cara mengklik linkTambah Topik. // tutup koneksi ke MySQL ?> </body> </html> Simpan pada direktori forum\admin dengan nama topik. break.php'>Topik</a></p>\n". Untuk itu daftar forum kita peroleh dengan melakukan query SQL berikut $hasil = mysql_query("SELECT * FROM tb_forum"). Output dari file forum. } Bab 4 .Masalah Keamanan. Pada case ini kita mendaftar forum yang ada dan menampilkan berapa banyak topik yang ada pada masing-masing forum.php.14 PENJELASAN SCRIPT Jika kita mengklik link Manaje Topik maka secara otomatis yang kita tuju adalah proses view. Untuk membuat topik tentu kita harus memilih forumnya. while ($data = mysql_fetch_array($hasil)) { $id = $data[0]. Gambar 4.localhost echo "<p><a href='topik.php ditunjukkan oleh gambar 4. Untuk urusan ini blok kode pada case tambah yang dijalankan. Error Handling dan Contoh-contoh Aplikasi 302 . /************/ } // akhir dari switch } // akhir dari else mysql_close(). // sama dengan $data['id_forum'] echo "<option value='$id'>$id</option>\n". Kita juga menyediakan link untuk menuju daftar topik disebelah kanan dari nama forum. Coba tambahkan topik baru pada halaman ini dengan cara mengklik link Tambah Topik.

Selanjutnya kita menentukan tabel yang kita gunakan menggunakan metode set_tabel().php anda dapat merubahnya sesuai keinginan. Namun sebulumnya kita perlu mendapatkan berapa jumlah record yang harus ditampilkan. Setelah melakukan query SQL maka kita sudah mendapatkan nilai untuk digunakan menghitung jumlah baris/data yang ada. Setelah jumlah record kita dapatkan kita dapat melakukan query menggunakan metode Bab 4 . Selanjutnya form pada case ini akan diproses oleh oleh case proses_tambah. Jadi kita gunakan metode get_jml_data() untuk mendapatkan jumlah baris/data. Jika $jml_data lebih dari nol maka tampilkan seluruh topik menggunakan looping while.localhost Selanjutnya kita lakukan looping while untuk membuat pilihan menggunakan type input select. Case selanjutnya adalah case topik. Nilai dari jumlah data sudah kita dapatkan maka kita dapat menghitung jumlah halaman menggunakan metode get_jml_hal(). Nilai dari $a_tph ada di konfig. Hal pertama yang kita lakukan adalah membuat objek halaman dalam hal ini adalah $hal. Langkah berikutnya adalah melakukan query SQL untuk mendapatkan nilai yang digunakan untuk menghitung jumlah data dan jumlah halaman. Saya rasa case ini yang paling menarik karena kita menerapkan objek dari class halaman untuk menampilkan link nomor halaman. // lakukan query SQL $jml_data = $hal->get_jml_data().ForumBareng. Sebelum menampilkan hasil kita cek dulu jumlah data yang dikembalikan jika 0 maka tidak ada topik maka keluar dari rutin script. // dapatkan jumlah halaman Untuk dapat menampilkan daftar topik beserta nomor link halaman. Diantaranya siapa yang mem-post topik. Kemudian kita menentukan berapa topik yang harus ditampilkan per halaman menggunakan metode set_pph($a_tph). // data halaman yang dihandel $pph = $hal->set_pph($a_tph). Fungsi dari case ini adalah untuk menampilkan daftar topik.Masalah Keamanan. Blok kode pada proses_tambah menampung data yang dipost oleh form tambah topik untuk dimasukkan ke database.php) $hal->query_SQL(2. Selanjutnya kita memanggil metode set_page() untuk mebentukan variabel halaman yang akan kita handel. Sekedar mengingatkan nilai dari jumlah halaman kita dapat dengan cara Jumlah Halaman = jumlah data/baris : topik per halaman Jika hasilnya koma maka dibulatkan karena kita menggunakan fungsi ceil(). Karena akan menampilkan topik maka tabel yang kita gunakan adalah tb_topik. 'id_forum'. Untuk menampilkan daftar topik kita tidak menggunakan query seeprti biasa tetapi mengunakan metode query yang kita panggil dari class halaman. Metode yang kita gunakan adalah query_SQL(2. // tampilan per halaman (konfig. // buat objek halaman $hal->set_tabel('tb_topik'). // panggil class halaman untuk menampilkan link halaman $hal = new halaman. // dapatkan jumlah data (topik) $hal->get_jml_hal(). // tentukan tabel yang digunakan $hal->set_page($page). kapan di-post juga kita menghapus topik dari halaman ini. Untuk itu kita gunakan metode get_record(). Tipe input ini akan memebrikan tampilan berupa combobox. $forum). $forum) arti dari metode ini sama dengan query berikut SELECT * FROM tb_topik WHERE id_forum='$forum'. 'id_forum'. Lihat kembali kode dari class halaman pada bagian metode query_SQL jika anda lupa. Ini dikarenakan jika kita menggunakan query biasa maka metode-metode lainnya seperti jumlah halaman dan sebagainya tidak mempunyai nilai karena nila idari metode tersebut tergantung dari hasil metode query_SQL(). Error Handling dan Contoh-contoh Aplikasi 303 .

... Ini berguna untuk melakukan penghapusan pada topik tertentu yang dianggap tidak perlu. Maka kita juga memasukkan forum pada URL. Untuk menghapus setiap id topik yang dikirim kita gunakan looping foreach seperti berikut foreach ($id as $sampah) Pada blok kode looping foreach kiat melakukan query DELETE sebagai berikut $hasil = mysql_query("DELETE FROM tb_topik WHERE id_topik='$sampah'"). Error Handling dan Contoh-contoh Aplikasi 304 .php.php')... Isinya adalah id dari topik yang akan kita hapus.: Rio Astamal *** ** Tanggal./inc/header.: Untuk memanaje reply *** ***********************************************************/ // panggil session_start() karena berhubungan dengan session session_start().. next dan last.php')..localhost $hasil = $hal->query_SQL(3.. Pada case ini kiat mengambil data yang berupa array dari form daftar topik.. Langkah yang terakhir adalah menampilkan link nomor halaman dengan memanggil metode show_page("topik.php include('. $pph...... Sebelumnya kita memanggil terlebih dahulu metode set_hal() untuk memberi nilai pada before. 'id_topik').php <?php /********************************************************** ** Nama File. Pada blok kode looping while kita membuat checkbox yang berisi id dari masing-masing topik.. Pada kasus diatas isi dari parameter kita adalah "topik..php Bab 4 . 'id_forum'.php?proses=topik&forum=$forum")./inc/fungsi. Arti dari metode query_SQL() diatas sama dengan query SQL berikut SELECT * FROM tb_topik WHERE id_forum='$forum' ORDER BY id_topik DESC LIMIT $record.: 12-10-2005 *** ** Penjelasan. Contoh hasil setelah halaman dijalankan adalah <a href='topik.php include('.php. File ini berfungsi untuk menampilkan daftar reply dan menghapusnya..php *** ** Penulis.. Ini karena halaman yang ingin kita tampilkan daftar topik maka isinya adalah topik. Untuk membuat file ini pada PHP DESIGNER 2005 klik menu File > New > PHP lalu ketik kode berikut Script dari file reply. Metode ini memerulkan satu parameter yaitu halaman yang dibuka dan data-data lainnya jika diperlukan.ForumBareng.php?proses=topik&forum=PHP&page=1'> Case yang terakhir adalah hapus.php?proses=topik&forum=$forum".. Prinsip kerja file ini sama dengan file sebelumnya yaitu topik. File berikutnya yang akan kita buat adalah reply. $forum. Selanjutnya kita menampilkan hasil dengan looping while. // panggil file header.: reply.. Setelah looping kita menutup tabel lalu menampilkan link nomor halaman. // panggil file fungsi.Masalah Keamanan..php?proses=topik dan karena daftar topik yang ingin kita tampilkan pada forum tertentu. // panggil file class_forum.

if ($page == '') $page = 0. // filter isi dari proses $proses = filter_str($proses). Bab 4 . // dapatkan jumlah data (topik) $hal->get_jml_hal().php) $hal->query_SQL(1).php'>Login</a> dulu. // dapatkan jumlah halaman // cek jumlah data/baris yang dikembalikan if ($jml_data == 0) exit("Tidak ada topik.localhost include('." <td><b>Topik</b></td><td><b>ID Forum</b></td>\n" . // tentukan tabel yang digunakan $hal->set_page($page). $record = $hal->get_record()./inc/konfig.ForumBareng. // buat header tabel echo "<h2>Daftar Jumlah reply untuk masing-masing Topik</h2>\n" .php'>Topik</a>"). // lakukan query SQL $jml_data = $hal->get_jml_data()." </tr>\n"./inc/class_forum. // panggil class halaman $hal = new halaman.</p>\n". if ($proses == '') $proses = 'view'. // panggil file konfig. <a href='topik." <tr bgcolor='#d7e7f3'>\n" . $pph"). // koneksikan ke MySQL Server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server. // buat objek halaman $hal->set_tabel('tb_topik'). // topik per halaman (di konfig.. $page = filter_str($page).php')." </td></b><td><b>Jumlah Reply</b></td>\n" . // dapatkan jumlah record yang harus ditampilkan $hasil = $hal->query_SQL("SELECT * FROM tb_topik ORDER BY id_topik DESC LIMIT $record. else { // handel setiap proses dengan switch dan case switch ($proses) { /***********/ case 'view': /***********/ // dapatkan data dari URL $page = $_GET['page'].php include('.php').Masalah Keamanan. // cek isi session admin. <a href='index. Error Handling dan Contoh-contoh Aplikasi 305 . <br> Cek kembali settingan untuk host.. // dapatkan proses dari URL $proses = $_GET['proses']. untuk mengetahui sudah login atau belum if (!cek_session('admin')) echo "<p>Anda belum login. username dan password'). // data halaman yang dihandel $pph = $hal->set_pph($a_tph)."<table border='0' cellpadding='4'>\n" .

// tentukan tael yang digunakan $hal->set_page($page).ForumBareng. // buat form dan header tabel Bab 4 . $hal->set_hal(). // data halaman yang dihandel $pph = $hal->set_pph($a_rph). $page = filter_str($_GET['page']). $topik). } // tutup tabel dan tampilkan link nomor halaman jika ada echo "<tr bgcolor='#d7e7f3' height='15'><td colspan='3'></td></tr>\n" . // buat link reply untuk masing-masing topik $link = "<a href='reply. // dapatkan jumlah data (topik) $hal->get_jml_hal(). if ($page == '') $page = 0. break. <a href='reply. // hitung jumlah reply masing-masing topik.Masalah Keamanan. query dibawah ini $query = mysql_query("SELECT * FROM tb_reply WHERE id_topik='$id'")."<p><a href='index. echo "<tr>\n" . $judul = $data['jdl_topik']. // reply per halaman (di konfig. // buat objek halaman $hal->set_tabel('tb_reply'). // untuk memberi nilai Last. before dan next // tampilkan link halaman echo $hal->show_page('reply. 'id_topik'.php) $hal->query_SQL(2.localhost // tampilkan semua topik dengan looping while ($data = mysql_fetch_array($hasil)) { //buat variabel $id = $data['id_topik'].php?proses=reply&topik=$id'>Lihat</a>". // dapatkan jumlah halaman // cek jumlah data/baris yang dikembalikan if ($jml_data == 0) exit("Tidak ada reply untuk topik ini. $forum = $data['id_forum']. // hitung jumlah baris query diatas $jml_reply = mysql_num_rows($query). // panggil class halaman untuk menampilkan link halaman $hal = new halaman. /*********/ /************/ case 'reply': /************/ // ambil data dari URL $topik = filter_str($_GET['topik']). Error Handling dan Contoh-contoh Aplikasi 306 . // lakukan query SQL $jml_data = $hal->get_jml_data().php'>Reply</a>").php'>Home</a></p>\n". echo "<h2>Daftar Reply</h2>\n"." <td>$judul</td>\n<td>$forum</td><td>$jml_reply [ $link ] </td>\n".php?proses=view') ."</table>\n\n".

// gunakan htmlspecialchars() agar tag-tag HTML tidak diproses $reply = htmlspecialchars($data['isi_reply'])."<tr><td colspan='2'><input type='checkbox' name='hapus[]' value='$id_rep'>" .php'>Home</a> &nbsp " . <br><br> <a href='javascript: history. /*************/ /*************/ case 'hapus': /*************/ // ambil data yang di-post $hapus = $_POST['hapus'].php?proses=hapus' method='post'>\n" . } echo "<tr bgcolor='#d7e7f3'><td colspan='2' align='right'>\n" . next dan last // tampilkan link nomor halaman echo $hal->show_page("reply.localhost echo "<form action='reply. break. $record = $hal->get_record(). $id_for = $data['id_forum']. $hal->set_hal()."| ID Topik: $id_top | ID Forum: $id_for</td></tr>\n" . // gunakan looping foreach untuk menghapus setiap item // yang dicek foreach ($hapus as $sampah) { // qunakan query DELETE untuk menghapus dari database $hasil = mysql_query("DELETE FROM tb_reply WHERE id_reply='$sampah'").Masalah Keamanan. $tgl = $data['tgl_post']. // lakukan looping untuk menampilkan semua entry while ($data = mysql_fetch_array($hasil)) { // buat variabel $id_rep = $data['id_reply']. $user = $data['username']."</td></tr>\n" ."<input type='submit' value='HAPUS'></td>\n" . $topik.ForumBareng."</table>\n" .back()'>Kembali</a>\n"). $id_top = $data['id_topik']."<tr><td>Email:</td><td>$email</td></tr>\n" . Bab 4 . $email = $data['email'].php'>Reply</a></p>\n". 'id_reply'). // beri nilai pada before."<a href='reply. // bertipe array // cek apakah user telah memilih item if (count($hapus) == 0) exit("Error: Anda belum memilih item. Error Handling dan Contoh-contoh Aplikasi 307 .php?proses=reply&topik=$topik") ."<table border='0' cellpadding='4'>\n"."Hapus</td></tr>\n"."<tr><td>Pengirim:</td><td>$user</td></tr>\n" ."<td><textarea name='reply' cols='70' rows='4'>$reply </textarea>\n" . 'id_topik'."<tr><td>Reply:</td>\n" ."</form>\n\n"."<p><a href='index. // dapatkan jumlah record $hasil = $hal->query_SQL(3. // tampilkan masing-masing reply echo "<tr bgcolor='#d7e7f3'><td colspan='2'><b>$tgl\n" .

Misalnya karakter < diganti dengan &lt.ForumBareng. Agar source ini tidak diproses oleh PHP maka kita menggunakan fungsi tersebut.php'>Reply</a></p>\n".15: Daftar reply saat ditampilkan pada control panel Yang perlu anda ketahui di sini adalah kita menggunakan fungsi baru yaitu htmlspecialchars(). petik " diganti dengan &quot.php. Kita menggunakan fungsi ini karena kita membuat forum tentang web.<br>\n".localhost // cek status if (!$hasil) echo "</p>Error: Gagal menghapus reply dengan id: $sampah\n". break. Error Handling dan Contoh-contoh Aplikasi . } echo "<p><a href='reply. Jadi kemungkinan besar mereka akan mempost source codenya di forum. /***********/ } } // akhir dari switch // akhir dari else mysql_close(). 308 Bab 4 . dan sebagainya. else echo "Reply dengan id: $sampah berhasil dihapus. Output dari file ini ditunjukkan oleh gambar 4.15 Gambar 4. // tutup koneksi ke MySQL ?> </body> </html> Simpan pada direktori forum\admin dengan nama reply.Masalah Keamanan. Fungsi htmlspecialchars() secara otomatis mengubah tag-tag HTML menjadi karakter khusus.

..php include('. Error Handling dan Contoh-contoh Aplikasi 309 . if ($page == '') $page = 0. Langsung saja klik File > New > PHP pada PHP DESIGNER 2005 kemudian ketik kode berikut Script dari file member.php').php *** ** Penulis. // panggil file class_forum.php').... else { // handel setiap proses dengan switch dan case switch ($proses) { /***********/ case 'view': /***********/ // dapatkan data dari URL $page = $_GET['page'].php../inc/fungsi. // panggil file fungsi. if ($proses == '') $proses = 'view'./inc/konfig..ForumBareng.. untuk mengetahui sudah login atau belum if (!cek_session('admin')) echo "<p>Anda belum login.php')....</p>\n"... // cek isi session admin.localhost File terakhir yang akan kita buat pada direkori admin adalah file member. // dapatkan proses dari URL $proses = $_GET['proses']. // filter isi dari proses $proses = filter_str($proses)..php'>Login</a> dulu. // panggil file konfig./inc/header. <a href='index.. // koneksikan ke MySQL Server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server./inc/class_forum. // panggil file header..php include('.Masalah Keamanan..php'). <br> Cek kembali settingan untuk host.php <?php /********************************************************** ** Nama File.php include('.: 12-10-2005 *** ** Penjelasan.php include('. Bab 4 ... username dan password').: index.: Rio Astamal *** ** Tanggal....: Untuk memanaje member *** ***********************************************************/ // panggil session_start() karena berhubungan dengan session session_start(). Tugas file ini adalah untuk menampilkan daftar member dan menghapus member..

"</tr>\n</table>\n</form>\n\n". // dapatkan jumlah record yang harus ditampilkan // lakukan query ulang $hasil = $hal->query_SQL("SELECT * FROM member LIMIT $record."'>\n".$data[0]. // pilih tabel member $hal->set_page($page)."<td>". // untuk memberi nilai Last." <td><b>Login Terakhir</b></td><td><b>Hapus?</b></td>\n" .$data[0]." <td><b>Username</b></td><td><b>Nama</b></td>\n" .php'>Home</a> &nbsp " ."<p><b>Jumlah Member: </b>$jml_member</p>\n"."<table border='0' cellpadding='4'>\n" . $pph"). // data halaman yang dihandel $pph = $hal->set_pph($a_mph). // cek jumlah baris if ($jml_member == 0) exit("<p>Masih belum ada member yang mendaftar. Error Handling dan Contoh-contoh Aplikasi 310 ."<p><a href='index. break. /**********/ /************/ case 'hapus': /************/ // ambil data yang di-post Bab 4 . before dan next // tampilkan nomor link halaman echo $hal->show_page('member. $record = $hal->get_record().$data[4]. // filter isi dari $page // panggil class halaman $hal = new halaman. // dapatkan jumlah halaman echo "<h2>Daftar Member untuk ForumBARENG</h2>\n" ."</td>\n<td>"." kali</td>\n" . // member per halaman (di konfig." </tr>\n". $hal->set_hal().php?proses=mail_member'>Email Semua Member</a> </p>\n".php) $hal->query_SQL(1).ForumBareng. // lakukan query SQL $jml_member = $hal->get_jml_data(). $tabel = $hal->set_tabel('member')."</td>\n<td>"."</td><td align='center'>$checkbox</td>\n</tr>\n". // buat header tabel dan form echo "<form action='member."<td>". // dapatkan jumlah member $hal->get_jml_hal().$data[5]." <tr bgcolor='#d7e7f3'>\n" . } // tutup tabel echo "<tr bgcolor='#d7e7f3' height='20'>\n" ."<a href='member. // $data[0] = $data['username'] echo "<tr>\n<td>"." <td><b>Email</b></td><td><b>Posting</b></td>\n" .php?proses=view') . // tampilkan hasil dengan looping while while ($data = mysql_fetch_array($hasil)) { //buat checkbox untuk setiap member $checkbox = "<input type='checkbox' name='hapus[]' value='".php?proses=hapus' method='post'>\n" ."</td>\n" .localhost $page = filter_str($page).Masalah Keamanan.</p>\n").$data[3]."<td colspan='6' align='right'><input type='submit' value='HAPUS'></td>\n" .$data[2].

"Isi Email: <br>\n" .php'>Home</a> &nbsp " ."Subject: <br>\n<input type='text' name='subject' size='50'> <br><br>\n" . else echo "Username: $sampah berhasil dihapus dari database."<form action='member.back()'>Kembali</a>\n"). <br><br>\n <a href='javascript: history.localhost $hapus = $_POST['hapus']. /************/ /******************/ case 'kirim_email': /******************/ // ambil data yang di-post $subject = $_POST['subject']. // lakukan query untuk mendapatkan semua email $hasil = mysql_query("SELECT email FROM member")."<input type='submit' value='KIRIM'>\n" . Error Handling dan Contoh-contoh Aplikasi 311 ."<a href='member.php?proses=kirim_email' method='post'>\n" . // data ini bertipe array // cek jumlah item yang dicek if (count($hapus) == 0) exit("<p>Error: Tidak ada member yang dipilih.php'>Member</a></p>\n".back()'>Kembali</a></p>\n"). // coba ganti dengan alamat email anda // cek apakah masih ada field yang kosong if (!cek_field($_POST)) exit("Error: Masih ada field yang kosong.Masalah Keamanan. break."</form>\n\n" ."<p><a href='index. $body = $_POST['body']. break.ForumBareng. // cek status if (!$hasil) echo "Error: Gagal menghapus $sampah data dari database.<br>\n". // lakukan looping untuk mengirim ke semua alamat email while ($data = mysql_fetch_array($hasil)) Bab 4 . } echo "<br><a href='member. // buat header email $from = 'From: root@localhost'."<textarea name='body' cols='75' rows='10'></textarea><br><br>\n" .php'>Member</a>\n". /************/ /******************/ case 'mail_member': /******************/ // buat form untuk mengirim email echo "<h2>Kirim Email ke Semua Member</h2>\n" .<br>\n". // gunakan foreach untuk menghapus setiap item yang dicek foreach ($hapus as $sampah) { // lakukan query DELETE untuk menghapus data dari database $hasil = mysql_query("DELETE FROM member WHERE username='$sampah'"). <br><br>\n <a href='javascript: history.

$subject.Masalah Keamanan. // alamt email masing-masing member // gunakan fungsi mail untuk mengirim email // hilangkan tanda komentar jika sudah terhubung ke internet // mail($to. $from). Output dari file member. } echo "<p>Email berhasil dikirim. $from).ForumBareng. } Bab 4 . Sedangkan case kirim_email bertugas memproses form dan mengirimnya ke semua alamat email member. } // akhir dari switch } // akhir dari else mysql_close(). $subject. Jadi array 0 merupakan field email bukan username. // tutup koneksi ke MySQL ?> </body> </html> Simpan pada direktori forum\admin dengan nama member. <a href='member. Error Handling dan Contoh-contoh Aplikasi 312 . Untuk mengirim ke semua alamat kita gunakan looping while seperti berikut while ($data = mysql_fetch_array($hasil)) { // buat variabel $to = $data[0].php ditunjukkan oleh gambar 4. Yaitu case mail_member dan case kirim_email.php. $body. Untuk mendapatkan semua alamat email member kita menggunakan query SQL seperti berikut $hasil = mysql_query("SELECT email FROM member").16 PENJELASAN SCRIPT Sebagian isi dari script ini juga sama dengan sebelumnya hanya saja ada beberapa case yang baru. Case mail_member hanya bertugas menyediakan form untuk subject dan isi. $body.php'>Member</a></p>\n". // alamt email masing-masing member // gunakan fungsi mail untuk mengirim email mail($to. Query diatas hanya mengembalikan satu field/kolom saja yaitu field email.localhost { // buat variabel $to = $data[0].

File-file pada direkori ini merupakan halaman-halaman yang dapat diakses oleh pengunjung forum bareng baik yang belum menjadi member (guest) atau yang sudah menjadi member.17 menunjukkan email yang diterima oleh salah satu member. Anda dapat menggantinya dengan alamat email anda.ForumBareng.17: Email pemberitahuan yang diterima member dari administrator Akhir dari file-file yang berada pada direktori admin.Masalah Keamanan. Error Handling dan Contoh-contoh Aplikasi 313 .localhost Gambar 4.16: Halaman daftar member pada control panel Untuk $from disini saya isikan dengan root@localhost. Gambar 4. Gambar 4. Bab 4 . File-file berikutnya yang akan kita buat adalah file yang berada pada direktori forum.

.."milik kita bersama.: 12-10-2005 *** ** Penjelasan."<p><b>ForumBARENG</b> tempat dimana pengetahuan adalah " . include('inc/class_forum. // user telah login // jika ID-nya guest tampilkan link untuk mendaftar if ($user_id == 'guest') { echo "<p>User ID anda: $user_id. username dan password'). Mari Berbagi dengan yang lain!!!. Untuk file yang pertama yang kita buat adalah file untuk halaman utama dari forumBARENG. Setelah user melakukan login maka user ID-nya kita set menjadi username dari user itu sendiri. // keterangan singkat tentang forumBARENG echo "<center><h2>Selamat Datang di ForumBARENG. Script dari file index."menjadi member kami.: Rio Astamal *** ** Tanggal... // user tersebut belum login atau bukan member else $user_id = $_SESSION['member'].php'>Daftar</a></p>\n".php').localhsot maka kita anggap user ID-nya adalah guest.: Untuk menampilkan halaman utama *** ***********************************************************/ // panggil fungsi session_start() karena berhubungan dengan session session_start().localhost</h2>\n" . mengirim email pemberitahuan dan sebagainya."keuntungan diantaranya informasi terbaru seputar ForumBareng" .localhost Tujuan kita membuat sistem memership adalah agar kita dapat mengidentifikasi siapa-siapa yang sering posting. Jika user belum login atau ia belum mendaftar menjadi member dari forumBARENG." dan berbagai newsletter bermanfaat.. kemudian ketik kode berikut... Pada halaman ini terdapat daftar forum yang ada serta jumlah topik dan reply pada masing-masing forum.. } else Bab 4 . Error Handling dan Contoh-contoh Aplikasi 314 . " . include('inc/fungsi.php').."</center>\n" .."Klik link <a href='daftar..localhsot.php'>Daftar</a> untuk mendaftar " .."kami.. <a href='daftar. Jalankan PHP DESIGNER 2005 klik menu File > New > PHP untuk membuat file PHP baru. include('inc/konfig. // koneksikan ke MySQL Server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server. <br>\nMohon daftar menjadi member " . Dengan menjadi member anda akan mendapat banyak " .Masalah Keamanan."atau keinginan anda. // gunakan fungsi cek_session() untuk mengecek id user if (!cek_session('member')) $user_id = 'guest'...ForumBareng.php').php <?php /********************************************************** ** Nama File. // panggil file-file yang diperlukan include('inc/header.php'). Kami juga mengharap anda mau menjadi " .: index. "..php *** ** Penulis..."member kami. <br> Cek kembali settingan untuk host.."Pada ForumBareng anda dapat memilih forum yang sesuai dengan " .</p>" .

php." <td><b>Forum</b></td>\n" . echo "<tr>\n <td>$link</td>\n" . $jml_forum = mysql_num_rows($hasil).localhost</p>". Jalankan pada browser anda.php'>Home</a> &nbsp &nbsp \n" . $jdl_forum = $data[1]." <td><b><a href='index.ForumBareng."<tr bgcolor='#d7e7f3'>\n" .php?proses=view&forum=$id_forum'>$jdl_forum </a>"."<table border='0' cellpadding='4' cellspacing='2' width='100%'> \n" . // dapatkan jumlah topik untuk forum ini $query = mysql_query("SELECT * FROM tb_topik WHERE id_forum='$id_forum'")."<td align='center'>$jml_topik</td>\n" ."<tr bgcolor='#d7e7f3' height='25'>\n" ."<br>Total terdapat $jml_forum forum.18 PENJELASAN SCRIPT Bab 4 . output dari file ini ditunjukkan oleh gambar 4. mysql_close(). // lakukan looping untuk menampilkan semua forum while ($data = mysql_fetch_array($hasil)) { // buat variabel $id_forum = $data[0]." <td align='center'><b>Jumlah Topik</b></td>\n" ." <a href='member. // buat tabel untuk daftar forum echo "<h2>Daftar Forum</h2>\n" ." . $jml_reply = mysql_num_rows($query).localhost echo "<p>User ID anda: $user_id</p>\n". // buat tabel untuk menu echo "<table border='0' cellspacing='0' width='100%'>\n" . // buat link untuk menuju topik dari forum yang diklik $link = "<a href='topik. } // tutup tabel echo "<tr bgcolor='#d7e7f3' height='25'><td colspan='3'></td></tr>\n" ."</tr>\n</table>\n"." <td align='center'>$jml_reply</td>\n</tr>\n". $jml_topik = mysql_num_rows($query).php'>Member Login</a> &nbsp &nbsp \n" . // dapatkan jumlah reply untuk forum ini $query = mysql_query("SELECT * FROM tb_reply WHERE id_forum='$id_forum'")."<p align='center'>&#169 2005 ForumBARENG. // tampilkan semua forum $hasil = mysql_query("SELECT * FROM tb_forum")." <td align='center'><b>Jumlah Reply</b></td>\n</td>\n</tr>\n"."</table>\n\n" . // tutup koneksi ke MySQL server ?> </body> </html> Simpan pada direkori forum dengan nama index.Masalah Keamanan. Error Handling dan Contoh-contoh Aplikasi 315 .

Untuk itu kita tampilkan link daftar agar guest menjadi member forumBARENG. Pada bagian daftar topik kita juga menampilkan siapa yang mem-post topik tersebut..localhost Untuk mengecek user tersebut member atau tidak kita menggunakan fungsi cek_session('member'). Buat file PHP baru pada PHP DESIGNER 2005 lalu ketik kode berikut.php <?php /********************************************************** ** Nama File.. Script dari topik. Untuk menampilkan seluruh forum kita gunakan looping while. Maka kita tidak perlu melakukan handel pada proses dengan switch dan case.. // dapatkan jumlah topik untuk forum ini $query = mysql_query("SELECT * FROM tb_topik WHERE id_forum='$id_forum'").. // dapatkan jumlah reply untuk forum ini $query = mysql_query("SELECT * FROM tb_reply WHERE id_forum='$id_forum'")...: topik.localhost File berikutnya adalah file yang menampilkan daftar topik dan menyediakan form untuk membuat topik baru.ForumBareng.. Dimana jika member sudah login maka user ID-nya adalah username membeer itu sendiri. Error Handling dan Contoh-contoh Aplikasi 316 . Karena tugas dari file ini hanya satu yaitu menampilkan daftar forum.. kapan di-post.18: Halaman utama website forumBARENG.php *** ** Penulis. dan berapa reply dari topik tersebut.Masalah Keamanan. Gambar 4. Kita Mendapatkan daftar forum dengan melakukan qeury SQL seperti berikut $hasil = mysql_query("SELECT * FROM tb_forum").: Rio Astamal *** Bab 4 . Namun jika belum login maka user ID-nya adalah guest. Untuk mendapatkan jumlah topik dan reply pada masing-masing forum kita melakukan query berikut...

ForumBareng.localhost

** Tanggal.......: 12-10-2005 *** ** Penjelasan....: Untuk menampilkan daftar topik dan *** ** memproses topik *** ***********************************************************/ session_start(); // panggil file-file yang diperlukan include('inc/header.php'); include('inc/fungsi.php'); include('inc/class_forum.php'); include('inc/konfig.php'); // koneksikan ke MySQL Server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server. <br> Cek kembali settingan untuk host, username dan password'); // dapatkan data dari URL $proses = $_GET['proses']; if ($proses == '') $proses = 'view'; // cegah XSS $proses = filter_str($proses); // gunakan fungsi cek_session() untuk mengecek id user if (!cek_session('member')) $user_id = 'guest'; // user tersebut belum login atau bukan member else $user_id = $_SESSION['member']; // handel setiap proses dengan switch dan case switch ($proses) { /***********/ case 'view': /***********/ // dapatkan id forum yang akan kita tampilkan $forum = $_GET['forum']; // dapatkan nomor halaman $page = $_GET['page']; if ($page == '') $page = 0; // cegah XSS $forum = filter_str($forum); $page = filter_str($page); // lakukan query untuk mendapatkan keterangan forum $hasil = mysql_query("SELECT * FROM tb_forum WHERE id_forum='$forum'"); // pecah menjadi array $data = mysql_fetch_array($hasil); // tampilkan keterangan forum echo "<h2>Daftar Topik untuk forum ".$data[1]."</h2>\n" ."<p>".$data[2]."</p>\n"; echo "<p>User ID anda: $user_id</p>"; // panggil class halaman
Bab 4 - Masalah Keamanan, Error Handling dan Contoh-contoh Aplikasi

317

ForumBareng.localhost

$hal = new halaman; // buat objek halaman $hal->set_tabel('tb_topik'); // tentukan tabel yang digunakan $hal->set_page($page); // data halaman yang di handel $pph = $hal->set_pph($u_tph); // $u_tph ada di konfig.php $hal->query_SQL(2, 'id_forum', $forum); // query SQL // sama dengan SELECT * FROM tb_topik WHERE id_forum='$forum' $jml_topik = $hal->get_jml_data(); // hitung jumlah data/baris $hal->get_jml_hal(); // hitung jumlah halaman // cek jumlah topik if ($jml_topik == 0) { echo "<font color='red'><p>Tidak ada topik pada forum ini.</font>\n" ."<br><br><a href='index.php'>Home</a> &nbsp " ."<a href='topik.php?proses=tambah&forum=$forum'>Buat Topik Baru</a></p>\n"; } else { // buat header tabel echo "<table border='0' cellpadding='4' width='100%'>\n" ." <tr bgcolor='#d7e7f3'>\n" ." <td><b>Posted By</b></td>\n" ." <td><b>Topik</b></td>\n" ." <td align='center'><b>Jumlah Reply</b></td>\n" ." <tr>\n"; $record = $hal->get_record(); // dapatkan jumlah record yang harus ditampilkan $hasil = $hal->query_SQL(3, 'id_forum', $forum, 'id_topik'); // query untuk mengurutkan data dan jumlah recod yang ditampilkan // buat variabel warna $color = '#ffe5c3'; // tampilkan seluruh dengan looping while ($data = mysql_fetch_array($hasil)) { // buat variabel // kita gunakan stripslashes() karena waktu memasukkan pada database // kita menggunakan addslashes() $user = $data['username']; $topik = stripslashes($data['jdl_topik']); $tgl = $data['tgl_post']; $id = $data['id_topik']; // buat link topik $link = "<b><a href='reply.php?proses=view&forum=$forum&topik=$id'>" ."$topik</a></b>"; $reply = "<a href='reply.php?proses=reply&forum=$forum&topik=$id'>" ."Reply Topik Ini</a>"; // hitung jumlah reply $query = mysql_query("SELECT * FROM tb_reply WHERE id_topik='$id'"); $jml_reply = mysql_num_rows($query); // jika warna <tr> sekarang '#ffe5cb' ganti dengan '#ededed' // selain itu ganti warnanya dengan '#ffe5c3' if ($color == '#ffe5c3') $color = '#ededed'; else $color = '#ffe5c3';

Bab 4 - Masalah Keamanan, Error Handling dan Contoh-contoh Aplikasi

318

ForumBareng.localhost

// tampilkan hasil echo "<tr bgcolor='$color'>\n" ." <td width='20%'>$user<br>[ $tgl ]</td>\n" ." <td width='65%'>$link</td>\n" ." <td width='15%' align='center'>$jml_reply<br>$reply</td>\n </tr>\n"; } // tutup tabel echo "</table>\n\n"; $hal->set_hal(); // berikan nilai untuk First, Before, Next dan Last // tampilkan link nomor halaman echo $hal->show_page("topik.php?proses=view&forum=$forum") ."<p><a href='index.php'>Home</a> &nbsp " ."<a href='topik.php?proses=tambah&forum=$forum'>" ."Buat Topik Baru</a></p>\n" ."Total terdapat $jml_topik topik pada forum ini.\n" ."<p align='center'>&#169 2005 ForumBARENG.localhost</p>\n"; } // akkhir dari else

break; /*********/ /*************/ case 'tambah': /*************/ // ambil data dari URL $forum = $_GET['forum']; // cegah XSS $forum = filter_str($forum); // lakukan quer untuk mendapatkan judul forum $hasil = mysql_query("SELECT * FROM tb_forum WHERE id_forum='$forum'"); // pecah menjadi array $data = mysql_fetch_array($hasil); // buat form echo "<h2>Topik Baru untuk forum ".$data[1]."</h2>\n" ."<form action='topik.php?proses=proses_tambah' method='post'>\n" ."Topik/Permasalahan: max. 100 karakter<br>\n" ."<input type='text' name='topik' size='80' maxlength='100'> <br><br>\n" ."<input type='hidden' name='forum' value='$forum'>\n" ."<input type='submit' value='K I R I M'>\n" ."</form>\n\n" ."<p><a href='index.php'>Home</a> &nbsp " ."<a href='topik.php?proses=view&forum=$forum'>Topik</a></p>\n"; break; /**********/ /********************/ case 'proses_tambah': /********************/ // ambil data yang di-post // gunakan fungsi addslashes() untuk menghindari eksploitasi $topik = addslashes($_POST['topik']); $forum = $_POST['forum']; // cek field apa masih kosong atau tidak if (empty($topik))
Bab 4 - Masalah Keamanan, Error Handling dan Contoh-contoh Aplikasi

319

ForumBareng.localhost

exit("Error: Anda belum mengisi topik.<br><br>\n <a href='javascript: history.back()'>Kembali</a>\n"); // dapatkan ID user $username = $user_id; // filter kata-kata kotor dari topik // $daftar_kata ada pada file konfig.php $topik = filter_kata($topik, $daftar_kata); // tanggal dan waktu sekarang $tgl = date('d-m-Y, H:i'); // masukkan ke database $hasil = mysql_query("INSERT INTO tb_topik (id_forum, username, jdl_topik, tgl_post) VALUES ('$forum', '$username', '$topik', '$tgl')"); // cek status if (!$hasil) echo "<p>Error: Gagal memasukkan data ke database. <br><br>\n" ."<a href='javascript: history.back()'>Kembali</a></p>\n"; else { echo "<p>Topik berhasil dikirim. <br><br>\n" ."<a href='topik.php?proses=view&forum=$forum'>Lihat</a></p>\n"; // update nilai posting jika yang mem-post bukan guest if ($username != 'guest') mysql_query("UPDATE member SET posting=posting+1 WHERE username='$username'"); } break; /**********/ } mysql_close(); // tutup koneksi ke MySQL server ?> </body> </html> Simpan pada direkori forum dengan nama topik.php. Jalankan pada browser anda, output dari file ini akan terlihat seperti gambar 4.19.

Bab 4 - Masalah Keamanan, Error Handling dan Contoh-contoh Aplikasi

320

ForumBareng.localhost

Gambar 4.19: Tampilan halaman daftar topik untuk user PENJELASAN SCRIPT Pada halaman topik.php ini terdapat beberapa proses atau case. Diantaranya case view menampilkan daftar topik yang ada. Case tambah untuk membuat topik baru. Dan yang terakhir case proses_tambah untuk memproses data yang dipost dari form tambah topik. Pada case view kita menampilkan judul tentang forum yang yang ada menggunakan query berikut $hasil = mysql_query("SELECT * FROM tb_forum WHERE id_forum='$forum'"); Selanjtunya kita pecah menjadi array untuk mendapatkan judul forum dan keterangan forum. Sebelum melakukan query untuk menampilkan daftar forum kita terlebih dulu menegcek jumlah topik yang ada menggunakan metode get_jml_data(). Nilai dari metode ini tergantung dari nilai metode query_SQL() sebelumnya yaitu seperti berikut $hal->query_SQL(2, 'id_forum', $forum); // query SQL Jika nilai $jml_topik sama dengan nol keluar dari script dan tampilkan pesan bahwa belum ada topik. Kita dapat menginstruksikan user untuk membuat topik baru. Jika tidak sama dengan nol maka tampilkan daftar topik. Untuk menampilkan topik kita menghilangkan tanda backslash menggunakan stripslashes(). Ini kita lakukan karena nanti pada saat memasukkan topik ke database kita menggunakan addslashes(). Agar tampilan daftar topik tidak monoton alias membosankan. Maka warnanya kita buat berbeda. Untuk itu kita gunakan statamen if untuk menguji kondisi. if ($color == '#ffe5c3') $color = '#ededed'; else $color = '#ffe5c3';
Bab 4 - Masalah Keamanan, Error Handling dan Contoh-contoh Aplikasi

321

ForumBareng.localhost

Variabel $color kita beri nilai sebelum looping while yaitu #ffe5c3. Karena pada blok looping maka isi dari $color akan berubah antara #ffe5c3 dan #ededed pada setiap eksekusi. Jadi jika warna sebelumnya #ffe5c3 maka ganti warnanya dengan #ededed begitu juga sebaliknya. Tidak ada yang istimewa pada case tambah. Fungsi case ini hanya meyediakan form topik baru untuk user. Agar topik yang kita masukkan pada database sesuai dengan forum yang diinginkan maka kita dapatkan forum dari URL. Dan pada saat mengirim data kita memasukkan id forum ini pada input dengan type hidden. Case yang terakhir yaitu case proses_tambah. Pada case ini kita memasukkan topik dengan menggunakan fungsi addslashes(). Sehingga jika user mengetikkan karakter " atau ' akan diubah menjadi \" dan \'. Itulah kenapa pada saat menampilkan topik kita menggunakan fungsi stripslashes(). File berikutnya adalah file yang berfungsi untuk menampilkan daftar reply dari user. Prinsip kerja file ini sama dengan topik.php. Pada setiap reply kita menampilkan siapa yang mengirim reply tersebut, alamat email dari pengirim dan kapan dikirim. Pada PHP DESIGNER 2005 klik menu File > New > PHP lalu ketik kode berikut Script dari file reply.php <?php /********************************************************** ** Nama File.....: reply.php *** ** Penulis.......: Rio Astamal *** ** Tanggal.......: 12-10-2005 *** ** Penjelasan....: Untuk menampilkan daftar reply dan *** ** memproses reply *** ***********************************************************/ session_start(); // panggil file-file yang diperlukan include('inc/header.php'); include('inc/fungsi.php'); include('inc/class_forum.php'); include('inc/konfig.php'); // koneksikan ke MySQL Server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server. <br> Cek kembali settingan untuk host, username dan password'); // dapatkan data dari URL $proses = $_GET['proses']; if ($proses == '') $proses = 'view'; $forum = $_GET['forum']; // cegah XSS $proses = filter_str($proses); $forum = filter_str($forum); // gunakan fungsi cek_session() untuk mengecek id user if (!cek_session('member')) $user_id = 'guest'; // user tersebut belum login atau bukan member else $user_id = $_SESSION['member'];

Bab 4 - Masalah Keamanan, Error Handling dan Contoh-contoh Aplikasi

322

ForumBareng.localhost

// handel setiap proses dengan switch dan case switch ($proses) { /***********/ case 'view': /***********/ // ambil data dari URL $topik = $_GET['topik']; if ($topik == '') exit("Mohon pilih topik. <a href='topik.php?proses=view&forum=PHP'> Topik</a>\n"); $page = $_GET['page']; if ($page == '') $page = 0; // cegah XSS $topik = filter_str($topik); $page = filter_str($page); // lakukan query untuk mendapatkan keterangan topik $query_topik = mysql_query("SELECT * FROM tb_topik WHERE id_topik='$topik'"); // pecah menjadi array $data = mysql_fetch_array($query_topik); echo "<h2>Daftar Reply</h2>\n" ."<p>Berikut ini adalah daftar reply untuk, <br>\n" ."Topik: <font color='#000080'><b><i>".$data['jdl_topik'] ."</b></i></font><br>\n Posted By: ".$data['username']."</p>\n" ."<p>User ID anda: $user_id</p><hr>\n"; // panggil class halaman $hal = new halaman; // buat objek halaman $hal->set_tabel('tb_reply'); // pilih tabel tb_reply $hal->set_page($page); // data halaman yang dihandel $pph = $hal->set_pph($u_rph); // pesan per halaman (di konfig.php) $hal->query_SQL(2, 'id_topik', $topik); // query SQL // sama dengan SELECT * FROM tb_reply WHERE id_topik='$topik' $jml_reply = $hal->get_jml_data(); // dapatkan jumlah reply $hal->get_jml_hal(); // dapatkan jumlah halaman // cek jumlah reply if ($jml_reply == 0) { echo "<p><font color='red'>Belum ada reply untuk topik ini.</font>\n" ."<br><br>\n" ."<a href='reply.php?proses=reply&forum=$forum&topik=$topik'>" ."Reply Topik ini</a> &nbsp <a href='index.php'>Home</a></p>\n"; } else { // buat header tabel dan form echo "<table border='0' cellpadding='4' width='100%'>\n" ."<tr bgcolor='#d7e7f3'>\n" ." <td><b>Posted By</b></td>\n" ." <td><b>Reply</b></td>\n" ." <td><b>Posted On</b></td>\n" ."</tr>\n"; $record = $hal->get_record(); // dapatkan jumlah record yang ditampilkan
Bab 4 - Masalah Keamanan, Error Handling dan Contoh-contoh Aplikasi

323

ForumBareng.localhost

$hasil = $hal->query_SQL("SELECT * FROM tb_reply WHERE id_topik='$topik' LIMIT $record, $pph"); $color = '#ffe5c3'; // tentukan warna // lakukan looping untuk menampilkan semua daftar reply while ($data = mysql_fetch_array($hasil)) { // buat variabel // kita gunakan stripslashes() karena waktu memasukkan pada database // kita menggunakan addslashes() $id = $data['id_reply']; $username = $data['username']; $topik = $data['id_topik']; $email = $data['email']; // gunakan htmlspecialchars() agar tag-tag HTML tidak diproses $isi_rep = htmlspecialchars(stripslashes($data['isi_reply'])); $tgl = "<font size='-3'>".$data['tgl_post']."</font>"; $link = "<p align='right'><b><a href='reply.php?proses=reply&" ."forum=$forum&topik=$topik&id=$id&show=yes'>Reply Topik Ini </a></b></p>\n"; // ganti karakter garis baru \n dengan tag <br> menggunakan // fungsi nl2br() $isi_rep = nl2br($isi_rep); // cek isi $username, jika bukan guest lakukan query if ($username != 'guest') { $query = mysql_query("SELECT * FROM member WHERE username='$username'"); $data2 = mysql_fetch_array($query); $jml_post = $data2['posting']; // dapatkan isi dari posting } else $jml_post = '-'; // ganti warna untuk setiap baris if ($color == '#ffe5c3') $color = '#dcdcdc'; else $color = '#ffe5c3'; // tampilkan hasil echo "<tr bgcolor='$color'>\n" ." <td valign='top'><font size='-3'>$username<br>[$email] <br><br>" ." <i>Total Post: $jml_post</i></font></td>\n" ." <td valign='top'>$isi_rep $link</td>\n" ." <td valign='top'>$tgl</td>\n" ."</tr>\n" ."<tr bgcolor='#d7e7f3' height='15'><td colspan='3'></td></tr>\n"; } // tutup tabel echo "</table>\n\n"; $hal->set_hal(); // set nilai Before, Next dan Last // tampilkan link nomor halaman echo $hal->show_page("reply.php?proses=view&forum=$forum&topik=$topik") ."<p><a href='index.php'>Home</a> &nbsp " ."<a href='topik.php?proses=view&forum=$forum'>Topik</a></p>\n" ."<br>Total terdapat $jml_reply reply pada topik ini. \n" ."<p align='center'>&#169 2005 ForumBARENG.localhost</p>\n";
Bab 4 - Masalah Keamanan, Error Handling dan Contoh-contoh Aplikasi

324

ForumBareng.localhost

} // akhir dari else break; /***********/ /************/ case 'reply': /************/ // ambil data dari URL $id = filter_str($_GET['id']); $topik = filter_str($_GET['topik']); $show = filter_str($_GET['show']); $forum = filter_str($_GET['forum']); // lakukan query untuk mendapatkan keterangan reply $query_reply = mysql_query("SELECT * FROM tb_reply WHERE id_reply='$id'"); // pecah menjadi array $data1 = mysql_fetch_array($query_reply); // gunakan fungsi stripslashes() dan nl2br() pada isi reply // htmlspecialchars() agar tag HTML tidak diproses $isi_rep = htmlspecialchars(stripslashes($data1['isi_reply'])); $isi_rep = nl2br($isi_rep); // lakukan query untuk mendapatkan keterangan topik $query_topik = mysql_query("SELECT * FROM tb_topik WHERE id_topik='$topik'"); // pecah menjadi array $data2 = mysql_fetch_array($query_topik); if ($show == 'yes') { $asal = "<p><table border='0' cellpadding='4' width='80%'>\n" ." <tr bgcolor='#ffe5c3'>\n <td><font size='-3'>$isi_rep </font>" ." </td>\n</tr>\n" ."</table></p>.<hr>\n"; } else $asal = ''; // buat form dan tabel echo "<h2>Reply Topik</h2>\n" ."<p>Topik: <font color='#000080'><b>".$data2['jdl_topik']."</font></b>\n" ."<br>Posted By: ".$data2['username']."</p>\n" ."<p>User ID anda: $user_id</p><hr>\n" .$asal ."<h2>Isi Reply anda dibawah ini</h2>\n" ."<form action='reply.php?proses=proses_reply' method='post'>\n" ."<table border='0' cellpadding='4' bgcolor='#d7e7f3'>\n" ." <tr>\n" ." <td>Email: </td>\n" ." <td><input type='text' name='email'></td>\n</tr>\n" ." <tr>\n" ." <td>Reply: </td>\n" ." <td><textarea name='reply' cols='75' rows='10'></textarea>" ." </td>\n</tr>\n" ." <tr>\n" ." <td></td><td><input type='submit' value='R E P L Y'></td> </tr>\n" ."</table>\n" ."<input type='hidden' name='forum' value='$forum'>\n" ."<input type='hidden' name='topik' value='$topik'>\n" ."</form>\n"
Bab 4 - Masalah Keamanan, Error Handling dan Contoh-contoh Aplikasi

325

ForumBareng.localhost

."<p><a href='index.php'>Home</a> &nbsp " ."<a href='reply.php?proses=view&forum=$forum&topik=$topik'>" ."Back To Reply</a></p>"; break; /***********/ /*******************/ case 'proses_reply': /*******************/ // ambil data yang di-post $email = $_POST['email']; $topik = $_POST['topik']; $forum = $_POST['forum']; // gunakan fungsi addslashes() untuk memberi tanda \ didepan petik // untuk mencegah SQL INJECTION $reply = addslashes($_POST['reply']); // filter kata-kata kotor // $daftar_kata ada pada konfig.php $reply = filter_kata($reply, $daftar_kata); // cek apakah semua field sudah terisi if (!cek_field($_POST)) exit("Error: Masih ada field yang kosong. <br><br>\n <a href='javascript: history.back()'>Kembali</a>\n"); // cek kevalidan email if (!cek_email($email)) exit("Error: Email anda tidak valid. <br><br>\n <a href='javascript: history.back()'>Kembali</a>\n"); // buat tanggal sekarang $tgl = date('d-m-Y, H:i'); // format DD-MM-YYYY, HH:MM // tentukan user yang dimasukkan $username = $user_id; // jika belum login maka guest // jika tidak ada kesalahan masukkan ke database $hasil = mysql_query("INSERT INTO tb_reply (id_topik, id_forum, username, email, isi_reply, tgl_post) VALUES ('$topik', '$forum', '$username', '$email', '$reply', '$tgl')"); // cek status if (!$hasil) echo "Error: Gagal memasukkan data ke database. <br><br>\n" ."<a href='javascript: history.back()'>Kembali</a>\n"; else { echo "Reply berhasil dipost. <br><br>\n" ."<a href='reply.php?proses=view&forum=$forum&topik=$topik'>Lihat </a>\n"; // update nilai posting jika user bukan guest if ($username != 'guest') mysql_query("UPDATE member SET posting=posting+1 WHERE username='$username'"); } break; /************/ } // akhir dari switch
326

Bab 4 - Masalah Keamanan, Error Handling dan Contoh-contoh Aplikasi

ForumBareng.localhost

mysql_close(); // tutup koneksi ke MySQL server ?> </body> </html> Simpan pada direktori forum dengan nama reply.php. Coba jalankan pada browser anda, output dari file tersebut ditunjukkan oleh gambar 4.20 PENJELASAN SCRIPT Saya rasa case yang perlu kita perhatikan adalah pada case reply. Pada case ini kita mengambil seluruh variabel data dari URL yaitu forum, topik dan show. Untuk show kita perloleh jika user mengklik link Reply Komenter Ini. $show berguna untuk menguji kondisi apakah komentar yang ingin kita reply ditampilkan atau tidak. Nilai dari show yang dikirim dari case view adalah yes. Secara otomatis jika kita mempost reply dari halaman reply bukan dari halaman topik maka komentar dari user yang anda pilih akan ditampilkan pada form reply topik. Komentar kita tampilkan menggunakan variabel $isi_rep sebagai berikut $isi_rep = stripslashes(nl2br($data1['isi_reply'])); fungsi n2br() merupakan fungsi built-in PHP untuk mengubah karakter garis baru \n menjadi tag XHTML <br />. Pada form ini kita memberitahu user, kalau user dapat menggunakan tag HTML. Namun terbatas pada tag <b>, <i>, dan <u> saja. Case yang terakhir yaitu proses_reply berguna memproses data yang dikirim dari form topik baru. Khusus untuk $_POST['reply'] yang isinya adalah reply dari user. Kita gunakan fungsi addslashes() untuk menghindari SQL Injection.

Gambar 4.20: Tampilan halaman daftar reply

Bab 4 - Masalah Keamanan, Error Handling dan Contoh-contoh Aplikasi

327

.Masalah Keamanan.php. // dapatkan data dari URL $proses = $_GET['proses'].. // filter isi dari proses $proses = filter_str($proses). include('inc/konfig... Untuk urusan ini kita hanya menggunakan satu file saja.php')... $reply = strip_tags($reply. $daftar_kata).. // panggil file-file yang diperlukan include('inc/header. if ($proses == '') $proses = 'login'. <br> Cek kembali settingan untuk host. include('inc/class_forum.. // koneksikan ke MySQL Server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server. Jika user bukan guest berarti ia member forumBARENG jadi update nilai dari posting user tersebut dengan cara menambah satu. Jika tidak ada maka masukkan reply ke database. include('inc/fungsi.: Untuk memproses login dan update *** ** profil member *** ***********************************************************/ session_start()... $daftar_kata merupakan file yang menyimpan daftar kata-kata kotor.: 12-10-2005 *** ** Penjelasan.. fungsi filter_kata() merupakan fungsi buatan kita sendiri yang sudah pernah kita bahas pada file fungsi. Kemudian kita mengecek setiap filed apakah masih ada yang salah.: member.. Parameter kedua pada fungsi diatas adalah tag-tag yang diperbolehkan.. Setelah kita memfilter tag HTML selanjtunya kiat akan memfilter kata-kata kotor yang mungkin ditulis user.. $reply = filter_kata($reply.. username dan password')..php <?php /********************************************************** ** Nama File. Error Handling dan Contoh-contoh Aplikasi 328 .php..php').ForumBareng..php *** ** Penulis. Selain ketiga tag tersebut maka akan dihilangkan oleh fungsi strip_tags(). Mengingat sebenarnya fungsinya hanya untuk menset user ID dari member tersebut dan mengupdate profil.: Rio Astamal *** ** Tanggal.. '<b><i><u>').php'). // handel setiap proses dengan case dan switch switch ($proses) { Bab 4 . <i> dan <u> jadi isi dari $reply kita filter kembali menggunakan strip_tags(). Selanjtunya kita akan membuat file untuk login member. Untuk membuatnya klik menu File > New > PHP pada PHP DESIGNER 2005 lalu ketik kode berikutnya Script dari file member.localhost Seperti yang sudah dijelaskan sebelumnya kalau tag-tag yang diperbolehkan digunakan pada reply hanya tag <b>.php'). Isi dari variabel ini kita tentukan pada file konfig.

"<a href='index."<table border='0' cellpadding='4'>\n" ."<p><a href='member. $password = filter_str($_POST['password'])."<p align='center'>&#169 2005 ForumBARENG. // pecah data menjadi array $nama = $data['nama'].php'>Daftar</a>\n" . } break."<form action='member." <tr>\n <td>Username: </td>\n" .</p>\n" .php'>Halaman Utama</a></p>\n" ."Sekarang juga."<p><b>$nama</b> Selamat Datang di Member Area</p>\n" ."<p><a href='index. $last = $data['last_login']."<p>Untuk masuk member area isikan username dan password anda</p>\n" . echo "<p>Belum menjadi member? <a href='daftar.localhost</p>\n"."<p>Login Terakhir: $last. Bab 4 .ForumBareng.localhost MEMBER AREA</h1>\n" .php?proses=logout'>Logout</a></p>\n" .localhost /************/ case 'login': /************/ // gunakan fungsi cek session untuk mengecek apakah user sudah // login atau belum if (!cek_session('member')) { echo "<h1>ForumBARENG. $data = mysql_fetch_array($hasil)."<p><a href='member.php?proses=update'>Update Profil</a></p>\n" ."<p align='center'>&#169 2005 ForumBARENG.php?proses=proses_login' method='post'>\n" .localhost Login</h1>\n" . // lakukan query untuk mendapatkan beberapa informasi $hasil = mysql_query("SELECT * FROM member WHERE username='$user_id'")."<p>Lupa password? Klik <a href='lupa_pass." <tr>\n <td>Password: </td>\n" .</p>\n" ." <tr>\n <td></td>\n<td><input type='submit' value='LOGIN'> </td>\n</tr>\n" ."</table>\n</form>\n". // jika user sudah login tampilkan berikut echo "<h1>ForumBARENG.php'>Home</a>\n" .localhost</p>\n"."<tr bgcolor='#d7e7f3' height='20'><td colspan='2'></td></tr>\n" .php'>disini</a> <br><br>\n" . } else { $user_id = $_SESSION['member']. Error Handling dan Contoh-contoh Aplikasi 329 . /***********/ /*******************/ case 'proses_login': /*******************/ // ambil data sekaligus filter $username = filter_str($_POST['username'])." <tr bgcolor='#d7e7f3' height='20'>\n" . // enkripsi password $password = balik_md5($password)." <td><input type='password' name='password'></td>\n</tr>\n" .Masalah Keamanan." <td><input type='text' name='username'></td>\n</tr>\n" ." <td colspan='2'></td>\n</tr>\n" .

/**********/ /*************/ case 'update': /*************/ $user_id = $_SESSION['member']."</table>\n" ." <td><input type='text' name='username' value='"." <tr bgcolor='#d7e7f3' height='20'><td colspan='2'></td>\n </tr>\n" ." <td><input type='text' name='email' value='". Klik <a href='member."</form>\n\n" . $pass1 = $_POST['pass1']."<p><a href='index." <tr>\n <td>Password: </td>\n" ."'></td> \n</tr>\n" .$data[2].php'>di sini</a> untuk " ." <td><input type='password' name='pass1'></td>\n</tr>\n" . // pecah setiap data $data = mysql_fetch_array($hasil). } break.localhost // gunakan fungsi login untuk mencocokkan username dan password if (!login('member'." <tr>\n <td>Total Post: </td><td>". $pass2 = $_POST['pass2'].php'>Home</a> &nbsp <a href='member.$data[3]." <td><input type='password' name='pass2'></td>\n</tr>\n" ."<a href='javascript: history." <tr>\n <td>Email: </td>\n" . Error Handling dan Contoh-contoh Aplikasi 330 .$data[0]."'" ." readonly='yes'></td>\n</tr>\n" ." <tr>\n <td></td><td><input type='submit' value='UPDATE'></td>\n </tr>\n" ." <tr bgcolor='#d7e7f3' height='20'>\n<td colspan='2'></td> </tr>\n" ."'> </td>\n</tr>\n" . Bab 4 ."<table border='0' cellpadding='4'>\n" . break. $username."<p>Berikut ini adalah data pribadi anda: </p>\n" ."." <tr>\n <td>Ulangi: </td>\n" ." <tr>\n <td>Username: </td>\n" . echo "Login berhasil.php?proses=proses_update' method='post'>\n" ." <td><input type='text' name='nama' value='"."<form action='member. // buat form dan tabel echo "<h1>UPDATE PROFIL</h1>\n" . /************/ /********************/ case 'proses_update': /********************/ // ambil data yang di-post $username = $_POST['username'].back()'>Kembali</a>\n"." <tr>\n <td>Nama: </td>\n" . $password)) echo "Username atau Password salah. // lakukan query untuk mendapatkan profil dari user yang bersangkutan $hasil = mysql_query("SELECT * FROM member WHERE username='$user_id'").Masalah Keamanan."masuk ke member area.$data[4].php>Member </a></p>\n"."</td>\n</tr>\n" . else { // buatkan session karena berhasil login $_SESSION['member'] = $username.ForumBareng. <br><br>\n" .

break. <br><br>\n$back". // jika tidak ada kesalahan update database $hasil = mysql_query("UPDATE member SET password='$pass1'. else echo "Profil berhasil diupdate. <br><br>\n$back"). $tgl = date('d-m-Y. jika tidak ada kesalahan output dari file ini akan seperti gambar 4. H:i'). // cek status if (!$hasil) echo "Error: Gagal mengupdate database. // tutup koneksi ke MySQL server ?> </body> </html> Simpan pada direkori forum dengan nama member. else echo "Anda telah logout dari sistem.ForumBareng.Masalah Keamanan. <br><br>\n$back".localhost $nama = $_POST['nama']. HH:MM $hasil = mysql_query("UPDATE member SET last_login='$tgl' WHERE username='$user_id'"). nama='$nama'. <br><br>\n$back").php. Error Handling dan Contoh-contoh Aplikasi 331 . // cek kevalidan email if (!cek_email($email)) exit("Error: Email tidak valid. // cek apakah password 1 sama dengan password 2 if ($pass1 != $pass2) exit("Error: Password tidak sama.21 Bab 4 . // cek apakah semua filed sudah terisi if (!cek_field($_POST)) exit("Error: Masih ada field yang kosong. <a href='member.back()'>Kembali</a>\n". <a href='member. // enkripsi password $pass1 = balik_md5($pass1). break. email='$email' WHERE username='$username'").\n".php'>Login</a> kembali. // format DD-MM-YYYY. // panggil fungsi logout if (!logout('member')) echo "Anda belum Login.php'>Login</a> dulu. <br><br>\n$back"). $email = $_POST['email']. /***********/ } mysql_close(). $back = "<a href='javascript: history.\n". Jalankan pada browser anda. /***********/ /*************/ case 'logout': /*************/ // update isi dari last_login pada database $user_id = $_SESSION['member'].

Untuk mencocokkan data kita menggunakan fungsi login() berikut if (!login('member'. update.ForumBareng. menu untuk kembali ke halaman utama forum. Pada case proses_login kita mengambil data yang dipost dari form login yaitu username dan password. Data ini kita peroleh dengan melakukan query berikut $user_id = $_SESSION['member'].Masalah Keamanan. Pada case logout kita mengupdate isi dari last_login pada tabel member yang usernamenya merupakan member yang sedang login. Pertama kita mengecek isi dari session member. Ini agar saat masuk ke member area kita dapat menampilkan waktu terakhir kali user tersebut login. // lakukan query untuk mendapatkan beberapa informasi $hasil = mysql_query("SELECT * FROM member WHERE username='$user_id'"). Jika anda kembali ke halaman menu utama forum. Sebaliknya jika sudah terisi maka user sudah login jadi tampilkan menu untuk member area. Error Handling dan Contoh-contoh Aplikasi 332 .localhost PENJELASAN SCRIPT Sama seperti prinsip kerja dari file index. $user_id menunjukkan username dari member yang sedang login. sekarang ID anda bukan guest lagi melainkan username anda. Case login dan update hanya bertugas untuk menampilkan form masing-masing untuk form login dan form update. Maka username dan password tidak cocok. Oleh karena itu jangan buatkan session untuk user ini. Jadi data yang dihasilkan sudah tentu data dari member tersebut. Jadi hasil dari fungsi tersebut false. Bab 4 . Pada halaman member area kita menyediakan tiga menu yaitu menu untuk mengupdate profil. Sebaliknay jika cocok maka buatkan session bernama member yang isinya adalah username dari member tersebut.php pada halaman administrator. Kita menampilkan nama dari member dan kapan ia terakhir kali login ke member area. proses_update dan logout. Jika belum terisi maka user belum login jadi tampilkan form login. Gambar 4. $username. Pada case login khususnya pada blok else atau halaman utama member.21: Halaman utama member area Pada halaman ini terdapat lima proses yaitu login. proses_login. dan menu untuk logout. $password)) Arti dari member pada parameter pertama menunjukkan tabel yang kita gunakan.

." <tr><td>Password: </td>\n" . include('inc/class_forum.." <td><input type='password' name='pass1' maxlength='16'></td>\n </tr>\n" ." <td colspan='2'></td>\n</tr>\n" .. // filter proses $proses = filter_str($proses).php?proses=proses_form' method='post'>\n" .. // panggil file-file yang diperlukan include('inc/header..Masalah Keamanan.." <tr bgcolor='#d7e7f3' height='20'>\n" ..: 12-10-2005 *** ** Penjelasan.." <td><input type='text' name='username' maxlength='16'></td>\n </tr\n" ..php').ForumBareng.: Untuk menampilkan dan memproses form *** ** registrasi *** ***********************************************************/ session_start()." <tr><td>Ulangi: </td>\n" . Untuk membuatnya klik menu File > New > PHP pada PHP DESIGNER 2005.php'). Error Handling dan Contoh-contoh Aplikasi 333 . include('inc/fungsi." <td><input type='text' name='nama'></td>\n</tr>\n" ... // koneksikan ke MySQL Server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server.php *** ** Penulis." <tr><td>Username: </td>\n" . // dapatkan data dari URL $proses = $_GET['proses'].."<table border='0' cellpadding='4'>\n" . // handel setiap proses dengan switch dan case switch ($proses) { /***********/ case 'form': /***********/ // buat form dan tabel echo "<h2>Form Registrasi</h2>\n" ." <td><input type='password' name='pass2' maxlength='16'></td>\n </tr>\n" .. <br> Cek kembali settingan untuk host.php')." <td><input type='text' name='email'>\n</td>\n</tr>\n" Bab 4 . kemudian salin script kode berikut Script dari file daftar." <tr><td>Nama Lengkap: </td>\n" ..php <?php /********************************************************** ** Nama File." <tr><td>Email: </td>\n" .php')....."<form action='daftar.: daftar. if ($proses == '') $proses = 'form'."<p>Silahkan isi semua field di bawah ini lalu tekan DAFTAR</p>\n" .. username dan password').localhost File yang berikut ini bertugas untuk menyediakan form pendaftaran/registrasi sekaligus memprosesnya.: Rio Astamal *** ** Tanggal. include('inc/konfig.

// username dan password hanya boleh berupa alpabet. // enkripsi password $pass1 = balik_md5($pass1). $pass1)) exit("Error: Password hanya boleh berupa alpanumerik dan _. else echo "Proses registrasi berhasil. <br><br>\n$back"). <br><br>\n$back").php'>Login</a>. // cek kevalidan email if (!cek_email($email)) exit("Error: Email tidak valid. '$pass1'. // cek kesamaan password 1 dan password 2 if ($pass1 != $pass2) exit("Error: Password tidak sama. break. <a href='member. $pass1 =$_POST['pass1']. '-')").<br><br>\n$back"). break. <br><br>\n$back"). $nama = $_POST['nama']. // cek status if (!$hasil) echo "Error: Gagal memasukkan data ke database. if (ereg('[^a-zA-Z0-9_]'.php'>Home</a> &nbsp </p>" ."</table>\n" .Masalah Keamanan."</form>\n\n" . Error Handling dan Contoh-contoh Aplikasi 334 .localhost</p>\n". /******************/ } mysql_close().\n". ?> // tutup koneksi ke MySQL Bab 4 .localhost . $username)) exit("Error: Username hanya boleh berupa alpanumerik dan _. numerik dan _ if (ereg('[^a-zA-Z0-9_]'. // jika tidak ada kesalahan masukkan ke database // untuk posting kita set 0 dan last_login $hasil = mysql_query("INSERT INTO member VALUES ('$username'."<p><a href='index. 0. /***********/ /******************/ case 'proses_form': /******************/ // ambil data yang dipost $username = $_POST['username']."<p align='center'>&#169 2005 ForumBARENG." <tr bgcolor='#d7e7f3' height='20'><td colspan='2'></td></tr>\n" . $email = $_POST['email']. '$nama'. $back = "<a href='javascript: history.ForumBareng. $pass2 = $_POST['pass2'].back()'>Kembali</a>\n". <br><br>\n$back".<br><br>\n$back"). // cek apakah masih ada field yang kosong if (!cek_field($_POST)) exit("Error: Masih ada field yang kosong. '$email'." <tr><td></td><td><input type='submit' value='DAFTAR'></td> </tr>\n" .

Error Handling dan Contoh-contoh Aplikasi 335 .php')... // panggil file-file yang diperlukan include('inc/header. // filter proses $proses = filter_str($proses). include('inc/fungsi. include('inc/class_forum. PENJELASAN SCRIPT File ini hanya mememiliki dua proses yaitu proses untuk menyediakan form registrasi dan proses untuk memproses data dari form registrasi."<form action='lupa_pass..." anda..php'). Setelah itu gunakan" . // dapatkan data dari URL $proses = $_GET['proses'].php?proses=kirim' method='post'>\n" .localhost yang kita buat.: lupa_pass...: 12-10-2005 *** ** Penjelasan. // handel setiap proses dengan switch dan case switch ($proses) { /***********/ case 'form': /***********/ // buat tabel dan form echo "<h2>Form Lupa Password</h2>\n" .. // koneksikan ke MySQL Server if (!konek_db()) exit('Error: Gagal melakukan koneksi ke MySQL server. username dan password').php <?php /********************************************************** ** Nama File.. Tidak ada yang menarik dari script ini. include('inc/konfig. Juga merupakan yang terakhir untuk website ForumBARENG... Dan mengupdate kembali password " .</p>\n" .."<table border='0' cellpadding='4'>\n" .. if ($proses == '') $proses = 'form'....Masalah Keamanan. File ini berfungsi untuk mereset password user dan mengirimkan password baru ke alamat email user." <tr bgcolor='#d7e7f3' height='20'><td colspan='2'></td></tr>\n" Bab 4 . File berikutnya merupakan yang terakhir untuk file yang berada pada direktori forum.: Untuk mereset password user *** ***********************************************************/ session_start().: Rio Astamal *** ** Tanggal.php'). <br> Cek kembali settingan untuk host..php.localhost </body> </html> Simpan pada direkori forum dengan nama daftar." password baru tersebut untuk login.. Karena kita hanya membuat form registrasi pada case form dan memproses form registrasi pada case proses_form. Pada PHP DESIGNER 2005 klik menu File > New > PHP kemudian ketik kode berikut Script dari file lupa_pass.php *** ** Penulis."<p>Pada form ini anda dapat mereset password anda.php').ForumBareng..

$tgl = date('d-m-Y." <tr bgcolor='#d7e7f3' height='20'><td colspan='2'></td></tr>\n" . // cek kevalidan email if (!cek_email($email)) exit("Error: Email tidak valid." <tr><td></td><td><input type='submit' value='KIRIM'></td> </tr>\n" . // lakukan query untuk mencocokkan username dan email $hasil = mysql_query("SELECT * FROM member WHERE username='$username' AND email='$email'")." <tr>\n <td>Email: </td>\n" . // kirim ke alamat email user $subject = "[ Password baru anda di ForumBARENG."<br><br>\n<a href='mailto: root@localhost'>Kontak Admin</a>\n").localhost ."==========================================\n" . break."melakukan request untuk mereset password."Username: $username\n" ."</table>\n</form>\n\n" ."<p><a href='index. else { // jika cocok maka buat password baru.ForumBareng. // cek status if (!$q_update) exit("Error: Gagal Mengupdate password di database."adalah password baru anda untuk masuk ke member area." <td><input type='text' name='username'></td>\n</tr>\n" . // cek jumlah baris yang dikembalikan if (mysql_num_rows($hasil) == 0) echo "Username atau email anda tidak ada didatabase kami.localhost ]". " . $email = $_POST['email']." <td><input type='text' name='email'></td>\n</tr>\n" .back()'>Kembali</a>\n"). H:i').Masalah Keamanan." <tr>\n <td>Username: </td>\n" . // update password yang ada di database $q_update = mysql_query("UPDATE member SET password='$pass_enkrip' WHERE username='$username'"). Dan dibawah ini \n" ."."Pada tanggal $tgl anda dengan username $username \n" . $isi = "Dari administrator forumBARENG. // jika tidak ada kesalahan kirim email $to = $email. Email tidak dikirim.localhost\n\n" .php'>Home</a></p>\n". <br><br>\n <a href='javascript: history. /***********/ /************/ case 'kirim': /************/ // ambil data yang di-post $username = filter_str($_POST['username']). update database lalu kirim email // panggil fungsi pass_acak() untuk mendapatkan password secara acak $new_pass = pass_acak()."Gunakan password diatas untuk masuk ke member area dan \n" Bab 4 .\n\n" ."Password: $new_pass\n" ."==========================================\n\n" . Error Handling dan Contoh-contoh Aplikasi 336 . // enkripsi password $pass_enkrip = balik_md5($new_pass).

"mengupdate password anda agar mudah diingat."<a href='index. Kita hanya memfilter username karena untuk email sudah Bab 4 ."================================".22 menunjukkan email yang diterima salah satu member yang meminta reset password. Error Handling dan Contoh-contoh Aplikasi 337 . } // akhir dari else } ?> </body> </html> Simpan pada direktori forum dengan nama lupa_pass.localhost .ForumBareng.<br><br>\n" .Masalah Keamanan. PENJELASAN SCRIPT Blok kode pada case form biasa-biasa saja karena hanya menampilkan form lupa password.\n\n" . $from). Gambar 4. Yang menarik adalah pada case proses_form dimana kita melakukan reset password dan mengirim email. // ganti dengan email anda // jika anda tidak memiliki program mail server atau belum di server sebenarnya // beri komentar pada fungsi mail berikut mail($to. $subject. echo "<p>Password berhasil direset. $from = "From: root@localhost". $isi.php.php'>Home</a></p>\n". // akhir dari switch Gambar 4.22: Email yang diterima user yang melakukan reset password Pada case proses_form hal pertama yang kita lakukan tentu adalah mengambil data yang dipost dari form lupa password."root@localhost (administrator)\n" . Cek email anda.

Jika username dan email tidak cocok makam jangan mereset password dan jangan mengirim email. Isi dari $pass_enkrip ini yang kita gunakan untuk mengupdate password user. Kemudian kita mengecek kecocokan antara username dan email dengan data yang ada di database dengan query berikut $hasil = mysql_query("SELECT * FROM member WHERE username='$username' AND email='$email'"). Error Handling dan Contoh-contoh Aplikasi 338 . Selanjutnya kita membuat beberapa variabel yang kita gunakan untuk mengirim email menggunakan fungsi mail().ForumBareng. Sekarang isi dari $new_pass adalah string acak dengan panjang karakter 8. Isi dari $new_pass inilah yang akan kita kirim ke alamat email user. Jika tidak demikian maka user tidak dapat login karena waktu login kita menggunakan fungsi balik_md5() untuk enkripsi.Masalah Keamanan. Akan tetapi jika cocok maka reset password yang ada didatabase dan kirim email ke user tersebut. Untuk mendapatkan password baru kita memanggil fungsi pass_acak() sebagai berikut $new_pass = pass_acak().localhost diambil alih oleh fungsi cek_email(). $pass_enkrip = balik_md5($new_pass). ********** Bab 4 . Untuk mereset password yang ada didatabase kita harus mengubah isi dari $new_pass menjadi string chiper menggunakan fungsi balik_md5().

Bab 4 . Error Handling dan Contoh-contoh Aplikasi 339 .Masalah Keamanan.

22. Bagian Member Bab 4 . Admin dapat menghapus keanggotaan member. Error Handling.Masalah Keamanan.23: Sketsa hubungan antar halaman non-member Edit Iklan Update Profil Kirim Email Pasang Iklan Halaman Utama Logout Form Login Gambar 4. Sketsa website kali ini kita bagi dalam 3 bagian yaitu bagian administrator. dan bagian member. dan Contoh-contoh Aplikasi 340 . Gambar sketsa proyek dapat anda lihat pada gambar dibawah ini.localhost Aplikasi ke tiga yang akan kita buat adalah website iklan. Admin dapat menghapus iklan tertentu Iklan yang sudah 7 hari otomatis akan dihapus jika admin login. Pada proyek ini kita kembali menggunakan skin untuk tampilan website kita. dan menghapus berita. Member Login Registrasi Berita Halaman Utama Daftar Iklan Gambar 4.localhost Hari Ke-21.SuperIklan. bagian user biasa. Meskipun sederhana namun kita akan buat website ini lebih rapi dari sebelumnya. Bagian Administrator Untuk masuk ke halaman administrator/control panel admin harus memasukkan username dan password. Admin dapat mengirim email ke semua member.24: Sketsa hubungan antar halaman member Sketsa Proyek Kita akan membuat sebuah website iklan baris sederhana. menambah. Admin dapat mengedit. namai folder tersebut hari-21-22-23-24 SuperIklan. Untuk yang pertama mari kita bahas bagian administrator terlebih dahulu. Berbeda dengan proyek sebelumnya. 23 & 24 Seperti biasa karena sudah menginjak hari baru maka kita ikuti langkah berikut: Masuk pada direkori C:\Apache2\htdocs\webmaster\Bab4 Buat folder bari.

php Menampilkan halaman utama superIklan.php Menampilkan iklan yang sesuai kriteria user Direkori iklan\admin  Fungsi  Menamampilkan form login dan halaman utama admin area  Menampilkan form kirim email dan memprosesnya  Menamampilkan daftar iklan yang dipost member  Menampilkan daftar member yang telah bergabung  Mengedit.localhost Berisi class halaman untuk menampilkan nomor halaman Berisi class skin untuk mengganti tampilan halaman Berisi class waktu untuk manipulasi tanggal Bab 4 . Daftar file yang akan kita buat untuk membangun website superiklan.3 Tabel 4. inc. dan Contoh-contoh Aplikasi 341 . dan template.php  berita.php Menampilkan daftar iklan berdasarkan kategori yang dipilih cari.php Menampilkan dan memproses form registrasi user baru news.php fungsi.php class_halaman.localhost Nama File  index. menambah dan menghapus berita File SQL untuk membangun database website superiklan.php Menampilkan daftar berita iklan.php  db_iklan. member.Masalah Keamanan.localhost ditunjukkan oleh tabel 4.localhost Untuk masuk ke halaman member area user harus memasukkan username dan password.php Direktori iklan\inc Fungsi Melakukan redirect ke halaman utama Berisi kumpulan fungsi untuk website superiklan.php class_skin. Member dapat mengupdate profil data dirinya Member dapat memasang iklan (maksimal 10 iklan) Isi iklan maksimal 500 karakter Member dapat mengedit iklan yang telah ia pasang Member dapat mengirim iklan berupa email ke seluruh member lainnya (7 hari sekali) Bagian Non-Member User dapat melihat daftar iklan berdasarkan kategori masing-masing User dapat melihat daftar iklan kemarin dan dua hari selelumnya atau lebih User dapat mencari iklan dengan memanfaatkan form pencarian iklan User dapat melihat daftar berita yang disediakan pengelola User dapat mendaftar untuk menjadi member lewat form daftar Bagi member dapat login ke member area lewat form login Sebelum mulai mengerjakan proyek ini lakukan konfigurasi direktori seperti berikut: Masuk pada direktori C:\Apache2\htdocs\webmaster\Bab4\hari-21-22-23-24 Buat folder baru dan namai folder tersebut iklan Masuk pada direktori iklan yang baru anda buat Buat beberapa folder baru berikut admin.sql  Nama File index.php  iklan. Error Handling.php  member.SuperIklan.php  email.localhost login.localhost Bersisi konfigurasi untuk website superiklan.localhost Direktori iklan Nama File Fungsi index.php class_waktu.3 Daftar file untuk website superIklan.php Menampilkan form login untuk masuk ke member area daftar.php konfig.

jdl_iklan varchar(100).php skin_utama.SuperIklan.localhost Direktori iklan\member Nama File index.localhost Nama File index.php Seperti proyek-proyek sebelumnya kita mulai mengerjakan proyek ini dengan membuat databasenya terlebih dahulu. CREATE DATABASE iklan.buat tabel untuk admin CREATE TABLE admin ( username varchar(16) PRIMARY KEY. kemaudian ketik script berikut. Oleh karena itu jalankan PHP DESIGNER 2005 lalu klik menu File > New > SQL untuk membuat file SQL baru.php admin_var.buat tabel untuk member CREATE TABLE member ( username varchar(16) PRIMARY KEY. -.Buat database iklan -. email varchar(50).php pasang.Jika sudah ada hapus DROP DATABASE IF EXISTS iklan. dan Contoh-contoh Aplikasi 342 . -. -.Masalah Keamanan. Script dari file db_iklan.php var_utama. password varchar(32) ) TYPE='MyISAM'.php member_var. kota varchar(20). -.php email.buat tabel untuk iklan CREATE TABLE tb_iklan ( id_iklan int(4) AUTO_INCREMENT PRIMARY KEY.sql -. isi_iklan text.php profil. Error Handling. tgl_post varchar(20). nama varchar(50).php edit.aktifkan database iklan USE iklan.php Fungsi Menampilkan halaman utama member area Menampilkan form pasang iklan dan memprosesnya Mengedit iklan yang telah dipost Menampilkan form kirim email dan memprosesnya Menampilkan forum update profil dan memprosesnya Direkori iklan\template Fungsi Melakukan redirect ke halaman utama Kumpulan variabel untuk halaman admin area Kumpulan variabel untuk halaman member area Kumpulan variabel untuk halaman pengunjung/non member File template untuk semua halaman superiklan. kategori varchar(15). alamat varchar(75). username varchar(16). timestamp int(20) Bab 4 . telpon varchar(25) ) TYPE='MyISAM'. password varchar(32).

. next_post int(20) ) TYPE='MyISAM'.Masalah Keamanan.php <?php /********************************************************** ** Nama File. -. INSERT ON iklan.. Script dari file index. -..localhost ) TYPE='MyISAM'. dan Contoh-contoh Aplikasi 343 . mysql> source C:/Apache2/htdocs/Bab4/hari-21-22-23/iklan/db_iklan.buat tabel untuk berita CREATE TABLE tb_berita ( id_berita int(4) PRIMARY KEY AUTO_INCREMENT. -. Seperti banyaknya iklan atau berita yang akan kita tampilkan..: Rio Astamal *** ** Tanggal.. Jika pada MySQL Monitor maka ketikkan perintah berikut.buat tabel untuk iklan email CREATE TABLE tb_email ( username varchar(16) PRIMARY KEY... jdl_berita varchar(100).: 20-10-2005 *** ** Penjelasan. UPDATE. Tugas file ini hanya melakukan redirect ke halaman utama. Bab 4 .sql. Berapa lama iklan harus dihapus dari database dan sebagainya. Jika ada user yang mencoba masuk ke direktori inc.. lalu ketik kode berikut. Error Handling..: index.. jadi jalankan PHP DESIGNER 2005 klik File > New > PHP untuk membuat file PHP baru kemudian ketik kode berikut.buat privilige untuk database ini GRANT SELECT.... File pertama yang akan kita buat adalah index. File-file pada direktori ini kita buat terlebih dahulu karena merupakan file pendukung untuk file-file lainnya. tgl_berita varchar(20) ) TYPE='MyISAM'. DELETE..* TO useriklan IDENTIFIED BY 'iklan123'.SuperIklan. ?> Simpan pada direktori iklan\inc dengan nama index.php.php.: Untuk meredirect ke halaman utama *** ***********************************************************/ // jika user mencoba masuk ke halaman inc // kembalikan ia ke halaman utama header ("Location: . Buat file PHP baru pada PHP DESIGNER 2005.php")..Akhir dari file Simpan pada direktori iklan dengan nama db_iklan..sql Jika pada phpMyAdmin klik tab SQL lalu klik Browse arahkah pada alamat seperti diatas.php *** ** Penulis. Untuk selanjutnya kita akan membuat file-file yang berada pada direkori inc./index.. -. File berikutnya yang akan kita buat adalah file yang menyimpan konfigurasi. email varchar(50).. isi_berita text... Untuk mengeksekusi file ini terdapat dua cara yaitu melalui MySQL monitor atau phpMyAdmin.

. Selanjutnya kita akan membuat file yang akan menyimpan seluruh fungsi yang akan kita panggil hampir pada setiap halaman.: konfig.. // kembalikan ke halaman utama exit....... Jalankan PHP DESIGNER 2005 klik File > New > PHP kemudian ketik kode berikut. // iklan per halaman $max_post = 10..php *** ** Penulis...php'. // iklan per halaman $u_jbph = 2..... // jumlah iklan maximal yang dipost user $lama_iklan = 7... // lama hari user boleh mengirim email kembali /* KONFIGURASI UNTUK USER/MEMBER */ /***********************************/ $u_bph = 2. // berita per halaman 2... $a_mph dan sebagainya.php.php'). // member per halaman 2. $_SERVER['PHP_SELF'])) Bab 4 .: Rio Astamal *** ** Tanggal..: menyimpan konfgiurasi baik untuk *** ** halaman member dan admin *** ***********************************************************/ // cegah pengaksesan langsung dari browser if (eregi('konfig....: 15-10-2005 *** ** Penjelasan.: fungsi. Error Handling. // lama hari iklan user akan dihapus $lama_email = 7.: 17-10-2005 *** ** Penjelasan. // judul berita per halaman // ?> Simpan pada direktori iklan\inc dengan nama konfig.php'....SuperIklan./index...: Rio Astamal *** ** Tanggal..php <?php /********************************************************** ** Nama File. $_SERVER['PHP_SELF'])) { header('Location: . Konfigurasi untuk administrator kita beri identitas variabelnya dengan tanda a seperti $a_bph.Masalah Keamanan...php *** ** Penulis...php <?php /********************************************************** ** Nama File.. } /* KONFIGURASI UNTUK ADMIN */ /*****************************/ // ganti $a_bph = $a_mph = $a_iph = jumlahnya sesuai keinginan anda 2... // berita per halaman $u_iph = 2. dan Contoh-contoh Aplikasi AKHIR KONFIGURASI // 344 . Script dari file fungsi...: menyimpan kumpulan fungsi *** ***********************************************************/ // cegah pengaksesan langsung dari browser if (eregi('fungsi..localhost Script dari file konfig. Sedangkan untuk user kita beri identitas u seperti $u_bph dan sebagainya.

else $filter = ereg_replace("[^a-zA-Z0-9_$lainnya]".mysql_error(). } } //cek setiap field apa ada yang kosong function cek_field($var) { foreach ($var as $field) { if ($field == '' || !isset($field)) return false. return $chiper_text. else return false.'). // jika gagal melakukan koneksi tampilkan pesan kesalahannya if (!$koneksi) { echo "Error: ". $email)) return true. numerik dan _ function filter_str($string. Error Handling. $string). return true. echo "Keterangan: ". dan Contoh-contoh Aplikasi 345 .SuperIklan.]+$'. } else { // pilih database yang digunakan mysql_select_db('iklan').mysql_errno(). $lainnya='') { if ($lainnya == '') $filter = ereg_replace('[^a-zA-Z0-9_]'. $string). } // fungsi untuk mengecek session Bab 4 . ''.localhost exit('Error: Akses ditolak. } // fungsi untuk menyaring string selain alpabet."<br>\n". exit. return $filter. 'root'. } // fungsi untuk mengenkripsi string dengan metode MD5 // dan membalik urutannya function balik_md5($string) { // untuk membalik urutan string digunakan fungsi strrev() $chiper_text = strrev( md5( $string ) ). // fungsi untuk mengkoneksikan ke MySQL server function konek_db() { // untuk username = secure dan password = secure123 @ $koneksi = mysql_connect('localhost'.Masalah Keamanan. } return true.[a-zA-Z0-9\-\. } //cek kevalidan email function cek_email($email) { //fungsi untuk mengecek kevalidan email if (ereg('^[a-zA-Z0-9_\-]+@[a-zA-Z0-9\-]+\. ''."<br>\n". 'b3naffl3ck').

// kode hari 0=minggu. // lakukan looping sebanyak $panjang for ($i=0. $username. // tanggal sekarang 01-31 $hari = date('w').' '. // buat array nama bulan $nama_bulan = array('Januari'. 'Rabu'. // kembalikan nilai true } // fungsi untuk membuat password secara acak // digunakan untuk mengirim password pada form lupa password function pass_acak($panjang=8) { $kar = "ABCDEFGHJKLMNPRSTUVWXYZ0123456789abchefghjkmnpqrstuvwxyz". 'Sabtu'). 'Kamis'. // acak karakter srand((double)microtime() * 1000000). $i++) // default diulang sebanyak 8x { $nom_acak = rand() % 53. $bulan = date('n') . Error Handling. // dikurangi satu agar index awal 0 $tahun = date('Y'). 'Februari'.$tanggal. 'April'. // ambil satu karakter } return $pass. 'Maret'. // string bulan ini // gabungkan hasil $today = $hari_ini.' '.Masalah Keamanan. $i<$panjang.localhost function cek_session($nama_ses) { // jika session kosong if (!isset($_SESSION[$nama_ses])) return false.$tahun.$bulan_ini. 'Juli'. 'Oktober'. 1=senin dst. // kembalikan hasil } Bab 4 . // string hari ini $bulan_ini = $nama_bulan[$bulan]. 'September'.SuperIklan. $password) { // lakukan query untuk mencocokkan data $hasil = mysql_query("SELECT * FROM $tabel WHERE username='$username' AND password='$password'"). dan Contoh-contoh Aplikasi 346 . // data tidak cocok else return true.= substr($kar. // cek baris yang dikembalikan if (mysql_num_rows($hasil) == 0) return false. '. $tanggal = date('j'). return $today. 'Desember'). // kembalikan hasil } // fungsi untuk menampilkan tanggal sekarang function show_tgl() { // buat array nama hari $nama_hari = array('Minggu'. // untuk mendapatkan nomor acak. pada substr() $pass . 'Agustus'.1.'. 'Juni'. // kembalikan nilai false else // jika tidak kosong return true. 'Nopember'. 'Mei'. 'Senin'. // tahun format 4 digit $hari_ini = $nama_hari[$hari]. 'Selasa'. $nom_acak. 1). 'Jumat'. // kemblikan nilai true } // fungsi untuk login function login($tabel.

Fungsi filter_str() juga kita modifikasi sehingga memiliki dua parameter.Masalah Keamanan. var $halaman. Isi dari parameter kedua merupakan karakter lain yang mungkin ingin anda tetap pertahankan tanpa terfilter oleh fungsi ini. Ini berguna pada form pencarian iklan dimana user biasanya memasukkan spasi untuk pencarian.php. Dan kita menambahkan fungsi baru yaitu show_tgl(). // kembalikan nilai true } } ?> Simpan pada direktori iklan\inc dengan nama fungsi. $str_pengganti) { $this->tag[$namatag] = $str_pengganti. klik File > New > PHP pada PHP DESIGNER 2005 lalu ketik kode berikut. Selanjutnya kita akan membuat file yang menyimpan class untuk tampilan setiap halaman dari website superiklan. PENJELASAN SCRIPT Pada proyek kali ini kita melakukan sedikit perubahan pada file fungsi. var $file_skin. Untuk membuatnya seperti biasa. Jadi tidak perlu saya jelaskan ulang. Perbuahan lainnya adalah pada fungsi konek_db() dimana pada fungsi ini kita kita tidak mengembalikan nilai false melainkan langsung mencetak nomor error dan pesan errornya kemudian keluar dari rutin program dengan fungsi exit. Script dari file class_skin. Fungsi show_tgl() ini sebenarnya sudah pernah kita buat pada bab sebelumnya. session_destroy(). } // metode untuk menentukan file template yang digunakan function ganti_skin($namafile) Bab 4 . // metode untuk menentukan nama tag yang diganti // dan string penggantinya function ganti_tag($namatag.php. Diantaranya kita menghilangkan fungsi untuk mengecek kata-kata kotor yaitu fungsi filter_kata().SuperIklan.localhost // fungsi untuk logout (menghapus session) function logout($nama_ses) { // jika session kosong if (!isset($_SESSION[$nama_ses])) return false. Class ini sudah pernah kita gunakan berulangulang pada proyek bab-bab sebelumnya.php <?php class skin { // deklarasikan properti var $tag = array(). Satu bersifat wajib dan satu opsional.localhost yaitu class skin. dan Contoh-contoh Aplikasi 347 . return true. // kembalikan false else { // jika tidak kosong hancurkan session tersebut unset($_SESSION[$nama_ses]). Error Handling.

exit... $hasil_query. $berikutnya. } // metode untuk mengganti tampilan function ganti_tampilan() { // buka file template menggunakan file() $this->halaman = file($this->file_skin).. // keluar dari rutin script } class halaman { // deklarasilam properti untuk class var $tabel. $this-> halaman). $jml_data.: Rio Astamal *** ** Tanggal. } Bab 4 .. kemudian ketik kode berikut.: 12-10-2005 *** ** Penjelasan. dan Contoh-contoh Aplikasi 348 .Masalah Keamanan. Error Handling..... $tampilkan_hal.php')..php *** ** Penulis. Script dari file class_halaman..php.. $jml_hal... $per_halaman... // tampilkan ke layar } } ?> Simpan pada direktori iklan\inc dengan nama class_skin. $str_baru..: class_halaman.. File berikutnya juga sudah pernah kita buat yaitu class untuk menampilkan nomor halaman. $file. // gabungkan setiap baris dengan implode() $this->halaman = implode("".php'./index. $last_page. // gunakan looping foreach() untuk mengganti setiap tag foreach($this->tag as $str_dicari => $str_baru) { $this->halaman = ereg_replace($str_dicari. $sebelumnya.localhost { $this->file_skin = $namafile. Langsung saja buat file PHP baru pada PHP DESIGNER 2005... $_SERVER['PHP_SELF'])) { // kembalikan ke halaman utama header('Location: . $this->halaman). var $record.SuperIklan.: Class untuk menampilkan link nomor *** ** halaman *** ***********************************************************/ // cegah pengaksesan langsung dari browser if (eregi('class_forum. // metode umtuk memilih tabel yang digunakan function set_tabel($nama_tabel) { $this->tabel = $nama_tabel. $page..php <?php /********************************************************** ** Nama File. } echo $this->halaman.

2 atau 3 lakukan query berikut $this->hasil_query = $query. return $this->hasil_query. $this->per_halaman"). // jika bukan 1. } // metode untuk mendapatkan jumlah record yang harus ditampilkan // pada query SQL. jumlah record dan sebagainya function query_SQL($q = 1. $this->jml_data = $jumlah. return $this->per_halaman. digunakan untuk mendapatkan jumlah // data. maka dibulatkan ke atas $jumlah = ceil($this->jml_data / $this->per_halaman). $this->record = $hasil. $this->jml_hal = $jumlah. dan Contoh-contoh Aplikasi 349 . // kembalikan hasil dari query } // metode untuk mendapatkan jumlah data pada database function get_jml_data() { $jumlah = mysql_num_rows($this->hasil_query). Bab 4 . jumlah record = halaman x pesan per halaman function get_record() { $hasil = $this->page * $this->per_halaman. } // metode untuk melakukan query sql. $id=''. return $this->jml_data. else $query = mysql_query($q).SuperIklan. $isi=''. else if ($q == 3) // jika 3 lakukan query berikut $query = mysql_query("SELECT * FROM $this->tabel WHERE $id='$isi' ORDER BY $lainnya DESC LIMIT $this->record.localhost // metode untuk menentukan data yang di-post function set_page($halaman) { $this->page = $halaman. else if ($q == 2) // jika 2 lakukan query berikut $query = mysql_query("SELECT * FROM $this->tabel WHERE $id='$isi'"). } // metode untuk menentukan banyaknya pesan per halaman function set_pph($angka) { $this->per_halaman = $angka. } // metode untuk mendapatkan jumlah halaman function get_jml_hal() { // untuk menghitung jumlah halaman digunakan fungsi ceil // dimana >> Jumlah data : pesan per halaman // jika hasilnya koma. Error Handling.Masalah Keamanan. return $this->record. $lainnya='') { // jika parameter pertama berisi 1 lakukan query berikut if ($q == 1) $query = mysql_query("SELECT * FROM $this->tabel").

$next = "<a href='$URL&page=$this->berikutnya'>Next ></a>". // link halaman sebelumnya didapat dengan mengurangi nilai // halaman sekarang(yang aktif) dengan satu $this->sebelumnya = $this->page . $i++) { // jika nomor halaman sama dengan halaman yang sedang // dibuka tebalkan angka tersebut dan hapus link // nomor halaman kita tambah 1 agar nomor awal tidak 0 if ($i == $this->page) $halaman . } // metode untuk mendapatkan halaman // paling awal. } // tampilkan $halaman = "$first &nbsp $back &nbsp\n". } else { $last = "<a href='$URL&page=$this->last_page'>Last >></a>". $back = "<a href='$URL&page=$this->sebelumnya'>< Before</a>". } // metode untuk menampilkan halaman function show_page($URL) { // jika jumlah halaman lebih dari satu tampilkan selain itu jangan if ($this->jml_hal > 1) { // jika halaman sekarang 0 (paling awal) jangan tampilkan link // first dan before ganti dengan tulisan biasa(warna abu-abu) if ($this->page == 0) { $first = "<font color='#cccccc'><< First</font>". berikutnya dan paling akhir function set_hal() { // halaman terakhir kita kurangi satu karena pada nomor // karena nilai jml_hal lebih besar 1 dari halaman terakhir $this->last_page = $this->jml_hal . dan Contoh-contoh Aplikasi 350 . // gunakan looping untuk menampilkan setiap nomor halaman for ($i=0. $i<$this->jml_hal. // link halaman berikutnya didapat dengan menambahkan nilai // halaman sekarang dengan satu $this->berikutnya = $this->page + 1.1. } else { $first = "<a href='$URL&page=0'><< First</a>".SuperIklan. } // jika halaman sekarang sama dengan nilai halaman terakhir // jangan tampilkan link last dan next if ($this->page == $this->last_page) { $last = "<font color='#cccccc'>Last >></font>". $next = "<font color='#cccccc'>Next ></font>". Error Handling.Masalah Keamanan.= " <font color='#cccccc'><b>".localhost return $this->jml_hal. $back = "<font color='#cccccc'>< Before</font>".1."</b></font>".intval($i + 1). sebelumnya. else Bab 4 .

// tahun 4 digit $this->jml_hari = date('t').. $bulan..: class_waktu. Jadi waspadalah.php.php. ditambah atau tetap // 0 = mengurangi..SuperIklan. $is_kabisat. // tanggal 01-28/29/30/31 $this->bulan = date('m'). Script dari file class_waktu. lho kok!..php *** ** Penulis. $jml_hari. // output dari halaman jika jumlah halamannya lebih dari satu // kurang lebih seperti berikut. // jika 0 = kabisat selain itu tidak } // metode untuk menentukan tanggal dikurangi. $year. Error Handling. // bulan 01-12 $this->year = date('Y').. Hanya saja karena ini merupakan suatu class maka lebih fleksibel karena kita dapat menentukan tanggal berapa setelah kita tambah atau kurangi sejumlah hari tertentu.intval($i + 1).= "&nbsp $next &nbsp $last\n"..: class untuk memanipulasi tanggal *** ** baik dikurangi.. } $halaman .... // jumlah hari $this->is_kabisat = date('Y') % 4. Untuk file berikut ini belum pernah kita buat sebelumnya.. tahun.localhost $halaman ..= " <a href='$URL&page=$i'>". dan Contoh-contoh Aplikasi 351 . // kembalikan nilai karena akan dicetak ke layar return $this->tampilkan_hal.php <?php /********************************************************** ** Nama File. bulan. 1 = menambah..: 15-10-2005 *** ** Penjelasan. // metode untuk memberi nilai tanggal.. lalu ketik kode berikut.. File ini secara garis besar hampir sama dengan fungsi show_tgl() pada fungsi. } } // akhir dari class halaman ?> Simpan pada direktori iklan\inc dengan nama class_halaman. dimana x adalah nomor halaman // << First < Before x x x Next > Last >> } else $halaman = ''.ditambah atau tetap *** ***********************************************************/ class waktu { // deklarasikan properti var $date. // artinya halaman yang ada hanya satu $this->tampilkan_hal = $halaman.: Rio Astamal *** ** Tanggal..."</a> \n".. Penasaran? Arahkah mouse anda pada menu File > New > PHP. jumlah // hari dalam bulan sekarang function set_date() { $this->date = date('d')..Masalah Keamanan. 2 = tetap function set_mode($pilihan) Bab 4 .

$angka. } // metode untuk menentukan output tampilan dan angka manipulasi // format 0 = tanggal biasa.". // kurangi bulan dengan 1 if ($this->jml_hari == 30) // bulan yang tanggalnya sampai 30 $tgl = (31 + $this->date) . // tanggal pada februari else $tgl = (28 + $this->date) .31) + $angka. // angka ditambah if ($this->jml_hari == 31 && $bulan != 12) // bulan bertanggal 31 selain desember { if ($tgl > 31) // jika melebihi tanggal 31 { $tgl = ($this->date .$angka.$angka.Masalah Keamanan.$angka.$angka.1. // bulan ditambah 1 } } else if ($this->jml_hari == 30) // bulan bertanggal 30 Bab 4 .1. // tahun dikurangi 1 } else if ($this->bulan == 3) // maret { if ($this->is_kabisat == 0) // jika kabisat $tgl = (29 + $this->date) . $bulan = $this->bulan. keluar dari fungsi. $angka = 1) { // jika lebih dari 31 keluar dari rutin program if ($angka > 31) return "Error: Angka terlalu tinggi(max. // tangggal dikurangi if ($tgl <= 0) // jika kurang/sama dengan nol. // tanggal pada bulan yang tanggalnya 31 else if ($this->bulan == 1) // januari { $tgl = (31 + $this->date) . // tanggal pada februari else $tgl = (30 + $this->date) .$angka. 31). $thn = $this->year. // desember $thn = $this->year . dan Contoh-contoh Aplikasi 352 .$angka. // tanggal pada bulan DESEMBER $bulan = 12.$angka.localhost { $this->mode = $pilihan. // tanggal pada bulan yang tanggalnya 30 } } else if ($this->mode == 1) { $tgl = $this->date + $angka.SuperIklan. 1 = detik(timestamp) function set_tgl($format = 0. // tanggal pada bulan juli else if ($this->bulan == 2) // februari $tgl = (31 + $this->date) . if ($this->mode == 0) // jika mode pengurangan { $tgl = $this->date . // tanggal pada februari non kabisat } else if ($this->bulan == 8) // Agustus $tgl = (31 + $this->date) . maka bulan sebelumnya { $bulan = $this->bulan . Error Handling. // kurangi 31 dan tambah sesuai parameter $bulan = $bulan + 1.

// tetap if (strlen($tgl) < 2) $tgl = "0$tgl". $bulan = $bulan + 1.31) + $angka. $bulan = $bulan + 1.php. $tgl. dan Contoh-contoh Aplikasi 353 . PENJELASAN SCRIPT Bab 4 . $bulan. // detik return $this->hasil.28) + $angka. Sehingga user dapat memilih iklan pada tanggal berapa yang ingin ia tampilkan. Error Handling. 0.localhost { if ($tgl > 30) { $tgl = ($this->date . // bulan kita set januari $thn = $thn + 1. } } } else $tgl = $this->date. 0.Masalah Keamanan. // tahun kita tambah satu } } else if ($bulan == 2) // jika bulan februari { if ($this->is_kabisat == 0) // jika kabisat { if ($tgl > 29) // jika lebih dari tanggal 29 { $tgl = ($this->date . } } else if ($bulan == 12) // bulan desember { if ($tgl > 31) // jika melebihi tanggal 31 { $tgl = ($this->date . Fungsi dari class ini sebenarnya adalah untuk memaipulasi tanggal untuk manajemen iklan. $thn). $bulan = 1. // agar berformat 2 digit // cek format yang diinginkan if ($format == 0 || $format != 1) $this->hasil = "$tgl .29) + $angka.$bulan . // tanggal = penambahan hari $bulan = $bulan + 1. // tanggal biasa else $this->hasil = mktime(0.SuperIklan. // kembalikan hasil } // akhir dari metode set_tgl() } // akhir dari class ?> Simpan pada direktori iklan\inc dengan nama class_waktu. // agar berformat 2 digit if (strlen($bulan) < 2) $bulan = "0$bulan". // bulan ditambah 1 } } else if ($tgl > 28) // jika non kabisat { $tgl = ($this->date .31) + $angka.$thn".

Cara kerja dari metode ini bergantung dari nilai $this->mode yang diperoleh dari metode set_mode(). Kita juga menentukan apakah tahun ini kabisat atau tidak dapat menggunakan cara manual dengan menggunakan modulus(sisa pembagian) seperti berikut. Pertama kita mulai dari metode set_date(). $this->is_kabisat = date('Y') % 4. dan Contoh-contoh Aplikasi 354 . Metode set_tgl() memiliki dua parameter dan keduanya bersifat opsional. Karena pada metode ini kita menentukan tanggal yang kita inginkan akan ditambah atau dikurangi. Parameter pertama merupakan format tampilan yang ingin digunakan apakah 0 = standar(dd-mm-yyyy) atau 1 = detik (timestamp). Untuk kondisi $this->mode sama dengan 0 maka kita lakukan operasi pengurangan tanggal. Pada metode ini pertama-tama kita mengecek isi dari parameter dua apabila lebih dari 31 maka keluar dari fungsi. $tgl = $this->date . Namun bagaimana jika hasil dari operasi diatas kurang dari atau sama dengan nol. Untuk bulan yang jumlah tanggalnya 30 kita gunakan statemen seperti berikut if ($this->jml_hari == 30) // bulan yang tanggalnya sampai 30 $tgl = (31 + $this->date) . Oleh karena itu kita mengurangi bulan dengan satu seperti berikut $bulan = $this->bulan . Selanjutnya kita menentukan operasi yang dijalankan apakah itu pengurangan. 1 untuk menambah. Jadi kita juga harus memperhitungkan kondisi tersebut.1.SuperIklan. Pertama kita kurangi tanggal sekarang dengan isi dari parameter dua yaitu variabel $angka. Dengan mengecek isi dari $this-mode. Metode yang kedua adalah set_mode(). // tangggal dikurangi Operasi pengurangan diatas sudah cukup untuk menghasilkan tanggal sebelum tanggal sekarang. bulan.$angka. tahun dan jumlah hari sekarang. dan set_tgl(). if ($tgl <= 0) Secara otomatis jika kondisi diatas terpenuhi maka bulan yang akan ditampilkan adalah bulan sebelumnya. Metode yang terakhir adalah set_tgl(). Selanjutnya mari kita bahas satu per satu. Jika sekarang tahun 2005 modulusnya adalah 1. Parameter kedua adalah angka yang kita inginkan berapa hari tanggal harus ditambah atau dikurangi. penambahan atau tetap.5 >>> HASIL = 29 Bab 4 . Jadi bukan tahun kabisat namun jika modulusnya 0 maka sekarang adalah tahun kabisat. // tanggal pada bulan yang tanggalnya 31 Misalnya sekarang bulan September tanggal 3 dan kita ingin menampilkan tanggal 5 hari sebelumnya hasilnya adalah 29 Agustus sehingga untuk mendapatkan tanggal tersebut logikanya adalah seperti berikut Tanggal = ( 31 + 3 ) . Fungsi dari metode ini berpengaruh pada metode terakhir.Masalah Keamanan. Jadi kita harus menghandel kondisi dimana kemungkinan tanggal 0 atau minus. Error Handling. isi dari properti is_kabisat merupakan hasil dari pembagian tahun sekarang dibagi 4. // kurangi bulan dengan 1 Tentunya jumlah hari antara bulan yang satu dengan yang lainnya ada yang tidak sama. Fungsi metode ini adalah untuk menampilkan tanggal yang kita inginkan baik dalam bentuk standar ataupun dalam detik (timestamp). set_mode(). Angka 0 untuk mengurangi tanggal. Pada metode set_date() kita hanya memberi nilai untuk tanggal.localhost Class ini terdiri dari tiga metode yaitu set_date().$angka. dan 2 tetap. Bisa-bisa pengunjung tertawa melihat tanggal pada website kita misalnya -5 Februari.

php <?php /********************************************************** ** Nama File.localhost Hal yang sama berlaku untuk bulan-bulan yang lain. sans serif.. Selanjutnya adalah bulan. // detik Fungsi yang kita gunakan untuk merubah tanggal menjadi detik adalah mktime().. Tiga parameter pertama adalah untuk jam. $thn). Script dari file skin_utama.php"). tanggal dan tahun.. kecuali bulan Januari karena bulan sebelumnya 12 (Desember) dan tahunnya berkurang satu.localhost.: index../index. Script dari file index.: 17-10-2005 *** ** Penjelasan. $tgl.. kemudian ketik kode berikut. menit dan detik yang kita isikan 0.php.: Rio Astamal *** ** Tanggal.iklan{font-size: 12px} Bab 4 .SuperIklan.. font-size: 14px} a:hover. font-size: 13px} td{font-family: verdana. File pertama yang akan kita buat adalah index.. Selanjutnya file-file yang akan kitab uat adalah file pada direkori iklan\template. $this->hasil = mktime(0.. border-color: #cccccc} a{color: #7cb500} a:visited{color: #7cb500} a:hover{font-weight: bold.php.. File-file pada direktori ini umumnya berisi konfigurasi tampilan seperti skin dan variabel-variabel yang digunakan pada halaman lainnya.. Kali ini kita akan membuat file yang menjadi dasar tampilan dari semua halaman dari website superIklan.: Untuk meredirect ke halaman utama *** ***********************************************************/ // jika user mencoba masuk ke direktori template // kembalikan ke halaman utama header ("Location: .. Langkah yang terakhir dari metode ini adalah menampilkan output tanggal sesuai dengan isi dari parameter pertama.. 0. 0. File ini merupakan file template yang berisi kode-kode HTML sebagai output.. text-decoration: none....Masalah Keamanan. arial. Akhir dari file yang ada pada direktori Iklan\inc.php <html> <head> <title>Super Iklan</title> <style> body{font-family: verdana. File ini hanya bertugas untuk melakukan redirect halaman jika user mencoba masuk ke halaman template. ?> Simpan pada direkori iklan\template dengan nama index.php *** ** Penulis. Klik File > New > PHP pada PHP DESIGNER 2005. $bulan. Juga pada bulan Maret karena bulan sebelumnya adalah Februari maka yang jumlah tanggalnya 28 untuk non kabisat dan 29 untuk kabisat.. Error Handling. dan Contoh-contoh Aplikasi 355 . Pada PHP DESIGNER 2005 klik menu File > New > PHP untuk membuat file PHP baru. sans serif.. Jika 0 maka formatnya adalah tanggal biasa yaitu dd – mm – yyyy sedangkan jika 1 maka formatnya adalah dalam detik(timestamp).. arial. kemudian ketik kode berikut. font-size: 13px} table{border-collapse: collapse..

margin-right: 0.25: Output dari file skin_utama.php Berikutnya kita akan membuat file yang akan menyimpan variabel-variabel yang dipanggil dari semua halaman non member.php <?php Bab 4 .SuperIklan.localhost .jdl_iklan{color: white.putih{color: white.kecil{font-size: 12px} </style> </head> <body class='batas'> <!-. Jika anda buka pada browser output dari file ini ditunjukkan oleh gambar 4.Masalah Keamanan. kemudian salin kode berikut Script dari file var_utama. Error Handling.localhost -</h1></td> </tr> </table> <!-. font-weight: bold.localhost</font></p> </body> </html> Simpan pada direktori iklan\template dengan nama skin_utama. Langsung saja buat file PHP baru pada PHP DESIGNER 2005.25 Gambar 4.tabel utama --> <table border='1' cellpadding='4' width='100%'> <tr height='25'> <td width='30%'>{SEKARANG}</td> <td width='70%'>{MENU}</td> </tr> <tr valign='top'> <td width='30%'><p>{SISI1}</p><p>{SISI2}</p></td> <td width='60%'>{JUDUL}<p>{UTAMA}</p></td> </tr> </table> <p align='center'><font color='#aeaeae'>&#169 2005 superiklan. dan Contoh-contoh Aplikasi 356 . font-weight: bold.batas{margin-left: 0.php.SuperIklan. font-size: 14px} . font-size: 13px} . margin-top: 0. margin-bottom: 0} .Tabel Untuk HeadLine website --> <table border='0' cellpadding='0' width='100%'> <tr bgcolor='#7cb500' height='75'> <td align='center' class='putih'><h1>.

// dapatkan jumlah berita $hal->get_jml_hal(). // fungsi untuk menampilkan tanggal sekarang // buat variabel untuk menampilkan menu $menu = "<a title='Halaman Utama' href='index.: menyimpan variabel yang dipanggil *** ** semua halaman.. // variabel untuk menampilkan cuplikan berita $daftar_berita = "<table border='0' cellpadding='4'>\n" ..php'>Home</a> &nbsp :: &nbsp \n" .. // judul berita per halaman (konfig. dan Contoh-contoh Aplikasi 357 . Error Handling. // kembalikan ke halaman utama exit. /* variabel untuk link daftar berita pada kiri halaman utama ** **************************************************************/ konek_db(). // tampilkan hasil dengan looping Bab 4 .php'.."<a title='Form Pendaftaran' href='daftar.show_tgl().. // koneksikan ke MySQL server // panggil class halaman $hal = new halaman..: Rio Astamal *** ** Tanggal..php) // lakukan query $hal->query_SQL(1).... } // panggil file class_halaman.: 15-10-2005 *** ** Penjelasan. $page = filter_str($page).. if ($page == '') $page = 0."<a title='Halaman Login' href='login. *** ***********************************************************/ // cegah pengaksesan langsung dari browser if (eregi('var_utama.php'>Iklan</a>\n".. // buat variabel untuk tanggal sekarang $tgl = "Hari ini: ". // data halaman yang dihandel $pph = $hal->set_pph($u_jbph). // dapatkan jumlah record $hasil = $hal->query_SQL("SELECT * FROM tb_berita ORDER BY id_berita DESC LIMIT $record.php')..php include ('inc/class_halaman. $_SERVER['PHP_SELF'])) { header('Location: ..php')." <td class='putih'><b>Berita Terbaru</b></td>\n </tr> \n"."<tr bgcolor='#7cb500'>\n" .php include ('inc/konfig.php'>News</a> &nbsp :: &nbsp \n" . // tentukan tabel $hal->set_page($page).Masalah Keamanan.php')./index. // buat objek halaman $hal->set_tabel('tb_berita').. $pph").php'>Member Login</a> &nbsp :: &nbsp \n" ."<a title='Daftar Iklan' href='iklan. // dapatkan data page dari URL $page = $_GET['page']..php'>Daftar</a> &nbsp :: &nbsp \n" ..: var_utama. // panggil file konfig.SuperIklan. // dapatkan jumlah halaman $record = $hal->get_record(). // lakukan query $jml_berita = $hal->get_jml_data().php *** ** Penulis."<a title='Berita Terbaru' href='news....localhost /********************************************************** ** Nama File.

karena kita akan menampilkan menggunakan format per halaman. Jadi jika memakai metode post otomatis halaman berikut dan sebelumnya tidak dapat kita ketahui.back()'><< Kembali</a>\n" ?> Simpan pada direktori iklan\template dengan nama var_utama."<input type='submit' value='CARI'>\n" . Untuk membuatnya klik File > New > PHP.$data[id_berita]." <td class='putih'>Pencarian</td>\n" . $kembali = "<br><a href='javascript: history."<option value='elektronik'>Elektronik</option>\n" . lalu ketik kode berikut. // variabel untuk form pencarian iklan $cari = "<form action='cari."<p><a href='iklan.</p>\n" ."<tr bgcolor='#7cb500'>\n" .</p>\n" .php?proses=view"). } $hal->set_hal().php?proses=view&hari=today'>Iklan hari ini</a></p>\n" ."'>$data[jdl_berita]</a>"."<table border='0' cellpadding='4' width='100%'>\n" ."<option value='komputer'>Komputer</option>\n" ."<tr> \n<td>\n" ."<p>Klik link iklan yang anda inginkan</p>\n" . mysql_close(). Hampir sama dengan sebelumnya variabel-variabel yang kita buat diperlukan oleh semua halaman member."</select>\n" .$hal->show_page("index."<p><a href='iklan.SuperIklan.php'>register</a> dulu.php?proses=full_news&id=" . dan Contoh-contoh Aplikasi 358 ."</font>\n". // tutup koneksi ke MySQL /* variabel untuk link iklan pada sebelah kiri halaman utama ** **************************************************************/ $iklan_sisi = "<table border='0' cellpadding='4' width='100%'>\n" ."<option value='lowongan'>Lowongan</option>\n" ."<option value='internet'>Internet</option>\n" . Next.Masalah Keamanan."Mohon <a href='daftar."<p>Ingin pasang iklan? <br>" ."<option value='lainnya'>Lainnya</option>\n" ."<tr>\n <td>\n" ."<option value='properti'>Properti</option>\n" .= "<tr><td class='kecil'>$link</td></tr>\n". Bab 4 ." <td class='putih'>Iklan</td>\n</tr>\n" . Error Handling. Pada form pencarian kita menggunakan metode get bukan post.= "</table>\n<font size=-2>" . dan Before $daftar_berita . // tentukan nilai Last.localhost while ($data = mysql_fetch_array($hasil)) { $link = "<a class='iklan' href='news." </td>\n</tr>\n</table>\n".php. Selanjutnya kita akan membuat file yang menyimpan variabel untuk halaman member.php?proses=view&hari=kemarin'>Iklan kemarin</a></p>\n" ."</table>\n</form>\n"."<p>Pilih kategori dan keyword lalu tekan CARI untuk melakukan pencarian."<br><br>Keyword: <br><input type='text' name='keyword'>\n" .php' method='get'>\n" ."<option value='otomotif'>Otomotif</option>\n" . $daftar_berita ."Kategori: <select name='kat'>\n" ."<tr bgcolor='#7cb500'>\n" . // buat link kembali berguna jika ada error.

// variabel yang berisi javascript untuk membatasi karakter iklan // isi = nama textarea untuk iklan // sisa = nama textbox untuk sisa karakter $java = "<script language='javascript'> function batas_kar(form_ini) { var max = 500. <a href='. // lakukan query $hasil = mysql_query("SELECT * FROM tb_iklan WHERE username='$_SESSION[member]'")..sisa.value.php'>Pasang Iklan</a> &nbsp :: &nbsp \n" href='email... } </script>".php'>Home</a> &nbsp :: &nbsp \n" href='profil..php'). // id member $not_login = "<p>Anda belum login.isi.SuperIklan...form_ini./index.</p></td></tr>\n".php *** ** Penulis.substring(0.. // tanggal sekarang $login = "<p>Anda login sebagai: <b>$_SESSION[member]</b></p>\n"..php'>Login</a> dulu. $mem_menu = "<a ./login. $_SERVER['PHP_SELF'])) { header('Location: .."<a ..: menyimpan variabel yang dipanggil *** ** semua halaman member *** ***********************************************************/ // cegah pengaksesan langsung dari browser if (eregi('var_utama. // panggil fungsi.php?proses=logout'>Log out</a>\n". dan Contoh-contoh Aplikasi 359 . } include ('.value = panj. // variabel untuk menampilkan daftar iklan yang di-post member tersebut konek_db().value..isi.php'>Email</a> &nbsp :: &nbsp \n" href='index.php')."<tr bgcolor='#7cb500'>\n" .php <?php /********************************************************** ** Nama File." <td class='putih'>IklanKu</td></tr>\n" ."<tr><td><p>Klik masing-masing link iklan untuk mengedit.localhost Script dari file member_var./inc/fungsi.php $tgl = "Hari ini: ".....php'.: Rio Astamal *** ** Tanggal. // kembalikan ke halaman utama exit. if (panj < 0) { form_ini.: member_var.. Error Handling..length.</p>\n". } form_ini.. max). panj = 0."<a href='index.isi..php'>Update Profil</a> &nbsp :: &nbsp \n" href='pasang.. // koneksikan ke mySQL Server $iklanku = "<table border='0' cellpadding='4'>\n" ."<a .Masalah Keamanan.value = form_ini. panj = max .: 16-10-2005 *** ** Penjelasan.show_tgl(). // cek baris if (mysql_num_rows($hasil) == 0) Bab 4 .."<a ..

exit..."<a href='pasang.php').php.show_tgl().: Rio Astamal *** ** Tanggal. // panggil file fungsi../inc/fungsi.php. File ini bertugas menyimpan variabelvariabel yang digunakan pada halaman administrator./index..php'>pasang</a> untuk memasang iklan.. Script dari file admin_var. klik " .= "</table>\n". $kembali = "<br><a href='javascript: history.php'.. PENJELASAN SCRIPT Yang perlu dijelaskan disini mungkin hanya isi dari variabel java saja. Isi dari variabel ini adalah sebuah javascript yang kita gunakan untuk membatasi jumlah karakter padaa textarea.Masalah Keamanan...php *** ** Penulis... } include ('. ?> Simpan pada direktori iklan\template dengan nama member_var. Buat file PHP baru pada PHP DESIGNER 2005 dengan mengklik menu File > New > PHP.: Untuk menyimpan variabel-variabel *** ** pada halaman control panel *** ***********************************************************/ // cegah pengaksesan langsung dari browser if (eregi('admin_var. } } $iklanku .... lalu ketik kode beritkut...SuperIklan."id=$data[id_iklan]'>$data[jdl_iklan]</a></p></td></tr>\n". File terakhir pada direktori ini adalah admin_var. $_SERVER['PHP_SELF'])) { header('Location: . // tanggal sekarang // variabel untuk menu admin $admin_menu = " <table border='0' cellpadding='4' width='100%'> Bab 4 .= "<tr><td><p>Anda belum memasang iklan. dan Contoh-contoh Aplikasi 360 .php <?php /********************************************************** ** Nama File..localhost $iklanku . // buat link kembali berguna jika ada error. else { // tampilkan hasil dengan looping while ($data = mysql_fetch_array($hasil)) { $iklanku .back()'><< Kembali</a>\n".: 17-10-2005 *** ** Penjelasan..php $tgl = "Hari ini: "..</p></td></tr>\n". Nantinya untuk dapat menjalankan fungsi ini nama textarea dan textbox masing masing isi dan sisa. Fungsi batas_kar() pada script diatas memliki satu parameter yaitu form tempat textarea dan textbox untuk sisa karakter. Error Handling.php').: admin_var..php?kat=$data[kategori]&" . Pada script ini kita membuat variabel max yang merupakan jumlah karakter maximal yang dapat ditampung pada textarea...= "<tr><td><p><a class='iklan' href='edit.

Saya rasa tidak ada yang baru pada script ini sehingga tidak perlu saya jelaskan.. dan Contoh-contoh Aplikasi .localhost <tr bgcolor='#7cb500'> <td class='putih'>Admin Menu</td></tr> <tr><td> <p><a href='iklan./inc/class_skin.. Selanjutnya kita akan mulai membangun control panelnya terlebih dahulu.php'>Manaje Member</a></p> <p><a href='berita..php').: Rio Astamal *** ** Tanggal..php'>Email Member</a></p> <p><a href='index.. <a href='index... Akhir dari file yang berada pada direktori iklan\template... File ini berfungsi menyediakan form login dan halaman utama..: 17-10-2005 *** ** Penjelasan. Script dari file index.. ?> Simpan pada direktori iklan\template dengan nama admin_var. File-file ini kita letakkan pada direktori admin.php'>Manaje Berita</a></p> <p><a href='email.php.php').Masalah Keamanan.php.php?proses=logout'>Logout</a></p> </td></tr> </table>\n".. // variabel untuk menampilkan teks berjalan $anim_teks = " <marquee scrolldelay='50' scrollamount='2'><<< Control panel superiklan. $proses = filter_str($proses).php <?php /********************************************************** ** Nama File..php'>Manaje Iklan</a></p> <p><a href='member.. // koneksikan ke database 361 Bab 4 .php *** ** Penulis. // filter string konek_db(). // panggil file-file yang diperlukan include ('.: index. // varibel untuk menampilkan pesan belum login $not_login = "<p>Anda belum login. include ('. if ($proses == '') $proses = 'login'.php')../inc/class_waktu....'><< Kembali</a>\n". File pertama yang akan kita buat pada direktori ini adalah index. include ('.back().: Untuk menmapilkan menu atau form *** ** login untuk admin *** ***********************************************************/ session_start(). Klik menu File > New > PHP kemudian ketik kode berikut.php'>Login</a> dulu</p>\n".localhost </marquee>\n".SuperIklan.... Error Handling.. // variabel untuk menampilkan link kembali $kembali = "<br><a href='javascript: history. // dapatkan data dari URL $proses = $_GET['proses']./template/admin_var.

// enkripsi password Bab 4 . // panggil class waktu $waktu = new waktu. // kosongkan variabel $admin_menu $admin_menu = ''. $admin = " <form action='index. /************/ /*******************/ case 'proses_login': /*******************/ $username = filter_str($_POST['username']).php?proses=proses_login' method='post'> <table border='0' cellpadding='4'> <tr bgcolor='#7cb500' alignt='center'> <td colspan='2' class='putih'>Admin Login</td></tr> <tr><td>Username: </td><td><input type='text' name='username'></td></tr> <tr><td>Password: </td><td><input type='password' name='password'></td></tr> <tr><td></td><td><input type='submit' value='L O G I N'></td></tr> <tr bgcolor='#7cb500' height='20'><td colspan='2'></td></tr> </table> </form>\n\n". } else { $admin = " <h2>Selamat datang di control panel .= "<p>Error: gagal menghapus iklan pada database. localhost</p>\n". Error Handling. // $lama_iklan di konfig. } break. // mode pengurangan $waktu_itu = $waktu->set_tgl(1.superiklan. $password = filter_str($_POST['password']). dan Contoh-contoh Aplikasi 362 . // cek status if (!$hasil) $admin .localhost .<br>\n$kembali</p>\n".localhost</h2> <p>Silahkan pilih menu disamping untuk memanaje website superiklan.Masalah Keamanan. $lama_iklan). // kosongkan nilai variabel $admin_menu $admin_menu = ''.SuperIklan.login</h2>\n".php // hapus iklan yang dipost lebih dari $lama_iklan $hasil = mysql_query("DELETE FROM tb_iklan WHERE timestamp<$waktu_itu"). $waktu->set_mode(0). $password = balik_md5($password).localhost // handel setiap proses dengan switch dan case switch ($proses) { /************/ case 'login': /************/ // cek apakah admin sudah login atau belum if (!cek_session('admin')) { $judul = "<h2>superiklan. $waktu->set_date().

/*************/ /********************************/ case '__add_admin_to_database__': /********************************/ /* case ini berfungsi untuk memasukkan account administrator ke database ini dikarenakan fungsi yang kita gunakan login adalah balik_md5() dan untuk menghasilkan string chiper ini hanya bisa dilakukan lewat script PHP bukan pada MySQL untuk memanggil fungsi ini harus diketikkan langsung pada address bar index.<br>\n$kembali</p>". $username.php'>disini</a>" ." untuk masuk admin area</p>\n". // kosongkan menu $admin = "<p>Anda telah logout dari sistem. } break. // lakukan query INSERT untuk memasukkan account ke database $hasil = mysql_query("INSERT INTO admin VALUES('$username'. } else { $admin_menu = ''.php'>Login</a> dulu. // buatkan session karena berhasil login $_SESSION['admin'] = $username.SuperIklan. // kosongkan menu $admin = "<p>Tidak bisa logout. $password)) $admin = "<p>Username atau password salah."sudah dimasukkan. Bab 4 . Klik <a href='index.php?proses=__add_admin_to_database__ lalu ENTER untuk mencegah eksploitasi sistem. dan Contoh-contoh Aplikasi 363 . <br>\n$kembali". if (!$hasil) $admin = "Error: Gagal memasukkan ke database. else { $admin = "<p>Login berhasil. /*************/ /*************/ case 'logout': /*************/ if (!logout('admin')) { $admin_menu = ''. '$password')").localhost // cek kecocokan data dengan fungsi login if (!login('admin'.php'>Login</a>" . kita tidak menyediakan form untuk menambahkan account admin ke database melainkan langsung melakukan query */ // kosongkan nilai $admin_menu $admin_menu = ''. <a href='index.</p>\n". Mungkin account " . <a href='index.Masalah Keamanan. // tentukan username dan password yang diinginkan $username = 'admin'. Error Handling. } break. $password = balik_md5('__pas123__')." kembai.</p>\n".

php'>Login</a>\n".Masalah Keamanan.26: Halaman utama admin area PENJELASAN SCRIPT Sebagian besar dari script ini sudah sering kali kita gunakan. Error Handling. $judul). $waktu->set_mode(0). $admin).php.26. $admin_menu). Lihat cuplikan script dibawah ini. Jika admin berhasil login secara otomatis query penghapusan akan dilakukan.. // mode pengurangan $waktu_itu = $waktu->set_tgl(1. // tutup koneksi $skin = new skin. ?> Simpan pada direktori iklan\admin dengan nama index./template/skin_utama. $skin->ganti_tag('{UTAMA}'. Gambar 4. Namun ada bagian yang baru yaitu penggunakan class waktu untuk menghapus iklan yang sudah 1 minggu. $skin->ganti_tag('{SISI1}'. $waktu = new waktu.localhost else $admin = "Account untuk administrator berhasil dimasukkan ke database. // buat objek skin $skin->ganti_skin('. $skin->ganti_tampilan(). $skin->ganti_tag('{SISI2}'. $tgl). dan Contoh-contoh Aplikasi 364 . $waktu->set_date(). Output dari script diatas dapat akan terlihat seperti gambar 4.SuperIklan. $anim_teks). <br>" . ''). /**********/ } // akhir dari switch mysql_close(). Untuk membukanya arahkan browser anda ke http://localhost/webmaster/Bab4/hari-21-22-23/iklan/admin/.php'). break. Bab 4 . $skin->ganti_tag('{MENU}'."<a href='index. $skin->ganti_tag('{JUDUL}'. $lama_iklan). $skin->ganti_tag('{SEKARANG}'.

// koneksikan ke database // cek apakah admin sudah login atau belum if (!cek_session('admin')) $iklan = $not_login.....localhost Pertama kita membuat objek waktu yang kita simpan pada variabel $waktu./template/admin_var.: Untuk memanaje iklan *** ***********************************************************/ session_start()... Ketiga. if ($proses == '') $proses = 'view'.. Yang isinya ada pada file konfig. include ('. Query diatas akan menghapus iklan yang dipost lebih dari 7 hari yang lalu. // $not_login ada di admin_var... Setelah itu muncul daftar judul iklan.php').php *** ** Penulis.. Disini admin dapat memilih kategori iklan yang ingin ditampilkan. File berikutnya yang akan kita buat adalah file yang bertugas memanaje iklan yang dipost member...... $hasil = mysql_query("DELETE FROM tb_iklan WHERE timestamp<$waktu_itu"). Error Handling.php').php else { // handel setiap proses dengan switch dan case switch ($proses) { /***********/ case 'view': /***********/ 365 Bab 4 . Untuk membuat file ini buat file PHP baru pada PHP DESIGNER 2005. Kemudian kita memanggil metode set_date() untuk mendapatkan tanggal. Kemudian kita membuat variabel $waktu_itu yang berisi detik $lama_hari yang lalu.php'). Script dari file iklan.php defaultnya adalah 7 hari. dan Contoh-contoh Aplikasi .Masalah Keamanan..php <?php /********************************************************** ** Nama File.. // dapatkan data dari URL $proses = $_GET['proses'].: Rio Astamal *** ** Tanggal. ketik listing kode dibawah ini. pengirim dan tanggal posting. Mengapa kita menggunakan detik? Mudah saja itu dikarenakan jika kita menggunakan tanggal biasa kita tidak bisa melakukan perbandingan ataupun kalkulasi ketika melakukan query SQL./inc/class_halaman.php')./inc/class_skin../inc/konfig...: index. kita menentukan modenya pengurangan karena kita akan menghapus iklan yang dipost pada harihari sebelumnya menggunakan set_mode(0). // filter string konek_db()... bulan dan sebagainya. include ('. $proses = filter_str($proses).: 17-10-2005 *** ** Penjelasan..SuperIklan. include ('. // panggil file-file yang diperlukan include ('.

SuperIklan.localhost

$judul = "<h2>Pilih Kategori Iklan</h2>\n"; $iklan = " <p>Pilih kategori iklan yang ingin anda edit.</p> <ul> <p><li><a href='iklan.php?proses=edit&kat=komputer'>Komputer</a></li></p> <p><li><a href='iklan.php?proses=edit&kat=internet'>Internet</a></li></p> <p><li><a href='iklan.php?proses=edit&kat=elektronik'>Elektronik</a></li></p> <p><li><a href='iklan.php?proses=edit&kat=lowongan'>Lowongan</a></li></p> <p><li><a href='iklan.php?proses=edit&kat=otomotif'>Otomotif</a></li></p> <p><li><a href='iklan.php?proses=edit&kat=properti'>Properti</a></li></p> <p><li><a href='iklan.php?proses=edit&kat=lainnya'>Lainnya</a></li></p> </ul>"; break; /************/ /***********/ case 'edit': /***********/ // dapatkan data dari URL $kat = filter_str($_GET['kat']); $page = filter_str($_GET['page']); if ($page == '') $page = 0; $judul = "<h2>Daftar iklan untuk kategori: $kat</h2>\n"; // panggil class halaman $hal = new halaman; // buat objek halaman $hal->set_tabel('tb_iklan'); // pilih tabel tb_iklan $hal->set_page($page); // data halaman yang dihandel $pph = $hal->set_pph($a_iph); // iklan per halaman (konfig.php) // lakukan query $hal->query_SQL(2, 'kategori', $kat); // lakukan query $jml_iklan = $hal->get_jml_data(); // dapatkan jumlah berita $hal->get_jml_hal(); // dapatkan jumlah halaman // cek jumlah iklan if ($jml_iklan == 0) $iklan = "<p>Tidak aka iklan untuk kategori: $kat<br>$kembali</p>\n"; else { $record = $hal->get_record(); // dapatkan jumlah record $hasil = $hal->query_SQL(3, 'kategori', $kat, 'id_iklan'); // buat tabel dan form $iklan = " <p>Jumlah iklan untuk kategori komputer: $jml_iklan</p> <form action='iklan.php?proses=hapus' method='post'> <table border='0' cellpadding='4' width='100%'> <tr bgcolor='#7cb500' class='putih'> <td>Judul Iklan</td><td>Posted By</td><td>Posted On</td> <td align='center'>Hapus?</td></tr>\n"; // lakukan looping untuk menampilkan iklan while ($data = mysql_fetch_array($hasil)) { $checkbox = "<input type='checkbox' name='hapus[]' value='$data[id_iklan]'>"; $iklan .= "
Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

366

SuperIklan.localhost

<tr> <td>$data[jdl_iklan]</td><td>$data[username]</td><td>$data[tgl_post]</td> <td align='center'>$checkbox</td> </tr>\n"; } $hal->set_hal(); // tentukan nilai next, before dan last

// tutup tabel $iklan .= " <tr bgcolor='#7cb500' height='20'><td colspan='3'></td> <td><input type='submit' value='HAPUS'></td></tr> </table>\n</form>\n" // tampilkan link nomor halaman .$hal->show_page("iklan.php?proses=edit&kat=$kat"); } break; /**************/ /************/ case 'hapus': /************/ $hapus = $_POST['hapus']; // hapus bertipe array if ($hapus == '') $iklan = "<p>Error: Anda belum memilih item.<br>\n$kembali</p>\n"; else { // gunakan looping untuk menghapus setiap item foreach ($hapus as $sampah) { $hasil = mysql_query("DELETE FROM tb_iklan WHERE id_iklan=$sampah"); // cek status if (!$hasil) $iklan = "Error: gagal menghapus iklan dengan id: $sampah.<br>$kembali\n"; else $iklan = "Iklan dengan id: $sampah berhasil dihapus.<br>$kembali\n"; } } break; /****************/ } // akhir dari switch } // akhir dari else

mysql_close(); // tutup koneksi $skin = new skin; // buat objek skin $skin->ganti_skin('../template/skin_utama.php'); $skin->ganti_tag('{SEKARANG}', $tgl); $skin->ganti_tag('{JUDUL}', $judul); $skin->ganti_tag('{UTAMA}', $iklan); $skin->ganti_tag('{MENU}', $anim_teks); $skin->ganti_tag('{SISI1}', $admin_menu); $skin->ganti_tag('{SISI2}', ''); $skin->ganti_tampilan(); ?>

Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

367

SuperIklan.localhost

Simpan pada direkori iklan\admin dengan nama iklan.php. Jalankan pada browser anda output dari fileini akan terlihat seperti gambar 4.27

Gambar 4.27: Output file iklan.php pada admin area PENJELASAN SCRIPT File ini memiliki beberapa case yaitu view, edit, dan hapus. Case view hanya berfungsi menampilkan link semua kategori iklan. Dan untuk case edit, case ini berfungsi untuk menampilkan daftar iklan yang telah dipost pada kategori yang dipilih admin. Anda dapat menentukan berapa banyak daftar iklan yang ditampilkan dengan per halaman dengan mengedit variabel $_iph pada file konfig.php. Untuk menampilkan daftar iklan serta link navigasinya kita gunakan class halaman. Seperti yang sudah pernah kita kerjakan pada proyek sebelumnya. Pertama-tama kita memanggil class halaman dengan keyword new. Kemudian kita tentukan tabel yang kita gunakan karena akan mendapatkan daftar iklan maka pada metode set_tabel() kita isikan tb_iklan seperti berikut. $hal->set_tabel('tb_iklan'); // pilih tabel tb_iklan $hal->set_page($page); // data halaman yang dihandel $pph = $hal->set_pph($a_iph); // iklan per halaman (konfig.php) Kedua kita tentukan variabel data halaman yang kita handel yaitu $page. Ketiga kita tentukan berapa daftar iklan yang kita tampilkan per halaman. Pada kode diatas kita menggunakan isi dari variabel $a_iph yang defaultnya adalah 2. Setelah itu kita lakukan query menggunakan metode query_SQL() untuk menentukan jumlah halaman dan banyaknya data yang ditampilkan. $hal->query_SQL(2, 'kategori', $kat); // lakukan query $jml_iklan = $hal->get_jml_data(); // dapatkan jumlah berita $hal->get_jml_hal(); // dapatkan jumlah halaman metode query_SQL(2, 'kateogi', $kat) sama dengan query berikutnya
Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

368

SuperIklan.localhost

SELECT * FROM tb_iklan WHERE kategori='$kat'; Isi dari variabel $jml_iklan merupakan jumlah data/baris yang dikembalikan mysql dari query pada metode query_SQL() sebelumnya. Metode selanjutnya yaitu get_jml_hal() digunakan untuk mendapatkan jumlah halaman. Kemudian kita lakukan pengecekan kondisi dari jumlah data yang dikembalikan jika nol tidak usah melakukan query lagi, kangsung saja tampilkan pesan. Sebaliknya jika jumlah data tidak sama dengan nol maka lakukan query ulang. Namun sebelumnya panggil dulu metode get_record() agar hasil query valid. $record = $hal->get_record(); // dapatkan jumlah record $hasil = $hal->query_SQL(3, 'kategori', $kat, 'id_iklan'); Kemudian kita buat header tabel dan form untuk menampilkan judul, pengirim, tanggal posting dan hapus. Untuk menampilkan daftar iklan seperti biasa kita gunakan looping while. Setelah looping kita kan mencetak nomor link halaman. Untuk itu kita panggil metode set_hal() untuk memberi nilai pada before, next dan last. Dan yang terakhir adalah mencetak link halaman dengan metode show_page(view.php?proses=view). Isi parameter pada metode show_page() harus sesuai dengan halaman yang sedang dibuka. Case yang terakhir yaitu hapus. Tidak ada yang baru pada case ini yaitu hanya mengambil data yang berbentuk array. Kemudian kita gunakan looping foreach untuk menghapus setiap item. Berikutnya file yang akan kita buat bertugas untuk menghapus member yang telah bergabung. Untuk membuatnya klik File > New > PHP pada PHP DESIGNER 2005 kemudian ketik kode berikut. Script dari file member.php <?php /********************************************************** ** Nama File.....: member.php *** ** Penulis.......: Rio Astamal *** ** Tanggal.......: 17-10-2005 *** ** Penjelasan....: Untuk memanaje member *** ***********************************************************/ session_start(); // panggil file-file yang diperlukan include ('../inc/class_skin.php'); include ('../inc/class_halaman.php'); include ('../inc/konfig.php'); include ('../template/admin_var.php'); // dapatkan data dari URL $proses = $_GET['proses']; if ($proses == '') $proses = 'view'; $proses = filter_str($proses); // filter string konek_db(); // koneksikan ke database

// cek apakah admin sudah login atau belum if (!cek_session('admin')) $member = $not_login;
Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

369

SuperIklan.localhost

else { // handel setiap proses dengan switch dan case switch ($proses) { /***********/ case 'view': /***********/ // dapatkan data dari URL $page = filter_str($_GET['page']); if ($page == '') $page = 0; $judul = "<h2>Daftar Member superiklan.localhost</h2>\n"; // panggil class halaman $hal = new halaman; // buat objek halaman $hal->set_tabel('member'); // pilih tabel tb_iklan $hal->set_page($page); // data halaman yang dihandel $pph = $hal->set_pph($a_mph); // member per halaman // lakukan query $hal->query_SQL(1); // lakukan query $jml_member = $hal->get_jml_data(); // dapatkan jumlah berita $hal->get_jml_hal(); // dapatkan jumlah halaman // cek jumlah member if ($jml_member == 0) $iklan = "<p>Tidak ada member yang register. <br></p>$kembali"; else { $record = $hal->get_record(); // dapatkan jumlah record $hasil = $hal->query_SQL("SELECT * FROM member LIMIT $record, $pph"); // buat tabel dan form $member = " <p>Total member yang bergabung: $jml_member orang.</p> <form action='member.php?proses=hapus' method='post'> <table border='0' cellpadding='4' width='130%'> <tr bgcolor='#7cb500' class='putih'> <td>Username</td><td>Nama</td><td>Email</td><td>Kota</td> <td>Telpon</td><td align='center'>Hapus?</td></tr>\n"; // gunakan looping untuk menampilkan member while ($data = mysql_fetch_array($hasil)) { $checkbox = "<input type='checkbox' name='hapus[]' value='$data[username]'>"; $member .= " <tr> <td>$data[0]</td><td>$data[2]</td><td>$data[3]</td><td>$data[5]</td> <td>$data[6]</td><td align='center'>$checkbox</td> </tr>\n"; } $hal->set_hal(); // beri nilai untuk next, before dan last

// tutup tabel $member .= " <tr bgcolor='#7cb500' height='20'><td colspan='5'></td> <td><input type='submit' value='H A P U S'></td></tr>
Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

370

SuperIklan.localhost

</table> \n</form>\n\n" // tampilkan link nomor halaman .$hal->show_page("member.php?proses=view"); } break; /************/ /************/ case 'hapus': /************/ $hapus = $_POST['hapus']; // hapus bertipe array if ($hapus == '') $member = "<p>Error: Anda belum memilih item.<br>\n$kembali</p>\n"; else { // gunakan looping untuk menghapus setiap item foreach ($hapus as $sampah) { $hasil = mysql_query("DELETE FROM member WHERE username='$sampah'"); // cek status if (!$hasil) $member = "Error: Username $sampah tidak dapat dihapus.<br>$kembali\n"; else $member = "Username $sampah berhasil dihapus.<br>$kembali\n"; } } break; /****************/ } // akhir dari switch } // akhir dari else mysql_close(); // tutup koneksi $skin = new skin; // buat objek skin $skin->ganti_skin('../template/skin_utama.php'); $skin->ganti_tag('{SEKARANG}', $tgl); $skin->ganti_tag('{JUDUL}', $judul); $skin->ganti_tag('{UTAMA}', $member); $skin->ganti_tag('{MENU}', $anim_teks); $skin->ganti_tag('{SISI1}', $admin_menu); $skin->ganti_tag('{SISI2}', ''); $skin->ganti_tampilan(); ?> Simpan pada direktori iklan\admin dengan nama member.php. Output dari file ini ditunjukkan oleh gambar 4.28. Tidak ada yang baru pada kode ini, dan strukturnya masih masih sama dengan kode sebelumnya.

Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

371

SuperIklan.localhost

Gambar 4.28: Output dari file member.php Lanjut...!, Selanjutnya kita akan membuat file yang bertugas menambah, mengedit dan menghapus berita. Sama dengan sebelumnya struktur dari file ini juga tidak banyak berubah. Pada PHP DESIGNER 2005 klik File > New > PHP, lalu klik kode berikut. Script dari file berita.php <?php /********************************************************** ** Nama File.....: berita.php *** ** Penulis.......: Rio Astamal *** ** Tanggal.......: 17-10-2005 *** ** Penjelasan....: Untuk memanaje berita *** ***********************************************************/ session_start(); // panggil file-file yang diperlukan include ('../inc/class_skin.php'); include ('../inc/class_halaman.php'); include ('../inc/konfig.php'); include ('../template/admin_var.php'); // dapatkan data dari URL $proses = $_GET['proses']; if ($proses == '') $proses = 'view'; $proses = filter_str($proses); // filter string konek_db(); // koneksikan ke database

// cek apakah admin sudah login atau belum if (!cek_session('admin'))
372

Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

SuperIklan.localhost

$berita = $not_login; else { // handel setiap proses dengan switch dan case switch ($proses) { /***********/ case 'view': /***********/ // dapatkan data dari URL $page = filter_str($_GET['page']); if ($page == '') $page = 0; $judul = "<h2>Daftar Berita</h2>\n"; // panggil class halaman $hal = new halaman; // buat objek halaman $hal->set_tabel('tb_berita'); // pilih tabel tb_iklan $hal->set_page($page); // data halaman yang dihandel $pph = $hal->set_pph($a_bph); // berita per halaman (konfig.php) // lakukan query $hal->query_SQL(1); // lakukan query $jml_berita = $hal->get_jml_data(); // dapatkan jumlah berita $hal->get_jml_hal(); // dapatkan jumlah halaman // cek jumlah member if ($jml_berita == 0) $berita = "<p>Tidak ada member yang register. <br></p>$kembali\n"; else { $record = $hal->get_record(); // dapatkan jumlah record $hasil = $hal->query_SQL("SELECT * FROM tb_berita ORDER BY id_berita DESC LIMIT $record, $pph"); // buat tabel dan form $berita = " <p>Total terdapat: $jml_berita berita.</p> <p><a href='berita.php?proses=tambah'>Tambah Berita</a></p> <form action='berita.php?proses=hapus' method='post'> <table border='0' cellpadding='4' width='100%'> <tr bgcolor='#7cb500' class='putih'> <td>Judul Berita</td><td>Tanggal Post</td><td>Edit?</td> <td align='center'>Hapus?</td> </tr>\n"; // tampilkan berita dengan looping while ($data = mysql_fetch_array($hasil)) { // link untuk edit berita $link = "<a href='berita.php?proses=edit&id=$data[0]'>Edit</a>"; $checkbox = "<input type='checkbox' name='hapus[]' value='$data[0]'>"; $berita .= " <tr> <td>$data[1]</td><td>$data[3]</td><td>$link</td> <td align='center'>$checkbox</td> </tr>\n"; }

Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

373

SuperIklan.localhost

$hal->set_hal();

// beri nilai untuk Last, Before, Next

// tutup tabel $berita .= " <tr bgcolor='#7cb500' height='20'><td colspan='3'></td> <td><input type='submit' value='H A P U S'></td></tr> </table>\n</form>\n\n" .$hal->show_page("berita.php?proses=view"); } break; /***********/ /************/ case 'hapus': /************/ $hapus = $_POST['hapus']; // hapus bertipe array

if ($hapus == '') $berita = "<p>Error: Anda belum memilih item. <br>\n$kembali</p>\n"; else { // gunakan looping untuk menghapus setiap item yang dicek foreach ($hapus as $sampah) { $hasil = mysql_query("DELETE FROM tb_berita WHERE id_berita=$sampah"); // cek status if (!$hasil) $berita = "Error: Berita dengan id: $sampah tidak dapat dihapus.<br>$kembali\n"; else $berita = "Berita dengan id: $sampah berhasil dihapus.<br>$kembali\n"; } } break; /************/ /***********/ case 'edit': /***********/ $id = filter_str($_GET['id']); $judul = "<h2>Edit Berita</h2>\n"; // lakukan query $hasil = mysql_query("SELECT * FROM tb_berita WHERE id_berita=$id"); $data = mysql_fetch_array($hasil); // pecah menjadi array $jdl = stripslashes($data['jdl_berita']); // judul iklan // gunakan htmlspecialchars() agar tag-tag HTML tidak diproses $isi = htmlspecialchars(stripslashes($data['isi_berita'])); // isi berita $tgl = stripslashes($data['tgl_berita']); // tanggal // buat form dan tabel $berita = " <p>Silahkan edit berita lalu tekan EDIT untuk memasukkan perubahan.</p> <form action='berita.php?proses=proses_edit' method='post'> <table border='0' cellpadding='4'> <tr bgcolor='#7cb500' align='center'> <td class='putih' colspan='2'>Form Edit Berita</td></tr> <tr>
Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

374

SuperIklan.localhost

<td>Judul Berita: </td> <td><input type='text' name='jdl' size='50' value='$jdl'></td></tr> <tr> <td>Isi Berita: <td><textarea name='isi' rows='10' cols='50'>$isi</textarea></td></tr> <tr> <td>Tanggal: </td> <td><input type='text' name='tgl' value='$tgl'></td></tr> <tr> <td></td><td><input type='submit' value='E D I T'></td></tr> <tr bgcolor='#7cb500' height='20'><td colspan='2'></td></tr> </table> <input type='hidden' name='id' value='$id'> </form>\n\n"; break; /***********/ /******************/ case 'proses_edit': /******************/ // ambil data yang di-post $id = $_POST['id']; $jdl = $_POST['jdl']; $isi = $_POST['isi']; $tgl = $_POST['tgl']; // cek apakah masih ada field yang kosong if (!cek_field($_POST)) $berita = "<p>Error: Masih ada field yang kosong.<br>\n$kembali</p>\n"; else { // lakukan query untuk mengupdate berita $hasil = mysql_query("UPDATE tb_berita SET jdl_berita='$jdl', isi_berita='$isi', tgl_berita='$tgl' WHERE id_berita=$id"); // cek status if (!$hasil) $berita = "<p>Error: Gagal mengupdate berita.<br>\n$kembali</p>\n"; else $berita = "<p>Berita berhasil diupdate.<br>\n$kembali</p>\n"; } break; /**************/ /*************/ case 'tambah': /*************/ $judul = "<h2>Tambah Berita</h2>\n"; $tgl = date('d-m-Y, H:i'); // tanggal sekarang // buat form dan tabel $berita = " <p>Isi semua field dibawah ini untuk menambah berita.</p> <form action='berita.php?proses=proses_tambah' method='post'> <table border='0' cellpadding='4'> <tr bgcolor='#7cb500' align='center'> <td colspan='2' class='putih'>Form Tambah Berita</td></tr> <tr> <td>Judul berita: </td> <td><input type='text' name='jdl' size='50'></td></tr> <tr>
Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

375

SuperIklan.localhost

<td>Isi Berita: </td> <td><textarea name='isi' rows='10' cols='50'></textarea></td></tr> <tr> <td>Tanggal: </td> <td><input type='text' name='tgl' value='$tgl'></td></tr> <tr> <td></td><td><input type='submit' value='TAMBAH'></td></tr> <tr bgcolor='#7cb500' height='20'><td colspan='2'></td></tr> </table> </form>\n\n"; break; /*************/ /********************/ case 'proses_tambah': /********************/ // ambil data yang dipost $jdl = addslashes($_POST['jdl']); $isi = addslashes($_POST['isi']); $tgl = addslashes($_POST['tgl']);

// tambahkan addslashes()

// cek apakah masih ada field yang kosong if (!cek_field($_POST)) $berita = "<p>Error: Masih ada field yang kosong.<br>\n$kembali</p>\n"; else { // lakukan query SQL untuk memasukkan ke database $hasil = mysql_query("INSERT INTO tb_berita VALUES (0, '$jdl', '$isi', '$tgl')"); // cek status if (!$hasil) $berita = "<p>Error: Gagal memasukkan berita kedatabase.<br>\n$kembali</p>\n"; else $berita = "<p>Berita berhasil dimasukkan ke database.<br>\n$kembali</p>\n"; } break; /********************/ } } // akhir dari switch // akhir dari else

mysql_close(); // tutup koneksi $skin = new skin; // buat objek skin $skin->ganti_skin('../template/skin_utama.php'); $skin->ganti_tag('{SEKARANG}', $tgl); $skin->ganti_tag('{JUDUL}', $judul); $skin->ganti_tag('{UTAMA}', $berita); $skin->ganti_tag('{MENU}', $anim_teks); $skin->ganti_tag('{SISI1}', $admin_menu); $skin->ganti_tag('{SISI2}', ''); $skin->ganti_tampilan(); ?> Simpan pada direktori iklan\admin dengan nama berita.php. Gambar 4.29 menunjukkan output dari file ini saat mengedit berita.

Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

376

.php').php... // dapatkan data dari URL $proses = $_GET['proses']....localhost....localhost *** ***********************************************************/ session_start()./template/admin_var.php').: Untuk mengirim email ke semua member *** ** superiklan.php saat menambah daftar berita File yang terakhir utuk direkori ini adalam email. File ini berfungsi untuk mengirim email ke semua member superiklan. dan Contoh-contoh Aplikasi 377 . // koneksikan ke database // handel setiap data dengan switch dan case Bab 4 ..Masalah Keamanan.: 17-10-2005 *** ** Penjelasan.. ketik listing kode berikut.SuperIklan..: email..: Rio Astamal *** ** Tanggal. $proses = filter_str($proses)./inc/class_skin.php <?php /********************************************************** ** Nama File. Error Handling... // panggil file-file yang diperlukan include ('.. // filter string konek_db().localhost Gambar 4. include ('.. if ($proses == '') $proses = 'form'.. Dengan ini admin dapat memberitahukan pemberitahuan atau promosi dan lain sebagainya ke seluruh member... Buat file baru pada PHP DESIGNER 2005 klik menu File > New > PHP. Script dari file email.29: Tampilan file berita.php *** ** Penulis..

// lakukan looping untuk mengirim ke semua alamat while ($data = mysql_fetch_array($hasil)) { $to = $data[0]. break. $subject. $isi. } break. } $send_mail = "<p>Email telah terkirim. // alamat email anda // cek field if (!cek_field($_POST)) $send_mail = "<p>Error: Masih ada field yang kosong.php?proses=proses_form' method='post'> <table border='0' cellpadding='4'> <tr bgcolor='#7cb500' align='center'> <td class='putih' colspan='2'>Form Send Mail</td></tr> <tr><td>Subject: </td> <td><input type='text' name='subject' size='60'></td></tr> <tr><td>Isi/body: </td> <td><textarea name='isi' rows='10' cols='60'></textarea></td></tr> <tr><td></td><td><input type='submit' value='K I R I M'></td></tr> <tr bgcolor='#7cb500' height='20'><td colspan='2'></td></tr> </table> </form>\n\n". $isi = $_POST['isi'].<br>\n</p>\n". /******************/ } // akhir dari switch Bab 4 . Tekan KIRIM untuk mulai mengirim email</p> <form action='email. $from).SuperIklan.localhost switch ($proses) { /***********/ case 'form': /***********/ $judul = "<h2>Form Send Mail</h2>".Masalah Keamanan. // alamat email masing-masing member // jika anda tidak memiliki program mail server atau anda belum di server // sebenarnya beri komentar pada fungsi mail berikut mail ($to. else { // lakukan query untuk mendaftar alamat email member $hasil = mysql_query("SELECT email FROM member"). // buat tabel dan form $send_mail = " <p>Silahkan isikan subject dan isi email. /************/ /******************/ case 'proses_form': /******************/ // ambil data yang di-post $subject = $_POST['subject']. dan Contoh-contoh Aplikasi 378 .</p>". Error Handling. $from = "From: noreply@localhost".

Klik menu File > New > PHP pada PHP DESIGNER 2005.localhost mysql_close()..php.. $skin->ganti_tag('{MENU}'..... ?> Simpan pada direktori iklan\admin dengan nama email. '')..php')... $skin->ganti_tampilan(). $send_mail). $skin->ganti_tag('{UTAMA}'. $judul)..Masalah Keamanan.: Rio Astamal *** ** Tanggal. daftar iklan. $anim_teks). Script dari file index. $skin->ganti_tag('{SEKARANG}'./template/skin_utama. Dari halaman ini user juga dapat langsung memilih daftar iklan untuk hari ini atau kemarin..php *** ** Penulis.30: Form untuk mengirim email ke seluruh member Akhir dari file yang berada pada direkori iklan\admin. Juga user dapat melakukan pencarian iklan pada halaman ini karena pada sisi kiri halaman kita sediakan form pencarian iklan... $tgl). dan Contoh-contoh Aplikasi 379 .. Seperti biasa kita akan membuat file utama untuk setiap direktori yaitu index. form registrasi dan sebagainya.php <?php /********************************************************** ** Nama File..30. Output dari file ini ditunjukkan oleh gambar 4.SuperIklan. Error Handling. // buat objek skin $skin->ganti_skin('. $skin->ganti_tag('{JUDUL}'. $skin->ganti_tag('{SISI2}'. $admin_menu).. Gambar 4. Untuk selanjutnya kita akan bekerja pada direktori paling atas yaitu iklan. $skin->ganti_tag('{SISI1}'.: 15-10-2005 *** Bab 4 ..php. // tutup koneksi $skin = new skin. File ini berfungsi untuk menampilkan halaman utama ketika user mengunjungi. Pada direktori inilah kita tempatkan file yang menampilkan daftar berita.: index.

php'>Registrasi</a>\n". Kami sama sekali tidak memungut \n" . Bab 4 . Output dari file ini ditunjukkan oleh gambar 4.php'). Kategori-kategori tersebut antara lain \n" .</p>\n" .localhost anda tidak perlu menjadi \n" . include ('template/var_utama. $tgl). Akan tetapi jika anda ingin memasang iklan."sepeserpun dari anda dalam pemasangan iklan. dan Contoh-contoh Aplikasi 380 . $skin->ganti_tag('{JUDUL}'.SuperIklan. $skin->ganti_tag('{SISI2}'. $judul)."kali dalam seminggu. Untuk menjadi member sama sekali gratis!."kami.php.php. $judul = "<h2>Selamat Datang di superiklan. Kami juga menyediakan sarana iklan lewat email."ini secara gratis!."<a href='daftar. Namun untuk email anda hanya dapat mengirimnya satu \n" . // tentukan file template $skin->ganti_tag('{SEKARANG}'. maka anda harus registrasi dulu menjadi \n" . $utama). $utama = "<p>Website superiklan. Artinya anda dapat memasang iklan di website \n" ."mengirim email ke seluruh member.php'). $skin->ganti_tag('{MENU}'."<p>Anda dapat memilih kategori yang menurut anda cocok dengan produk \n" . Error Handling..$cari).: menampilkan halaman utama dari *** ** website superiklan. $menu). include ('inc/fungsi. Tidak ada yang istimewa pada file ini.. $skin->ganti_tag('{UTAMA}'.. Variabel $iklan_sisi dan $cari kita panggil dari file var_utama."<li>Otomotif</li><li>Properti</li>\n<li>Lainnya</li>\n</ul>\n</p>\n" ."yang ingin anda pasarkan. Jadi anda dapat \n" . $iklan_sisi.localhost merupakan website penyedia layanan iklan \n" ."<p>Untuk melihat iklan yang ada di website superiklan. // panggil class skin $skin = new skin.31 Untuk sementara jika anda mengklik halaman-halaman lain maka muncul error karena file tersebut belum kita buat.localhost ** Penjelasan.php'). $daftar_berita).</p>" . // buat objek skin $skin->ganti_skin('template/skin_utama."<ul>\n<li>Internet</li>\n<li>Komputer</li>\n<li>Elektronik\n<li>Lowongan </li>\n" .localhost *** ***********************************************************/ // panggil file-file yang diperlukan include ('inc/class_skin.localhost</h2>\n"."Klik link dibawah ini untuk registrasi<br><br>\n" .php'). ?> Simpan pada direktori iklan dengan nama index.Masalah Keamanan. $skin->ganti_tampilan()."menjadi member kami."yang memberikan layanan terbaik bagi membernya. $skin->ganti_tag('{SISI1}'. Ini untuk menghindari terjadinya SPAM.

. include ('inc/fungsi...: menampilkan form login member dan *** ** memprosesnya *** ***********************************************************/ session_start().php'). // karena berhubungan dengan session // panggil file-file yang diperlukan include ('inc/class_skin...php *** ** Penulis.php <?php /********************************************************** ** Nama File.31: Tampilan utama halaman suepriklan. // handel setiap proses dengan case dan switch switch ($proses) { Bab 4 .... Pada PHP DESIGNER 2005 klik menu File > New > PHP...php')..localhost Gambar 4. // dapatkan data proses dari URL $proses = $_GET['proses'].. $proses = filter_str($proses).Masalah Keamanan. kemudian salin listing kode dibawah ini.: 15-10-2005 *** ** Penjelasan.SuperIklan. dan Contoh-contoh Aplikasi 381 ....localhost File berikutnya yang akan kita buat adalah file yang berfungsi untuk menyediakan form login sekaligus memprosesnya. Script dari file login.: login.. if ($proses == '') $proses = 'form'.: Rio Astamal *** ** Tanggal... include ('template/var_utama. Error Handling..php').

} // panggil class skin $skin = new skin. /***********/ /******************/ case 'proses_form': /******************/ // ambil data yang dipost sekaligus filter $username = filter_str($_POST['username'])."<p>Lupa Password? Klik <a href='lupa_pass.</p>\n" . $menu). // koneksikan ke MySQL server // gunakan fungsi login untuk mencocokkan data if (!login('member'.php?proses=proses_form' method='post'>\n" .". $tgl).php'). $judul)."</table>\n</form>\n" . $iklan_sisi). ?> Simpan pada direktori iklan dengan nama login."<p>Bagi member silahkan login dibawah ini. $password = filter_str($_POST['password']).</p>\n".localhost /***********/ case 'form': /***********/ $login = "<h2>Member Login</h2>\n" . // buat session member $login = "Login berhasil." <td><input type='text' name='username'></td>\n </tr>\n" .php'>Daftar</a> sekarang."<tr>\n <td></td>\n" .php."untuk masuk ke member area." <td><input type='password' name='password'></td>\n </tr>" .</p>\n" . $password)) $login = "Username atau password salah. dan Contoh-contoh Aplikasi 382 . $username. $daftar_berita). Klik <a href='member/index."<tr>\n <td>Password: </td>\n" . Error Handling."<p>Belum Menjadi Member? <a href='daftar. $skin->ganti_tag('{SISI2}'. // enkripsi password $password = balik_md5($password). // tentukan file template $skin->ganti_tag('{SEKARANG}'." <tr bgcolor='#7cb500' height='20'><td colspan='2'></td></tr>\n" . break. $skin->ganti_tampilan(). $login)."<tr bgcolor='#7cb500' height='20'><td colspan='2'></td></tr>\n" . // buat objek skin $skin->ganti_skin('template/skin_utama.<br>\n $kembali".SuperIklan. Bab 4 . else { $_SESSION['member'] = $username.Masalah Keamanan."<tr>\n <td>Username: </td>\n" . $skin->ganti_tag('{SISI1}'.php'>disini</a> " ." <td><input type='submit' value='LOGIN'></td>\n </tr>\n" ."<form action='login."<table border='0' cellpadding='4'>\n" . } mysql_close(). $skin->ganti_tag('{UTAMA}'. $skin->ganti_tag('{JUDUL}'. $skin->ganti_tag('{MENU}'. Untuk sementara jangan login dulu karena percuma anda belum terdaftar didatabase juga halaman membernya belum kita buat. konek_db().php'>disini</a>.

Langsung saja buat file PHP baru pada PHP DESIGNER 2005 kemudian ketik kode berikut. // buat form dan tabel untuk registrasi $reg = "<p>Mohon isi semua field dibawah ini untuk mendaftar menjadi \n" . // handel setiap proses dengan switch dan case switch ($proses) { /***********/ case 'form': /***********/ $judul = "<h2>Form Registrasi . dan Contoh-contoh Aplikasi 383 ." <td><input type='text' name='telpon'></td>\n </tr>\n" ..." <td><input type='text' name='alamat' size='50'></td>\n</tr>" .." max."<tr>\n <td>Username: </td>\n" ."<tr>\n <td>Email: </td>\n" ..php'). if ($proses == '') $proses = 'form'."<tr bgcolor='#7cb500'>\n" ."<tr>\n <td>Alamat: </td>\n" .." <td class='putih' colspan='2' align='center'>Form Registrasi</td></tr>\n" ."member superiklan.: Rio Astamal *** ** Tanggal./HP</td>\n" . 16 karakter."<tr>\n <td>Telp." <td><input type='text' name='username' maxlength='16'>" ..</p>\n" . Script dari file daftar.."<form action='daftar.: daftar.Masalah Keamanan.superiklan. Error Handling... </td>\n</tr>\n" .php?proses=proses_form' method='post'>\n" ."<tr>\n <td>Kota: </td>\n" ....SuperIklan..php'). \n</td></tr>\n" ..." <td><input type='password' name='password' maxlength='16'>" ." max.." <td><input type='text' name='kota'></td>\n </tr>\n" ."<tr>\n <td></td>\n" Bab 4 ."<tr>\n <td>Password: </td>\n" .localhost Selanjutnya kita akan membuat file yang memproses pendaftaran/registrasi user. $proses = filter_str($proses)." <td><input type='text' name='nama'></td>\n </tr>\n" .php <?php /********************************************************** ** Nama File. 16 karakter.php *** ** Penulis. Klik DAFTAR untuk melanjtkan proses registrasi."<tr>\n <td>Nama Lengkap: </td>\n" .php').: menampilkan form registrasi dan *** ** memprosesnya *** ***********************************************************/ // panggil file-file yang diperlukan include ('inc/class_skin."<table border='0' cellpadding='4' width='100%'>\n" . // dapatkan data proses dari URL $proses = $_GET['proses']." <td><input type='text' name='email'></td>\n </tr>\n" .... include ('inc/fungsi.localhost</h2>\n".: 15-10-2005 *** ** Penjelasan. include ('template/var_utama.

= "Error: Username atau password hanya boleh terdari dari " . $pesan_error = ''. Error Handling. $kota = addslashes($_POST['kota']). if (!cek_email($email)) $pesan_error .localhost .= "<p>Error: Gagal memasukkan ke tb_email. // tambahkan addslashes() $nama = addslashes($_POST['nama']). $format = '[^a-zA-Z0-9_]'. 0)"). if (!$hasil2) $reg . // koneksikan ke MySQL server // lakukan query $hasil = mysql_query("INSERT INTO member VALUES('$username'. '$email'.".= "Error: Email tidak valid."masuk ke member area. $password = $_POST['password'].<br>\n". $alamat = addslashes($_POST['alamat']). '$email'. $password)) $pesan_error . '$alamat'. // variabel untuk pesan error // cek setiap field if (!cek_field($_POST)) $pesan_error = "Error: Masih ada field yang kosong. $telpon = addslashes($_POST['telpon']).<br>\n". // enkripsi password // cek isi $pesan_error jika tidak kosong maka ada error if ($pesan_error != '') $reg = $pesan_error.$kembali. Kontak admin."alpabet. break. // username dan password hanya alpanumerik dan _ if (ereg($format. '$password'." <td><input type='submit' value='DAFTAR'></td>\n </tr>" . } Bab 4 .<br>\n". /***********/ /******************/ case 'proses_form': /******************/ // ambil data yang di-post dari form registrasi $username = $_POST['username']. '$nama'. // cek status if (!$hasil) $reg = "Error: Gagal memasukkan data ke database. // masukkan juga ke tb_email $hasil2 = mysql_query("INSERT INTO tb_email VALUES('$username'. else { konek_db(). $email = $_POST['email'].$kembali.php'>Login</a> untuk " ."</table>\n</form>". mysql_close().Masalah Keamanan. dan Contoh-contoh Aplikasi 384 . $password = balik_md5($password).<br>\n". else $reg = "Proses registrasi sukses. Klik <a href='login. $username) || ereg($format.SuperIklan. numerik dan _."<tr bgcolor='#7cb500' height='20'><td colspan='2'></td></tr>\n" . '$telpon')"). '$kota'.</p>".

$daftar_berita).php *** ** Penulis..php').. $menu). Script dari file news. $skin->ganti_tag('{UTAMA}'. $skin->ganti_tampilan().: news.SuperIklan. $reg). <?php /********************************************************** ** Nama File. // tentukan file template $skin->ganti_tag('{SEKARANG}'. $skin->ganti_tag('{MENU}'.: 15-10-2005 *** ** Penjelasan. $skin->ganti_tag('{JUDUL}'.: Rio Astamal *** ** Tanggal..php. $iklan_sisi). $tgl).Masalah Keamanan..32 Gambar 4. // buat objek skin $skin->ganti_skin('template/skin_utama.localhost break.... dan Contoh-contoh Aplikasi ....... /************/ } // akhir dari switch // panggil class skin $skin = new skin... Output dari file ini ditunjukkan oleh gambar 4. $skin->ganti_tag('{SISI1}'. $skin->ganti_tag('{SISI2}'.. lalu ketik kode berikut.... $judul). ?> Simpan pada direktori iklan dengan nama daftar. Untuk itu buat file PHP baru pada PHP DESIGNER 2005.32: Tampilan form registrasi/pendaftaran Selanjutnya kita akan membuat file yang akan menampilkan cuplikan berita dan keseluruhan berita. Error Handling.: menampilkan cuplikan berita dan *** ** berita lengkap *** 385 Bab 4 .php.

SuperIklan.localhost

***********************************************************/ // panggil file-file yang diperlukan include ('inc/class_skin.php'); include ('inc/fungsi.php'); include ('template/var_utama.php'); // dapatkan data proses dari URL $proses = $_GET['proses']; if ($proses == '') $proses = 'view'; $proses = filter_str($proses); konek_db(); // koneksikan ke MySQL server switch ($proses) { /***********/ case 'view': /***********/ // dapatkan data page dari URL $page = $_GET['page']; if ($page == '') $page = 0; $page = filter_str($page); // panggil class halaman $hal = new halaman; // buat objek halaman $hal->set_tabel('tb_berita'); // tentukan tabel $hal->set_page($page); // data halaman yang dihandel $pph = $hal->set_pph($u_bph); // berita per halaman (konfig.php) // lakukan query $hal->query_SQL(1); // SELECT * FROM tb_berita $jml_berita = $hal->get_jml_data(); // dapatkan jumlah berita $hal->get_jml_hal(); // dapatkan jumlah halaman $record = $hal->get_record(); // dapatkan jumlah record $hasil = $hal->query_SQL("SELECT * FROM tb_berita ORDER BY id_berita DESC LIMIT $record, $pph"); // variabel untuk menampilkan cuplikan berita $news = "<table border='0' cellpadding='4' width='100%'>\n" ."<tr bgcolor='#7cb500'>\n" ." <td class='putih'><b>Berita Terbaru</b></td>\n</tr>\n"; // tampilkan hasil dengan looping while ($data = mysql_fetch_array($hasil)) { $isi_berita = nl2br($data['isi_berita']); $tgl_berita = "[ $data[tgl_berita] ]"; $jdl_berita = "$tgl_berita<br><b>$data[jdl_berita]</b><br><br>\n"; $cuplikan = array(); // buat variabel array untuk cuplikan kata $pecahan_kata = explode(" ", $isi_berita); // pecah setiap kata // lakukan looping untuk mendapatkan 25 kata pertama for ($i=0; $i<25; $i++) $cuplikan[$i] = $pecahan_kata[$i];

Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

386

SuperIklan.localhost

$cuplikan = implode(" ", $cuplikan); // gabung ke 25 kata tersebut $link = "<br><br><a href='news.php?proses=full_news&id=$data[id_berita]'>baca selengkapnya...</a><hr>"; // susun tampilan $news .= "<tr><td>$jdl_berita $cuplikan... $link</td></tr>\n"; } $hal->set_hal(); // tentukan nilai Last, Next, dan Before $news .= "</table>\n" .$hal->show_page("news.php?proses=view")."</font>\n"; break; /**********/ /****************/ case 'full_news': /****************/ // dapatkan id berita dari URL $id = $_GET['id']; if ($id == '') $id = 1; $id = filter_str($id); // lakukan query untuk menampilkan keseluruhan isi berita $hasil = mysql_query("SELECT * FROM tb_berita WHERE id_berita='$id'"); $data = mysql_fetch_array($hasil); // pecah menjadi array $isi = htmlspecialchars($data['isi_berita']); // agar tag HTML tidak diproses // tampilkan isi berita $news = "$data[tgl_berita]<br>\n<b>$data[jdl_berita]</b>\n" ."<p>".nl2br(stripslashes($data['isi_berita']))."</p>\n" ."<a href='news.php?proses=view'>Berita Lainnya</a>\n"; break; /****************/ } mysql_close(); // panggil class skin $skin = new skin; // buat objek skin $skin->ganti_skin('template/skin_utama.php'); // tentukan file template $skin->ganti_tag('{SEKARANG}', $tgl); $skin->ganti_tag('{MENU}', $menu); $skin->ganti_tag('{JUDUL}', $judul); $skin->ganti_tag('{UTAMA}', $news); $skin->ganti_tag('{SISI1}', $iklan_sisi); $skin->ganti_tag('{SISI2}', ''); $skin->ganti_tampilan(); ?> Simpan pada direktori iklan dengan nama news.php. Output dari file ini dapat anda lihat pada gambar 4.33

Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

387

SuperIklan.localhost

Gambar 4.33: Daftar cuplikan berita PENJELASAN SCRIPT File ini memliki dua case yaitu view untuk cuplikan berita dan full_news untuk berita lengkap. Untuk case view kita gunakan class halaman untuk menampilkan seluruh cuplikan berita dan nomor link halaman. Pada blok kode looping kita membuat variabel $cuplikan yang bertipe array. File ini yang akan menampung 25 kata pertama dari setiap berita. Setelah itu kita pecah setiap kata pada isi berita menggunakan explode() dan hasilnya kita masukkan pada variabel $pecahan_kata. for ($i=0; $i<25; $i++) $cuplikan[$i] = $pecahan_kata[$i]; looping for diatas berguna untuk mendapatkan 25 kata pertama dari isi berita yang hasilnya kita masukkan pada variabel $cuplikan. Karena $cuplikan masih dalam array maka kita gabungkan setiap array pada $cuplikan hingga menjadi kalimat-kalimat utuh. $cuplikan = implode(" ", $cuplikan); // gabung ke 25 kata tersebut Jika ingin membaca berita secara lengkap user dapat mengklik link baca selengkapnya. Sekarang case full_news yang dijalankan. Pertama kita mengambil ID berita yang ada pada URL kemudian melakukan query SQL untuk mendapatkan isi berita secara lengkap. File berikutnya adalah iklan.php. File ini merupakan file yang paling penting dari website superiklan.localhost karena file inilah yang menampilkan daftar iklan. Yang merupakan subject utama website ini. Pada PHP DESIGNER 2005 klik menu File > New > PHP kemudian ketik kode berikut. Script dari file iklan.php <?php /**********************************************************
Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

388

SuperIklan.localhost

** Nama File.....: iklan.php *** ** Penulis.......: Rio Astamal *** ** Tanggal.......: 15-10-2005 *** ** Penjelasan....: menampilkan iklan baik iklan hari *** ** atau kemarin *** ***********************************************************/ // panggil file-file yang diperlukan include ('inc/class_skin.php'); include ('inc/fungsi.php'); include ('template/var_utama.php'); include ('inc/class_waktu.php'); // dapatkan data proses dari URL $proses = $_GET['proses']; if ($proses == '') $proses = 'view'; $proses = filter_str($proses); konek_db(); // koneksikan ke MySQL server // handel setiap proses dengan case dan switch switch ($proses) { /***********/ case 'view': /***********/ $hari = $_GET['hari']; if ($hari == '') $hari = 'today'; $hari = filter_str($hari); $waktu = new waktu; // buat objek waktu $waktu->set_date(); $waktu->set_mode(0); // mode pengurangan tanggal $kemarin = $waktu->set_tgl(0, 1); // dikurangi 1 // cek isi dari $hari untuk menentukan judul heading if ($hari == 'today') $heading = "<h2>Iklan Untuk Hari ini</h2>\n"; else if ($hari == 'kemarin') { $heading = "<h2>Iklan kemarin, $kemarin</h2>\n"; } else $heading = "<h2>Iklan sebelum tanggal $kemarin</h2>\n"; $iklan = "<p>Silahkan pilih kategori iklan yang ingin anda tampilkan. \n" ."Klik masing-masing link menampilkan daftar iklan.<br><br>\n" ."Daftar Kategori iklan: </p>\n" ."<ul>\n" ."<li><p><a href='iklan.php?proses=show&hari=$hari&kat=komputer'>Komputer</a></p></li>\n" ."<li><p><a href='iklan.php?proses=show&hari=$hari&kat=internet'>Internet</a></p></li>\n" ."<li><p><a href='iklan.php?proses=show&hari=$hari&kat=elektronik'>Elektornik</a></p></li>\n " ."<li><p><a href='iklan.php?proses=show&hari=$hari&kat=lowongan'>Lowongan</a></p></li>\n"

Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

389

SuperIklan.localhost

."<li><p><a href='iklan.php?proses=show&hari=$hari&kat=otomotif'>Otomotif</a></p></li>\n" ."<li><p><a href='iklan.php?proses=show&hari=$hari&kat=properti'>Properti</a></p></li>\n" ."<li><p><a href='iklan.php?proses=show&hari=$hari&kat=lainnya'>Lainnya</a></p></li>\n" ."</ul>\n" ."<p><a href='iklan.php?proses=view&hari=today'>Hari ini</a> &nbsp \n" ."<a href='iklan.php?proses=view&hari=kemarin'>Kemarin</a> &nbsp \n" ."<a href='iklan.php?proses=view&hari=lama'>Sebelum $kemarin</a></p>\n"; break; /************/

/************/ case 'show': /************/ // dapatkan data page dari URL $page = filter_str($_GET['page']); if ($page == '') $page = 0; $hari = filter_str($_GET['hari']); $kat = filter_str($_GET['kat']); if ($kat == '') $kat = 'komputer'; $waktu = new waktu; // buat objek waktu $waktu->set_date(); // cek kondisi hari untuk menentukan timestamp if ($hari == 'today') { $waktu->set_mode(2); // tanggal tetap $tstamp = $waktu->set_tgl(1); // sekarang dalam detik } else if ($hari == 'kemarin' || $hari == 'lama') { $waktu->set_mode(0); // dikurangi $tstamp = $waktu->set_tgl(1, 1); // kemarin dalam detik } // variabel untuk melakukan query $query = "SELECT * FROM tb_iklan WHERE kategori='$kat' AND timestamp=$tstamp"; if ($hari == 'lama') $query = "SELECT * FROM tb_iklan WHERE kategori='$kat' AND timestamp<$tstamp"; $page = filter_str($page); $kat = filter_str($kat); // panggil class halaman $hal = new halaman; // uat objek halaman $hal->set_tabel('tb_iklan'); // tentukan tabel $hal->set_page($page); // data halaman yang dihandel $pph = $hal->set_pph(2); // berita per halaman // lakukan query $hal->query_SQL($query); // lakukan query $jml_iklan = $hal->get_jml_data(); // dapatkan jumlah iklan $hal->get_jml_hal(); // dapatkan jumlah halaman if ($jml_iklan == 0)
Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

390

SuperIklan.localhost

$iklan = "<p><font color='red'>Tidak ada iklan untuk kategori $kat.</font></p>\n$kembali"; else { $record = $hal->get_record(); // dapatkan jumlah record $hasil = $hal->query_SQL($query." ORDER BY id_iklan DESC LIMIT $record, $pph"); // lakukan looping untuk menampilkan semua iklan $iklan = "<h2>Daftar Iklan untuk kategori: $kat</h2>\n" ."<p><a href='iklan.php?proses=view&hari=$hari'>" ."<< Kembali ke Daftar Kategori</a></p>\n" ."<table border='0' cellpadding='4' width='100%'>\n"; while ($data = mysql_fetch_array($hasil)) { $isi = nl2br(stripslashes($data['isi_iklan'])); $jdl = stripslashes($data['jdl_iklan']); $iklan .= "<tr bgcolor='#7cb500'>\n" ." <td class='jdl_iklan'>$jdl &nbsp &nbsp $data[tgl_post]" ."</td>\n</tr>\n" ."<tr>\n <td class='kecil'>$isi</td>\n" ."<td></td>\n</tr>\n"; } $hal->set_hal(); $iklan .= "<tr height='20' bgcolor='#7cb500'><td colspan='2'></td></tr>\n" ."</table>\n" .$hal->show_page("iklan.php?proses=show&hari=$hari&kat=$kat"); } break; /*************/ } // akhir dari switch mysql_close(); // panggil class skin $skin = new skin; // buat objek skin $skin->ganti_skin('template/skin_utama.php'); // tentukan file template $skin->ganti_tag('{SEKARANG}', $tgl); $skin->ganti_tag('{MENU}', $menu); $skin->ganti_tag('{JUDUL}', $heading); $skin->ganti_tag('{UTAMA}', $iklan); $skin->ganti_tag('{SISI1}', $iklan_sisi.$cari); $skin->ganti_tag('{SISI2}', ''); $skin->ganti_tampilan(); ?>

Simpan pada direkori iklan dengan nama iklan.php. Secara default jika user mengklik link iklan pada menu. Maka yang ditampilkan adalah iklan pada hari ini. Namun user tetap dapat memilih untuk melihat iklan kemarin atau dua hari yang lalu dan sebelumnya. User cukup mengklik link yang ada dibawah kategori iklan untuk memilih waktu iklan. Lihat gambar 4.34 PENJALASAN SCRIPT Pada case view kita dihapakan beberapa kondisi yaitu today, kemarin, dan lama. Secara default nilai dari $hari adalah today. Untuk menampilkan tanggal kemarin jika nilai dari $hari adalah kemarin kita gunakan class waktu.

Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

391

SuperIklan.localhost

$waktu = new waktu; // buat objek waktu $waktu->set_date(); $waktu->set_mode(0); // mode pengurangan tanggal $kemarin = $waktu->set_tgl(0, 1); // dikurangi 1 Isi dari $kemarin merupakan tanggal kemarin dalam format dd-mm-yyyy.

Gambar 4.34: Daftar iklan Pada case show kita mengambil isi dari hari pada URL untuk menentukan iklan pada tanggal berapa yang akan ditampilkan. Untuk keperluan itu kita panggil class waktu. Namun sebelumnya kita harus melihat beberapa kondisi dari $hari. Jika kondisi hari adalah today yang berarti sekarang maka timestamp-nya kita set hari ini seperti berikut, if ($hari == 'today') { $waktu->set_mode(2); // tanggal tetap $tstamp = $waktu->set_tgl(1); // sekarang dalam detik } Jika isi dari $hari tidak sama dengan today berarti isnya kemarin atau lama. Yang membedakan antara kemarin dan lama hanyalah saat melakukan query. Yaitu jika isi dari $hari adalah lama maka operator pada query SQL-nya kita beri tanda < (kurang). Yang berarti iklan sebelum kemarin. $query = "SELECT * FROM tb_iklan WHERE kategori='$kat' AND timestamp=$tstamp"; if ($hari == 'lama') $query = "SELECT * FROM tb_iklan WHERE kategori='$kat' AND timestamp<$tstamp"; Langkah selanjutnya seperti biasa kita gunakan class halaman untuk menampilkan semua data dan menampilkan link nomor halaman. File berikutnya yang akan kita buat adalah file berfungsi untuk melakukan pencarian atas keriteria yang diinginkan oleh user. File ini akan dipanggil jika kita melakukan submit pada
392

Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

SuperIklan.localhost

form pencarian iklan. Untuk membuat file ini klik File > New > PHP pada PHP DESIGNER 2005, lalu ketik kode berikut. Script dari file cari.php <?php /********************************************************** ** Nama File.....: cari.php *** ** Penulis.......: Rio Astamal *** ** Tanggal.......: 15-10-2005 *** ** Penjelasan....: Menmapilkan iklan hasil pencarian *** ***********************************************************/ // panggil file-file yang diperlukan include ('inc/class_skin.php'); include ('inc/fungsi.php'); include ('template/var_utama.php'); konek_db(); // koneksikan ke MySQL server // dapatkan data dari URL $page = $_GET['page']; if ($page == '') $page = 0; $kat = $_GET['kat']; $keyword = $_GET['keyword']; // filter data $page = filter_str($page); $kat = filter_str($kat); $keyword = filter_str($keyword, " "); // spasi diperbolehlan // variabel untuk query $query = "SELECT * FROM tb_iklan WHERE isi_iklan LIKE '%$keyword%' AND kategori='$kat'"; // panggil class halaman $hal = new halaman; // buat objek halaman $hal->set_tabel('tb_iklan'); // tentukan tabel $hal->set_page($page); // data halaman yang dihandel $pph = $hal->set_pph(2); // berita per halaman // lakukan query $hal->query_SQL($query); // lakukan query $jml_iklan = $hal->get_jml_data(); // dapatkan jumlah iklan $hal->get_jml_hal(); // dapatkan jumlah halaman if ($jml_iklan == 0) // cek jumlah iklan $iklan = "<p><font color='red'>Iklan yang anda cari tidak ditemukan.</font></p>\n$kembali"; else { $record = $hal->get_record(); // dapatkan jumlah record $hasil = $hal->query_SQL($query." ORDER BY id_iklan DESC LIMIT $record, $pph"); // lakukan looping untuk menampilkan semua iklan $iklan = "<h2>Hasil pencarian untuk kategori: $kat</h2>\n" ."<p><a href='iklan.php?proses=view&hari=$hari'>" ."<< Kembali ke Daftar Kategori</a></p>\n" ."<table border='0' cellpadding='4' width='100%'>\n";

Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

393

SuperIklan.localhost

while ($data = mysql_fetch_array($hasil)) { $iklan .= "<tr bgcolor='#7cb500'>\n" ." <td class='jdl_iklan'>$data[jdl_iklan] &nbsp &nbsp $data[tgl_post]</td>\n</tr>\n" ."<tr>\n <td class='kecil'>".nl2br($data[isi_iklan])."</td>\n" ."<td></td>\n</tr>\n"; } $hal->set_hal(); $iklan .= "<tr height='20' bgcolor='#7cb500'><td colspan='2'></td></tr>\n" ."</table>\n" .$hal->show_page("cari.php?kat=$kat&keyword=$keyword"); } mysql_close(); // panggil class skin $skin = new skin; // buat objek skin $skin->ganti_skin('template/skin_utama.php'); // tentukan file template $skin->ganti_tag('{SEKARANG}', $tgl); $skin->ganti_tag('{MENU}', $menu); $skin->ganti_tag('{JUDUL}', $judul); $skin->ganti_tag('{UTAMA}', $iklan); $skin->ganti_tag('{SISI1}', $iklan_sisi.$cari); $skin->ganti_tag('{SISI2}', ''); $skin->ganti_tampilan(); ?>

Simpan pada direkori iklan dengan nama cari.php. Gambar 4.35 menunjukkan hasil pencarian pada ketogori komputer.

Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

394

SuperIklan.localhost

Gambar 4.35: Daftar iklan hasil pencarian PENJALASAN SCRIPT Form pencarian yang ada disamping halaman merupakan isi dari variabel $cari yang ada pada file var_utama.php. Pada form pencarian kita tidak menggunakan method POST melainkan GET karena jika kita menggunakan POST maka kita tidak bisa berpindah antar halaman hasil pencarian. Hal itu disebabkan karena nilai dari $keyword sudah hilang karena melalui method post. Sedangkan jika melalui GET kita tetap dapat menyimpannya karena GET menyimpan nilai keyword pada URL yang dapat kita ambil saat memanggil metode show_page(). Hal menarik lainnya adalah kita mengambil isi dari $keyword pada URL menggunakan metode filter_str($keyword, " "). Parameter ke-2 adalah karakter yang diperbolehkan artinya pada fungsi tersebut kita membiarkan spasi untuk tidak difilter. Ini karena user biasanya melakukan pencarian tidak hanya memasukkan satu kata melainkan dua kata. File terakhir untuk direktori iklan adalah lupa_pass.php. File ini berfungsi untuk melakukan reset password dan mengirimkan password kepada user yang lupa akan passwordnya tersebut. Buat file baru pada PHP DESIGNER 2005 kemudian ketik kode berikut. Script dari file lupa_pass.php <?php /********************************************************** ** Nama File.....: lupa_pass.php *** ** Penulis.......: Rio Astamal *** ** Tanggal.......: 12-10-2005 *** ** Penjelasan....: Untuk menampilkan form lupa password *** ** dan memprosesnya *** ***********************************************************/ // panggil file-file yang diperlukan include ('inc/class_skin.php'); include ('inc/fungsi.php'); include ('template/var_utama.php'); // dapatkan data proses dari URL $proses = $_GET['proses']; if ($proses == '') $proses = 'form'; $proses = filter_str($proses); konek_db(); // koneksikan ke MySQL server

// handel setiap proses dengan case dan switch switch ($proses) { /***********/ case 'form': /***********/ $judul = "<h2>Lupa Password</h2>"; $lupa = " <p>Isikan username dan email anda kemudian klik KIRIM untuk mereset password anda</p> <form action='lupa_pass.php?proses=kirim' method='post'> <table border='0' cellpadding='4'> <tr bgcolor='#7cb500'>
395

Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

SuperIklan.localhost

<td class='putih' colspan='2'>Form Lupa Password</td></tr> <tr> \n<td>Username: </td> <td><input type='text' name='username'></td></tr> <tr> \n<td>Email: </td> <td><input type='text' name='email'></td></tr> <tr><td></td><td><input type='submit' value='K I R I M'></td></tr> <tr bgcolor='#7cb500' height='20'><td colspan='2'></td></tr> </table> </form>\n\n"; break; /***********/ /************/ case 'kirim': /************/ // ambil data yang dipost $username = filter_str($_POST['username']); $email = $_POST['email']; // cek kevalidan email if (!cek_email($email)) $lupa = "<p>Error: Email tidak valid.<br>\n$kembali</p>\n"; else { // lakukan query untuk mencocokkan data $hasil = mysql_query("SELECT * FROM member WHERE username='$username' AND email='$email'"); // cek hasil if (mysql_num_rows($hasil) == 0) $lupa = "<p>Error: Username atau email tidak ada didatabase.<br>\n$kembali</p>"; else { // jika cocok maka buat password baru, update database lalu kirim email // panggil fungsi pass_acak() untuk mendapatkan password secara acak $new_pass = pass_acak(); // enkripsi password $pass_enkrip = balik_md5($new_pass); // update password yang ada di database $q_update = mysql_query("UPDATE member SET password='$pass_enkrip' WHERE username='$username'"); // cek status if (!$q_update) $lupa = "<p>Error: Gagal mengupdate password didatabse.<br>\n$kembali</p>" ."Kontak <a href='mailto:admin@superiklan.localhost'>Admin</a>"; else { // kirim email $to = $email; // alamat email user $subject = "Password Baru Anda - superiklan.localhost"; $tgl_reset = date('d-m-Y, H:i'); $isi = "Dari admin@superiklan.localhost\n" ."===============================\n\n" ."Pada tanggal $tgl_reset anda dengan username $username, telah\n" ."melakukan request password. Dan di bawah ini adalah password\n" ."baru anda.\n\n" ."==================================\n"
Bab 4 - Masalah Keamanan, Error Handling, dan Contoh-contoh Aplikasi

396

Gambar 4. $skin->ganti_tag('{UTAMA}'. $skin->ganti_tag('{JUDUL}'. Jika anda menggunakan OS berbasis UNIX seperi Linux anda tidak perlu memberi komentar pada fungsi mail. Silahkan cek email anda</p>"."==================================\n\n" .Masalah Keamanan.SuperIklan. $judul)."Admin superiklan. $iklan_sisi). $skin->ganti_tag('{SISI1}'. Error Handling.localhost . /************/ } // akhir dari switch mysql_close(). $daftar_berita).\n\n" . $skin->ganti_tag('{MENU}'. $lupa). beri komentar pada fungsi mail berikut mail($to. $from = "From: admin@superiklan. $isi."Username: $username\n" .php. ?> Simpan pada direktori iklan dengan lupa_pass.localhost\n" ."===========================\n" . dan Contoh-contoh Aplikasi 397 . Kemudian\n" . } } } break. Bab 4 ."Password: $new_pass\n" . // buat objek skin $skin->ganti_skin('template/skin_utama. $tgl). $skin->ganti_tag('{SEKARANG}'."update kembali password anda agar mudah anda ingat. $skin->ganti_tampilan().localhost"."Gunakan password diatas untuk masuk ke member area.php'). // ganti dengan email anda // jika anda tidak memiliki program mail server atau anda belum di server // sebenarnya. $from).36 menunjukkan email yang diterima user setelah melakukan reset password. // tutup koneksi ke MySQL server // panggil class skin $skin = new skin. $lupa = "<p>Password berhasil direset. Hanya saja anda harus sesuaikan penerimanya adalah user lokal. $skin->ganti_tag('{SISI2}'. $subject. $menu)."===========================".

php <?php /********************************************************** ** Nama File. File pertama yang akan kita buat adalah index.php *** ** Penulis../inc/class_skin. Untuk membuatnya klik File > New > PHP./template/member_var. dan Contoh-contoh Aplikasi 398 . Dan ini merupakan direkrori terakhir yang akan kita kerjakan pada proyek superiklan. $proses = $_GET['proses']...php').Masalah Keamanan.: menampilkan halaman utama untuk *** ** member area *** ***********************************************************/ session_start().... include ('........SuperIklan..... Error Handling.36: Email yang diterima user karena melakukan request reset password Akhir dari file yang berada pada direktori iklan.php')..localhost ini.: index.. File ini hanya bertugas memberikan pesan selamat datang dan fungsi untuk logout. kemudian ketik kode berikutnya Script dari file index. if ($proses == '') $proses = 'view'. File-file berikutnya yang akan kita kerjakan adalah file yang berada pada direktori member. include ('.php.: Rio Astamal *** ** Tanggal.: 16-10-2005 *** ** Penjelasan. Bab 4 ..localhost Gambar 4..

$skin->ganti_tag('{UTAMA}'. Karena hanya disinilah anda dapat memasang iklan " . $skin->ganti_tampilan(). /*********/ } } $skin = new skin. $skin->ganti_tag('{MENU}'.</p>\n".SuperIklan. $tgl).php'). Dengan " .</p>\n" . // $not_login ada di member_var. $member). // cek user apakah sudah login atau belum if (!cek_session('member')) $member = $not_login."email untuk mengirim email ke semua member superiklan. $skin->ganti_tag('{JUDUL}'. Namun untuk fasilitas " .localhost. $skin->ganti_tag('{SISI2}'. $login)."secara efektif dan cepat. Klik " .. anda dapat menggunakan fasilitas " ."<p>Selain dengan menggunakan iklan baris./template/skin_utama. /**********/ /*************/ case 'logout': /*************/ if (!logout('member')) $member = "<p>Tidak bisa logout.."dalam 5 hari."superiklan.php'>disini</a> untuk login kembali.localhost. Login <a href='.php else { switch ($proses) { /***********/ case 'view': /***********/ $judul = "<h2>Selamat Datang di Member Area</h2>\n". break..</p>\n".localhost $proses = filter_str($proses)./login. Anda dapat memasang iklan pada kategori sesuai " . else $member = "<p>Anda telah logout dari sistem. dan Contoh-contoh Aplikasi 399 .Masalah Keamanan."email ini kami hanya memperbolehkan anda mengirim email hanya satu kali " .php'>Login</a> dulu</p>\n". Bab 4 . $iklanku). $judul)."<a href='."dengan demikian keefektifan iklan anda sangat tinggi. Error Handling. $skin->ganti_tag('{SISI1}'./login."dengan produk/jasa yang anda tawarkan. $mem_menu). // buat objek skin $skin->ganti_skin('. break. $member = "<p>Terima kasih karena anda sudah bersedia menjadi member dari website " . // ganti tag tertentu dengan variabel yang diinginkan $skin->ganti_tag('{SEKARANG}'.

.. Script dari file profil.. dan Contoh-contoh Aplikasi 400 ... konek_db(). include ('.php.php *** ** Penulis. include ('.. if ($proses == '') $proses = 'form'..37: Halaman utama member area Lanjut? OK.php').... $proses = filter_str($proses).: Rio Astamal *** ** Tanggal. Output dari file ini ditunjukkan oleh gambar 4. $proses = $_GET['proses']./template/member_var./inc/class_skin. Langsung saja buat file baru pada PHP DESIGNER 2005 kemudian ketik kode berikut.. // koneksikan ke MySQL server Bab 4 .php <?php /********************************************************** ** Nama File.SuperIklan...: 12-10-2005 *** ** Penjelasan. File ini bertugas untuk mengupdate profil dari user..php').. Error Handling....: Untuk mengupdate profil dari member *** ***********************************************************/ session_start().37 Gambar 4..php.localhost ?> Simpan pada direktori iklan\member dengan nama index.: profil.. file berikutnya adalah profil.Masalah Keamanan..

"</table>\n</form>\n".localhost // cek user apakah sudah login atau belum if (!cek_session('member')) $profil = $not_login."<form action='profil. Bab 4 ." <td><input type='text' name='kota' value='".</p>\n" ."<input type='hidden' name='username' value='$data[username]'>\n" ." <td><input type='text' name='nama' value='"."<tr bgcolor='#7cb500' height='20'>\n" ."<tr> \n<td>Alamat: </td>\n" . break.stripslashes($data['email']). $profil = "<p>Untuk mengupdate Klik tombol UPDATE."' size='50'></td></tr>\n" . dan Contoh-contoh Aplikasi 401 ."'></td></tr>\n" ."'></td></tr>\n" . Error Handling.php?proses=proses_form' method='post'>\n" . $pass2 = filter_str($_POST['pass2']).stripslashes($data['telpon']).stripslashes($data['nama'])."<tr> \n<td>Ulangi: </td>\n" ./HP: </td>\n" . $hasil = mysql_query("SELECT * FROM member WHERE username='$user'"). // pecah menjadi array $judul = "<h2>Update Profil</h2>\n". Pastikan semua field terisi. $data = mysql_fetch_array($hasil)." <td colspan='2' class='putih'>Form Update Profil</td></tr>\n" ." <td><input type='password' name='pass1' maxlength='16'></td></tr>\n" ." <td><input type='text' name='email' value='"."'></td></tr>\n" .SuperIklan." <td><input type='text' name='telpon' value='"."<tr> \n<td>Kota: </td>\n" ." <td><input type='password' name='pass2' maxlength='16'></td></tr>\n" ."'></td></tr>\n" ."<tr> \n<td>Email: </td>\n" ."<tr> \n<td>Username: </td><td>$data[username]</td></tr>\n" .stripslashes($data['alamat']). /*********/ /******************/ case 'proses_form': /******************/ // ambil data yang dipost $username = $_POST['username']." <td colspan='2'></td></tr>\n" ."<tr bgcolor='#7cb500' align='center'>\n" ."<table border='0' cellpadding='4'>\n" ."<tr> \n<td>Telp.stripslashes($data['kota'])."<tr> \n<td>Nama Lengkap: </td>\n" ."<tr><td></td><td><input type='submit' value='UPDATE'></td></tr>\n" .Masalah Keamanan."<tr> \n<td>Password: </td>\n" . else { // handel setiap proses dengan switch dan case switch ($proses) { /***********/ case 'form': /***********/ // lakukan query untuk mendapatkan profil dari user tersebut $user = $_SESSION['member']." <td><input type='text' name='alamat' value='". $pass1 = filter_str($_POST['pass1']).

if (!cek_email($email)) $pesan_error . $alamat = addslashes($_POST['alamat']). $iklanku). $skin->ganti_tag('{MENU}'. /************/ } // akhir dari swtich } // akhir dari else mysql_close().Masalah Keamanan. $pass1 = balik_md5($pass1). <br>\n $kembali". $tgl).$kembali. $profil). // buat variabel pesan_error $pesan_error = ''. $kota = addslashes($_POST['kota']). nama='$nama'.localhost // tambahkan addslashes() $nama = addslashes($_POST['nama']). else { // masukkan ke database $hasil = mysql_query("UPDATE member SET password='$pass1'. $skin->ganti_tampilan().php'). kota='$kota'./template/skin_utama.= "Error: Password tidak sama. email='$email'. if ($pass1 != $pass2) $pesan_error .<br>\n".38 Bab 4 .php. $judul). $skin->ganti_tag('{SISI1}'. Error Handling. Output dari file ini dapat anda lihat pada gambar 4. // enkripsi password // cek isi dari pesan error jika tidak kosong maka ada error if ($pesan_error != '') $profil = $pesan_error. alamat='$alamat'. $email = addslashes($_POST['email']). // buat objek skin $skin->ganti_skin('.<br>\n". dan Contoh-contoh Aplikasi 402 . // cek status if (!$hasil) $profil = "Profil gagal diupdate. // cek semua field if (!cek_field($_POST)) $pesan_error = "Error: Masih ada field yang kosong<br>\n". $skin->ganti_tag('{UTAMA}'. $skin->ganti_tag('{SEKARANG}'. $skin->ganti_tag('{JUDUL}'. $skin->ganti_tag('{SISI2}'. telpon='$telpon' WHERE username='$username'").= "Error: Email tidak valid. $telpon = addslashes($_POST['telpon']). ''). else $profil = "Profil berhasil diupdate. ?> Simpan pada direktori iklan\member dengan nama profil. // tutup koneksi MySQL Server $skin = new skin. } break.SuperIklan. $mem_menu).. <br>\n $kembali".

../inc/konfig. else Bab 4 .php *** ** Penulis..: 17-10-2005 *** ** Penjelasan....php <?php /********************************************************** ** Nama File./inc/class_waktu... $proses = filter_str($proses).: Untuk halaman pemasangan iklan *** ***********************************************************/ session_start().php'). include ('.php'). if ($proses == '') $proses = 'form'.. include ('..php').: pasang. $proses = $_GET['proses'].localhost Gambar 4.: Rio Astamal *** ** Tanggal.. Script dari file pasang./template/member_var.. kemudian ketik kode dibawah ini.Masalah Keamanan..php').. dan Contoh-contoh Aplikasi 403 ..SuperIklan.. konek_db().. include ('./inc/class_skin.. // koneksikan ke MySQL server // cek user apa sudah login atau belum if (!cek_session('member')) $pasang = $not_login. Pada PHP DESIGNER 2005 buat file PHP baru dengan mengklik menu File > New > PHP.. // panggil file-file yang diperlukan include ('... Error Handling.38: Halaman profil untuk mengupdate profil Selanjutnya kita akan membuat file yang bertugas menyedian form pemasangan iklan dan menyimpannya ke database...

// jumlah iklan // tentukan kondisi. /************/ /******************/ case 'proses_form': /******************/ Bab 4 .form).</p> $java <form action='pasang. } break. Error Handling. // cek jumlah iklan user ini jika sudah 10.SuperIklan."anda dan coba lagi.localhost { switch ($proses) { /***********/ case 'form': /***********/ $judul = "<h2>Pasang Iklan</h2>\n".'></textarea></td></tr> <tr> \n<td>Sisa Karakter: </td> <td><input type='text' name='sisa' value='500' size='3' readonly='yes'></td></tr> <tr> \n<td></td><td><input type='submit' value='P O S T'></td></tr> <tr height='20' bgcolor='#7cb500'><td colspan='2'></td></tr> </table>\n</form>\n\n"."quota maksimum ($max_post iklan).</font></p>\n".php if ($jml_iklan > $max_post ) $pasang = "<p><font color='red'>Jumlah iklan anda sudah melebihi " . $jml_iklan = mysql_num_rows($hasil).Masalah Keamanan. Hapus salah satu iklan " . $max_post ada di konfig. else { $judul = "<h2>Pasang Iklan</h2>\n". $pasang = " <p>Pada halaman ini anda dapat memasang iklan sesuai dengan jasa/produk yang anda tawarkan.php?proses=proses_form' method='post'> <table border='0' cellpadding='4'> <tr bgcolor='#7cb500' align='center'> <td colspan='2' class='putih'>Form Pasang Iklan</td></tr> <tr> \n<td>Pilih kategori: </td> <td><select name='kategori'> <option value='komputer'>Komputer</option> <option value='internet'>Internet</option> <option value='elektronik'>Elektronik</option> <option value='lowongan'>Lowongan</option> <option value='otomotif'>Otomotif</option> <option value='properti'>Properti</option> <option value='lainnya'>Lainnya</option> </select>\n</td></tr> <tr> \n<td>Judul Iklan:</td> <td><input type='text' name='jdl_iklan' size='50' maxlength='100'></td></tr> <tr> \n<td>Isi Iklan: </td> <td><textarea name='isi' rows='10' cols='50' onkeyup='batas_kar(this. dan Contoh-contoh Aplikasi 404 . tidak boleh post $hasil = mysql_query("SELECT * FROM tb_iklan WHERE username='$_SESSION[member]'").

"<a href='mailto: root@localhost'>Kontak Admin</a>\n".localhost // ambil data yang di-post $kategori = $_POST['kategori']. // cek status if (!$hasil) $pasang = "Error: Tidak dapat memasukkan data ke database. else $pasang = "<p>Iklan berhasil di-post. $mem_menu).<br>\n". dan Contoh-contoh Aplikasi 405 .Masalah Keamanan. ?> Simpan pada direktori iklan\member dengan nama pasang. $pesan_error = ''. '$tgl'. $skin->ganti_tampilan(). if (strlen($isi) < 10) $pesan_error . // buat objek skin $skin->ganti_skin('. $waktu->set_date().SuperIklan. // sekarang dalam detik $hasil = mysql_query("INSERT INTO tb_iklan VALUES (0. Error Handling./template/skin_utama.<br>\n" .= "Error: Kelihatannya iklan anda terlalu pendek.</p>\n". $skin->ganti_tag('{SISI1}'. // ganti tag tertentu dengan variabel yang diinginkan $skin->ganti_tag('{SEKARANG}'.php.<br>\n".39 Bab 4 . } break. $judul). '$kategori'. $jdl_iklan = addslashes($_POST['jdl_iklan']). $waktu->set_mode(2). $skin->ganti_tag('{MENU}'.$kembali. // mode tetap $skr = $waktu->set_tgl(1). '$skr')"). H:i'). // jika $pesan_error tidak kosong maka ada error if ($pesan_error != '') $pasang = $pesan_error. '$user'. $tgl). $user = $_SESSION['member']. ''). else { // buat variabel untuk dimasukkan ke database $tgl = date('d-m-Y.php'). $skin->ganti_tag('{JUDUL}'. $isi = strip_tags(addslashes($_POST['isi'])). Output dari file ini ditunjukkan oleh gambar 4. /***********/ } } // akhir dari else $skin = new skin.. $skin->ganti_tag('{SISI2}'. $pasang). // nilai awal kosong // cek setiap field if (!cek_field($_POST)) $pesan_error = "Error: Masih ada field yang kosong. $waktu = new waktu. '$jdl_iklan'. $iklanku). '$isi'. $skin->ganti_tag('{UTAMA}'.

Kita mengecek dulu jumlah iklan yang telah dipost oleh user. dan Contoh-contoh Aplikasi 406 ..: email. Kita hanya menyediakan form untuk pemasangan iklan kemudian kita memasukkannya pada database.localhost Gambar 4. Kecuali anda mengganti namanya pada javascriptnya juga..php *** ** Penulis. Pada halaman member area ini kita menyediakan form untuk mengirim email ke semua member sebagai salah satu jenis iklan yang disediakan pengelola. Untuk itu kita gunakan javascript yang disimpan pada variabel $java. Kita juga membatasi jumlah karakter iklan yaitu sebanyak 500 karakter..: Rio Astamal *** ** Tanggal.. Error Handling.. Juga addslashes() untuk memberi escaping karakter. Kita menambahkan fungsi strip_tags() untuk menghilangkan tag-tag HTML... Script dari file email.. Untuk mengindari hal-hal yang tidak diinginkan seperti eksploitasi dan sebagainya.: 17-10-2005 *** ** Penjelasan...Masalah Keamanan.39: Tampilan halaman pasang iklan pada member area PENJALASAN SCRIPT Sebenarnya script ini tidak terlalu istimewa. lalu ketik kode berikut.. Jika namanya berbeda maka script tersebut tidak berfungsi. if ($jml_iklan > $max_post ) Isi dari $max_post dapat anda tentukan pada file konfig. Namun ada beberapa hal penting yaitu sebelum menyediakan form pemasangan iklan. Untuk membuatnya klik File > New > PHP pada PHP DESIGNER 2005... Sesuai dengan sketsa proyek awal kita..php...SuperIklan.: Untuk mengirim email iklan ke *** ** semua member *** Bab 4 .php <?php /********************************************************** ** Nama File.... Anda perhatikan bahwa nama dari textarea harus isi dan textbox harus sisa.

php'). /***********/ /************/ case 'kirim': /************/ $hasil = mysql_query("SELECT * FROM tb_email WHERE username='$_SESSION[member]'")."</table>\n</form>\n\n". $proses = $_GET['proses']. dan Contoh-contoh Aplikasi 407 ."\n" . Error Handling. $data = mysql_fetch_array($hasil). else { switch ($proses) { /**********/ case 'form': /**********/ $judul = "<h2>Email iklan ke seluruh member</h2>\n". // buat objek waktu Bab 4 . ('." <td><input type='text' name='subject' size='50' maxlength='100'></td></tr>\n" .php?proses=kirim' method='post'>\n" ./inc/class_skin.SuperIklan. Email ini akan dikirim ke semua member " ."<tr> \n<td>Sisa karakter: </td>\n" .Masalah Keamanan."<tr bgcolor='#7cb500' align='center'>\n" .form)."<tr> \n<td>Isi Iklan: </td>\n" ." <td><textarea name='isi' rows='10' cols='50' onkeyup='batas_kar(this. // koneksikan ke MySQL server // cek user apa sudah login atau belum if (!cek_session('member')) $email_ad = $not_login. ('.'></textarea></td></tr>\n" ./inc/class_waktu. ('.. break."<table border='0' cellpadding='4'>\n" .php').$java. konek_db()."superiklan../inc/konfig. $waktu = new waktu.localhost</p>\n" ."<tr> \n<td>Subject: </td>\n" . include include include include ('.php').php')./template/member_var. $email_ad = "<p>Silahkan isi suject dan isi iklan..."<tr><td></td><td><input type='submit' value='K I R I M'></td></tr>\n" ."<tr bgcolor='#7cb500' height='20'><td colspan='2'></td></tr>\n" . if ($proses == '') $proses = 'form'. $proses = filter_str($proses).localhost ***********************************************************/ session_start()."<form action='email." <td><input type='text' name='sisa' size='3' value='500' readonly='yes'></td></tr>\n" ." <td colspan='2' class='putih'>Form Email</td></tr>\n" .

while ($data = mysql_fetch_array($hasil)) { $to = $data['email'].</font></p>\n". $email_ad = "<p><font color='red'>Maaf. " . $waktu->set_mode(2)."superiklan. $isi.$isi.</p>\n". else { if ($skr >= $data['next_post']) // sudah melewati lama hari yang ditentukan { $isi = "POSTED BY: $user\n" ."\n" . $from = "From: $data[1]". // kirim email } $waktu = new waktu.localhost". // mode penambahan $next = $waktu->set_tgl(1. $waktu->set_mode(1).$skr) / 60 / 60 / 24 ). // ambil data yang di-post $subject = strip_tags($_POST['subject']). else $email_ad = "<p>Email berhasil dikirim. $lama_email hari ke depan // update nilai next_post $query = mysql_query("UPDATE tb_email SET next_post=$next WHERE username='$user'"). $isi = strip_tags($_POST['isi']).localhost\n" ."Anda menerima email ini karena anda adalah member dari \n" . // dalam detik."Anda dapat mengirim email $nanti hari lagi. } } break. $from).superiklan. Error Handling. // alamat email masing2 member mail($to.str_repeat("*". saat ini anda belum bisa mengirim email. dan Contoh-contoh Aplikasi 408 .</p>\n".Masalah Keamanan. 70)."****************************\n\n" . 70).\n\n" . // buat objek waktu $waktu->set_date().localhost.str_repeat("*". // sekarang dalam detik $user = $_SESSION['member'].localhost $waktu->set_date().<br>\n$kembali".SuperIklan. // email user // lakukan looping untuk mengirim email ke seluruh member $hasil = mysql_query("SELECT * FROM member WHERE username != '$user'"). // mode tetap $skr = $waktu->set_tgl(1). if (!$query) $email_ad = "<p>Gagal Mengupdate database. $subject. $lama_email). /*********/ Bab 4 ."\n\n\n" . } else { // kalkulasi dari detik menjadi hari $nanti = floor(($data['next_post'] ."(c) 2005 superiklan. if (!cek_field($_POST)) $email_ad = "Error: Masih ada field yang kosong." .

$skin->ganti_tag('{JUDUL}'. $mem_menu). // buat objek skin $skin->ganti_skin('. $skin->ganti_tag('{SEKARANG}'. dan Contoh-contoh Aplikasi 409 . // sekarang dalam detik Isi dari $skr merupakan tanggal sekarang dalam format detik. $skin->ganti_tag('{SISI1}'. $skin->ganti_tag('{UTAMA}'./template/skin_utama.php'). email dan next_post. Jika nilai $skr sama atau lebih besar dari next_post maka kirim email. $skin->ganti_tag('{SISI2}'. ''). $iklanku). // mode tetap $skr = $waktu->set_tgl(1).php. ?> Simpan pada direktori iklan\member dengan nama email. $waktu->set_mode(2).SuperIklan. Yang perlu kita fokuskan adalah pada case kirim. Pada case ini kita pertama-tama kiat lakukan query pada tabel tb_email untuk mendapatkan username. $skin->ganti_tag('{MENU}'. PENJALASAN SCRIPT Untuk case form saya rasa tidak perlu dijelaskan. $skin->ganti_tampilan().localhost } } $skin = new skin. Dan gambar 4. $tgl).41 menunjukkan email yang diterima salah satu user. $judul). Setelah itu kita memanggil class waktu untuk kita gunakan sebagai penentu kondisi apakah email dikirim atau tidak.40 menunjukkan output dari file ini.. Setelah kita mendapatkan nilai dari sekarang dalam detik maka kita dapat membandingkan nilainya dengan nilai dari next_post yang ada ditabel. $email_ad). Gambar 4. if ($skr >= $data['next_post']) // sudah melewati 7 hari Bab 4 . Error Handling.Masalah Keamanan.

dan Contoh-contoh Aplikasi 410 .Masalah Keamanan.40: Form kirim email iklan pada member area Gambar 4.41: Email yang diterima oleh member Untuk mengirim email keseluruh member selain user yang mengirim email itu sendiri.SuperIklan. Bab 4 .localhost Gambar 4. Error Handling. sebelumnya kita lakukan query seperti berikut.

.php'). Untuk itu kita panggil buat kembali objek waktu.Masalah Keamanan./template/member_var.. $proses = $_GET['proses']....php <?php /********************************************************** ** Nama File....php..: 17-10-2005 *** ** Penjelasan. Namun jika nilai dari $skr masih kurang dari $data['next_post'] maka tampilkan pesan bahwa ia belum bisa mengirim email karena belum melewati 7 hari../inc/class_skin. else { // handel setiap proses dengan case dan switch switch ($proses) { /***********/ case 'form': /***********/ 411 Bab 4 . if ($proses == '') $proses = 'form'.$skr) / 60 / 60 / 24 ). $nanti = floor(($data['next_post'] .localhost adalah edit.. include ('. 60 (menit). // mode penambahan $next = $waktu->set_tgl(1..localhost $query = mysql_query("UPDATE tb_email SET next_post=$next WHERE username='$user'"). $proses = filter_str($proses)..php'). $waktu->set_mode(1). Kita perlu membagi hasilnya dengan 60(detik). // dalam detik. Kita dapat menggunakan fungsi matematik floor() untuk melakukan perhitungan.: edit..php *** ** Penulis.. Script dari file edit. Error Handling. Setelah itu baru kita update isi dari next_post menggunakan query UPDATE. File ini berfungsi mengedit iklan yang sudah dipost user...SuperIklan. Setelah Untuk mengubah hasilnya menjadi dalam hari. Setelah mengirim email baru kita mengupdate isi dari next_post 7 hari kedepan namun dalam detik.: Untuk mengedit iklan yang terpasang *** ***********************************************************/ session_start(). // koneksikan ke MYSQL server // cek user apakah sudah login atau belum if (!cek_session('member')) $edit = $not_login.. dan Contoh-contoh Aplikasi . dan 24(jam)...: Rio Astamal *** ** Tanggal. File yang terakhir untuk direktori ini sekaligus yang terakhir untuk proyek superiklan. tujuh hari ke depan Isi dari $next merupakan tanggal 7 hari kedepan dalam detik. konek_db(). include ('. Buat file PHP baru pada PHP DESIGNER 2005 kemudian ketik kode berikut. $lama_email)..

dan Contoh-contoh Aplikasi 412 . Untuk memasukkan perubahan klik UPDATE. $jdl = stripslashes($data['jdl_iklan']). $id = filter_str($_GET['id']). // header judul // variabel untuk menampilkan form edit $edit = " <p>Pada halaman ini anda dapat melakukan pengeditan pada iklan anda. else { // update isi iklan Bab 4 .php?proses=proses_form' method='post'> <input type='hidden' name='id' value='$id'> <table border='0' cellpadding='4'> <tr bgcolor='#7cb500' align='center'> <td class='putih' colspan='2'>Form Edit</td></tr> <tr> \n<td>Kategori: </td><td>$kat</td></tr> <tr> \n<td>Judul Iklan: </td> <td><input type='text' name='jdl_iklan' value='$jdl' size='50'></td></tr> <tr> \n<td>Isi Iklan: </td> <td><textarea name='isi' rows='10' cols='50' onkeyup='batas_kar(this. // akhir dari variabel $edit break.php?proses=hapus' method='post'> <input type='hidden' name='id' value='$id'> <input type='submit' value='HAPUS'></td></tr> <tr height='20' bgcolor='#7cb500'><td colspan='2'></td></tr> </table> ". /*************/ /******************/ case 'proses_form': /******************/ $jdl = addslashes($_POST['jdl_iklan']). // isi iklan $judul = "<h2>Edit Iklan</h2>\n". // judul iklan $isi = stripslashes($data['isi_iklan']). Disini anda juga dapat menghapus iklan anda. sedangkan untuk menghapus klik HAPUS. // cek field if (!cek_field($_POST)) $edit = "Error: Masih ada field yang kosong. $isi = addslashes($_POST['isi']). $id = $_POST['id'].</p> $java <form action='edit.localhost // ambil data dari URL $kat = filter_str($_GET['kat']). $data = mysql_fetch_array($hasil).<br>\n$kembali". // lakukan query untuk mendapatkan informasi iklan $hasil = mysql_query("SELECT * FROM tb_iklan WHERE id_iklan='$id'").form)'>$isi</textarea></td></tr> <tr> \n<td>Sisa Karakter: </td> <td><input type='text' name='sisa' value='500' readonly='yes' size='3'></td></tr> <tr><td><input type='submit' value='UPDATE'></form></td> <td><form action='edit. Error Handling.SuperIklan.Masalah Keamanan.

$tgl). } // akhir dari switch } // akhir dari else $skin = new skin.php. $skin->ganti_tag('{SEKARANG}'. $skin->ganti_tag('{SISI1}'.SuperIklan. // cek status if (!$hasil) $edit = "Error: Gagal mengupdate iklan. '').Masalah Keamanan. $skin->ganti_tag('{SISI2}'. $iklanku). // buat objek skin $skin->ganti_skin('..<br>$kembali</p>\n". $skin->ganti_tag('{MENU}'. Jika anda mengklik judul iklan yang ada pada sisi kiri halaman pada file edit. $mem_menu). } break. // cek status if (!$hasil) $edit = "<p>Error: Gagal menghapus iklan yang ber-id: $id. $skin->ganti_tag('{UTAMA}'./template/skin_utama. dan Contoh-contoh Aplikasi 413 . $skin->ganti_tag('{JUDUL}'.localhost $hasil = mysql_query("UPDATE tb_iklan SET jdl_iklan='$jdl'. <br>\n$kembali". isi_iklan='$isi' WHERE id_iklan=$id").php yang akan dipanggil. $edit). else $edit = "<p>Iklan dengan id: $id berhasil dihapus<br>$kembali<br></p>\n". Error Handling. // dapatka id iklan yang akan dihapus // lakukan query DELETE untuk menghapus $hasil = mysql_query("DELETE FROM tb_iklan WHERE id_iklan=$id").php'). ********* Bab 4 . ?> Simpan pada direktori iklan\member dengan nama edit. $skin->ganti_tampilan(). else $edit = "Iklan berhasil diupdate. /*************/ /************/ case 'hapus': /************/ $id = $_POST['id']. $judul).<br>\n$kembali".

com. Dan bagaimana membuat website reseller yang "menjual" seperti rahasiawebmaster.Berikutnya Pada bab berikutnya kita akan mempelajari bagaimana menciptakan produk untuk dijual di internet. 414 .

ikuti langkah-langkah berikut Masuk pada direktori C:\Apache2\htdocs\webmaster Buat folder. namai folder tersebut Bab5 ********** 5 415 .Bab Memulai Bisnis di Internet Web Design Membuat Website Reseller Sebelum melanjutkan materi.

seperti apa konsep membangun bisnis internet dan sebagainya. Anda dapat mengantongi 100% keuntungan untuk diri anda sendiri. kemudian baru produk lainnya. Itu adalah beberapa point yang harus anda perhatikan ketika akan menciptakan sebuah produk. Anda tidak perlu biaya tambahan untuk membuat salinan produk anda. Biaya untuk membuatnya sangat kecil dibanding produk konvensional. Jenis produk yang cocok untuk dijual di internet adalah produk yang kasat mata(digital) artinya produk tersebut tidak tersedia secara offline. Melainkan kita akan membahas bagaimana menghasilkan uang melalui internet. Dengan memiliki reseller usaha promosi kita akan jauh lebih ringan dan mudah. Pertanyaan yang bagus. Agar produk anda laku di pasaran. produk anda harus bisa menjawab atau memecahkan masalah konsumen. dan Membuat Website Reseller . Selanjutnya kita akan membahas bagaimana menciptakan suatu produk untuk dijual. Model produk anda haruslah berbeda dengan produk yang dijual secara konvensional atau offline. Contoh-contoh produk yang dimaksud antara lain: Website Membership (seperti rahasia-webmaster.Memulai Bisnis di Internet Hari ke-25 Karena kita sudah menginjak hari baru maka ikuti langkah-langkah berikut: Masuk pada direktori C:\Apache2\htdocs\webmaster\Bab5 Buat folder baru dan namai folder tersebut hari-25 Memulai Bisnis di Internet Materi kita kali ini sama sekali tidak berhubungan dengan programming. Mengapa kita menjual produk digital bukan produk konvesional?. Pada bahasan ini anda akan menemukan bagaimana memulai bisnis di internet. Maka kita juga harus berpikir juga produk apa yang sebaiknya kita buat. Produk digital memiliki banyak kelebihan diantaranya: Produk digital dapat didistribusikan dengan cepat karena melalui internet. Seperti bisnis-bisnis model lainnya. anda harus memiki produk untuk dijual. Karena dengan memiliki website membership kita dapat menjadikan member kita sebagai reseller yang menjadi tenaga penjual kita. Materi ini tidak kalah menariknya dengan bermain kode-kode PHP. Menciptakan Produk untuk Dijual Ketika kita bicara bagaimana membuat produk.com) Software komputer E-book (seperti yang anda baca) Mailing List Layanan iklan Servis web hosting dan sebagainya Namun yang pasti harus anda miliki adalah website membership. Bisnis diinternet tidak jauh berbeda.Memulai Bisnis di Internet. Apakah produk ini dapat diterima konsumen? Apakah banyak orang yang mencarinya?. Web Design. Tanpa adanya produk sama halnya anda tidak memiliki apa-apa untuk dijual ke konsumen. 416 Bab 5 .

pasti informasi itu akan menarik. Informasi semacam ini lebih banyak mengundang perhatian orang daripada informasi yang bersifat berita.Memulai Bisnis di Internet Dan masih banyak lagi.. Informasi yang sering dicari oleh orang adalah informasi yang bersifat "bagaiamana .. Mereka akan dengan senang hati membeli produk anda. Namun sebelumnya jawab dulu pertanyaan berikut. Apa yang mereka inginkan? Apa masalah yang sering mereka hadapi? Apa yang anda punya sehingga dapat membantu mereka? Jika anda dapat menjawab pertanyaan-pertanyaan tersebut kepada mereka. Jadi kesimpulannya. Anda telah memiliki produk yang akan dibeli oleh konsumen berapa pun harganya. Apapun produk anda nantinya. Informasi apa yang dibutuhkan orang saat ini? Jika anda dapat menjawab pertanyaan diatas. lho kok!. Mulai Menulis produk Bab 5 . Namun nilai dari produk anda saya jamin meningkat jika anda menambahkan ramuan rahasia yaitu uang. Memang anda tidak harus menambahkan konsep uang pada produk anda.".... Informasi apapun yang ada pada benak anda saat ini... Tuangkan saja pada segelas kopi. Jika anda menyuruh saya untuk menjawab pertanyaan diatas.". Tentu jawaban saya adalah "Bagaimana menghasilkan uang.". maksud saya tuangkan ide anda tersebut pada kertas atau ketikkan pada komputer. Jika anda seorang penulis anda dapat menulis sesuatu untuk dijual.. dan Membuat Website Reseller 417 . Uang adalah suatu kebutuhan universal yang dibutuhkan oleh setiap orang.. " atau "How to . berhentilah dulu.. Namun jika anda tidak bisa menjawabnya. SELAMAT. Apapun informasi anda ketika sudah berhubungan dengan "bagaimana..Memulai Bisnis di Internet. Jika anda seorang programmer anda dapat membuat software untuk dijual... Jika produk anda tersebut terdapat informasi tentang uang. apapun produk anda nantinya tambahkan konsep tentang bagaimana menghasilkan uang didalamnya. Web Design. Menentukan Informasi yang Tepat Jika anda benar-benar ingin sukses. anda perlu memperhatikan point-point berikut dalam menentukan produk yang akan anda jual. Secara otomatis produk anda memiliki nilai plus dimata konsumen. Contoh informasi yang tidak cocok untuk digunakan produk adalah Bagaiamana menggunakan internet? Komunikasi lewat email Namun bagaiaman jika kita ubah menjadi seperti berikut: Bagaimana menghasilkan uang melalui internet? Bagaimana memanfaatkan email untuk menghasilkan jutaan rupiah? Respon dari konsumen akan meningkat jika kita mengubah informasinya seperti yang kedua.

saya asumsikan anda telah memiliki ide dan akan mengembangkan ide tersebut untuk menjadi sebuah produk. dan Membuat Website Reseller 418 . saya memang telah memiliki ide namun saya tidak terlalu ahli dalam bidang itu? Itu sih masalah gampang. Menentukan Judul E-book Judul merupakan salah satu hal yang sangat penting dalam menentukan kesuksesan produk anda. Membuat file E-book (PDF) Setelah produk anda selesai anda susun. Menggunakan jasa orang lain yang ahli dalam bidangnya 2.pdf (portable document format). google misalnya. Memanfaatkan internet sebagai daftar pustaka Untuk yang pertama yaitu menggunakan jasa orang lain. Setelah semua data yang anda perlukan sudah terkumpul. Langkah-langkah yang harus anda lakukan adalah Buka situs search engine Ketikkan kata kunci yang anda inginkan (misalnya "internet business") Seluruh informasi akan muncul Kumpulkan data dengan melakukan browsing ke masing-masing link Setelah semua informasi anda dapatkan atur susunannya Buatlah bab-bab agar susunan tulisan anda terstruktur Dengan cara diatas anda akan mendapatkan informasi dengan cepat dan tanpa perlu memikirkan acara tulis menulis. Anda hanya perlu mengajukan pertanyaan-pertanyaan yang sesuai dengan keahlian orang itu. Pemanfaatan internet disini adalah kita mengumpulkan segala informasi yang kita perlukan dengan bantuan search engine. Web Design. Saatnya menyatukan semuanya ke dalam satu ke satuan. Untuk itu anda perlu berpikir ekstra dalam menentukan judul e-book anda. Kemungkinan besar e-book anda tidak akan terbaca. Ada dua akternatif untuk mengatasi masalah anda: 1. Jika judul e-book anda tidak menarik bagaimana kita bisa menarik minat orang. Dan sesuai dengan produk anda tentunya. Langkah terakhir adalah mengubahnya menjadi buku digital (e-book). Sebagai contoh sewaktu saya menulis e-book ini saya memiliki beberapa pilihan judul diantaranya: Web Programming Dengan PHP Panduan Menjadi Webmaster Mastering PHP 5 Menjadi Webmaster dalam 30 Hari Sekarang saya bertanya kepada anda.Memulai Bisnis di Internet. Untuk lingkungan windows yang paling Bab 5 .Memulai Bisnis di Internet OK. Cara yang kedua adalah dengan memanfaatkan internet. Kemudian muncul pertanyaan. Silahkan putuskan sendiri. Kegagalan produk anda juga dapat terletak pada judul e-book anda. Kalaupun isi e-book anda sangat menarik namun jika judulnya tidak menarik. manakah judul yang menurut anda paling menarik?. Dan untuk membacanya kita memerlukan PDF viewer. File e-book biasanya berekstensi *.

Tunggu dulu. Mengotomatiskan Bisnis Anda Mengotomatiskan disini bukan berarti kita membeli sebuah mesin atau suatu alat yang berupa hardware dan sebagainya. Anda telah memiliki kemampuan programming. Sedangkan untuk lingkungan Linux kita dapat menggunakan Xpdf yang biasanya sudah dibundel disebagian besar distro linux. Untuk membuat file berformat PDF. dalam dunia software terdapat dua kubu software yang berbayar (shareware) atau software yang gratis (freeware). Sehingga jika e-book kita terdiri dari banyak halaman.primopdf. Ya sebuah website.. Namun kita akan mempraktekkannya pada bahasan selanjutnya. Harga software ini sangat mahal untuk ukuran kita.Memulai Bisnis di Internet banyak digunakan adapah Adobe(R) Acrobat(R) Reader. Wah. PrimoPDF sangat bagus dalam menghasilkan file PDF. Kemudian pada pilihan printer pilih PrimoPDF. bukan reader. dan sebagainya yang bersifat editing. Dalam beberapa bagian pada penjelasan ini. dan Membuat Website Reseller .Memulai Bisnis di Internet. Jika anda ingin membuat file PDF tanpa ingin mengeluarkan uang sepeserpun. kelebihan dari software ini adalah anda dapat membuat file PDF dari segala macam aplikasi.. Pada bagian ini yang paling harus anda perhatikan adalah headline/judul website dan sales letter. sedangkan untuk membuatnya bagaiamana?. kalau begitu nggak jadi bikin ebook nih!. Website otomatis yang akan kita buat meliputi: Sistem Sistem Sistem Sistem Presentasi Otomatis Pelayanan Otomatis Follow Up Otomatis Reseller Otomatis Sistem Presentasi Otomatis Bagian ini adalah bagian dari website kita yang mempresentasikan produk anda. Sekarang saatnya memanfaatkan kemampuan anda tersebut untuk menghasilkan uang. Untuk menghasilkan file PDF anda cukup klik File > Print pada aplikasi tertentu. Dalam hal teknis pembuatan saya kira nantinya tidak ada masalah.. kita menggunakan rahasia-webmaster. Setelah anda mendownload PrimoPDF.com/). Kita perlu Adobe(R) Acrobat(R). Anda dapat menggunakan software PrimoPDF (http://www.com Bab 5 . Yang dimaksud mengotomatiskan disini adalah adalah sebuah website. Anda juga dapat menentukan resolusi cetak dengan mengklik link properties pada saat akan mencetak. Ini dikarenakan PrimoPDF berfungsi sebagai printer virtual. Untuk kali ini kita akan membahas bagaimana membuat website yang secara otmatis bekerja untuk anda 24 jam X 7 hari tanpa henti. Hasilnya pun tidak kalah dibanding Adobe(R) Acrobat(R). dari bab 1 sampai bab 4 yang lalu. Yang namanya program gratis pasti memiliki keterbatasan. File PDF pun berhasil dibuat. Setelah itu klik tombol Save. mencapai ratusan dollar. Install software tersebut. Web Design. Selain itu anda dapat memproteksi document dengan password agar tidak dapat dibuka oleh sembarang orang. User akan cukup sulit dalam berpindah antar bab karena pada file PDF kita tidak terdapat bookmark. Salah satu kelemahan PrimoPDF adalah kita tidak bisa memberi bookmark atau komentar pada file PDF. Tentukan letak penyimpanan file. Mungkin dalam pikiran anda saat ini anda sudah dapat membayangkan bagaimana cara membuatnya. Itu untuk membacanya.

kita harus mendapatkan perhatian lebih dari mereka. Maka mereka adalah calon pembeli produk kita.Memulai Bisnis di Internet sebagai studi kasus. Lihat contoh headline berikut.com Gambar diatas menunjukkan headline yang saya tulis untuk website rahasia-webmaster. Buatlah pengunjung website anda setidaknya berkata. Tidak peduli apapun tujuan mereka ketika mereka sudah ada pada website kita. Gambar 5. Jika mereka tidak tertarik maka boleh dibilang headline anda gagal. Saya rasa headline tersebut yang membawa anda untuk membeli e-book ini. website ini kelihatannya menarik" Ketika kita sudah mulai mendapatkan perhatian mereka. Sehingga akhirnya mereka mau membeli produk kita. Salah satu cara untuk menarik perhatian mereka adalah dengan membuat headline website yang menarik. Headline / Judul Mungkin banyak dari pengunjung anda adalah orang yang sebenarnya datang tanpa maksud.Memulai Bisnis di Internet. Dengan demikian pengunjung website anda akan lebih berlama-lama di website anda. betul?.com. Headline kita harus dapat mencerminkan manfaat produk kita. Kita hanya memeliki beberapa detik untuk menangkap perhatian mereka. "Hmm…. dan Membuat Website Reseller 420 . Oleh karena itu. Mereka mungkin kebetulan surfing dan secara tidak sengaja "terdampar" di website anda. Sebenarnya jika dikategorikan ada beberapa jenis headline diantaranya: Headline "Bagaimana" / "How To" Headline Pertanyaan Bab 5 . Maka kita mempunyai kesempatan untuk mempresentasikan produk kita lebih lanjut.0: Headline rahasia-webmaster. Web Design.

Namun sekarang kehidupan anda telah berubah. yang sekarang anda baca adalah buktinya.Memulai Bisnis di Internet Headline Berita Jika anda perhatikan pada rahasia-webmaster. Pembukaan Bab 5 . dan Membuat Website Reseller 421 . Jika sudah dalam keadaan seperti ini kita perlu memberitahukanan manfaat apa saja yang akan mereka peroleh setelah memiliki produk anda. Maka anda harus tetap menjaga minat mereka untuk tetap membaca sales letter anda.Memulai Bisnis di Internet.com saya menggunakan dua tipe headline yaitu tipe "Bagaimana" (Bagaimana Menjadi Webmaster dalam 30 Hari dan Menghasilkan Jutaan Rupiah dari Internet). Karena dengan begitu mereka akan tahu manfaat terbesar setelah memiliki produk anda. Dan yang kedua yaitu tipe Berita ("Jadikan Diri Anda Seorang Webmaster hanya dalam waktu 30 hari Saja!!!). Dan dengan memiliki produk anda yakinkan mereka bahwa mereka akan mengalami hal yang sama dengan anda yaitu kesuksesan. Dalam sales letter kita dapat membaginya pada beberapa bagian diantaranya: Pembukaan Manfaat Kredibilitas Harga Ciptakan kondisi Pemesanan Garansi Bonus Penutupan Sales Letter Setelah anda mendapatkan perhatian mereka. Sehingga akhirnya mereka mau memutuskan untuk membeli produk kita. Saya rasa anda sudah tahu keampuhan headline yang saya tulis. Sales letter menjadi penentu seberapa banyak pengunjung yang akan membeli produk anda dari 1000 orang pengunjung misalnya. Karena sales letter bertugas mempresentasikan produk kita. Mau buktinya? Ya…. berpikirlah dari sudut pandang konsumen. Sekarang giliran sales letter yang melanjutkan presentasi produk kita. Maka kita harus mendesainnya untuk sebaik mungkin dapat menarik hati konsumen. jika sales letter anda "payah" maka konsumen tidak akan pernah tahu manfaat yang diperoleh dari produk anda. Ingat!. sebagus apapun produk anda nantinya. Web Design. Sales letter merupakan sistem yang berupa tulisan pada website yang bertugas untuk mempresentasikan produk anda kepada pengunjung sebaik mungkin sehingga mereka memutuskan untuk membeli produk anda. Setelah tugas penarik perhatian yang dilakukan oleh headline berhasil. Oleh karena itu jika anda menulis sales letter. Atau anda pernah dalam posisi mereka. Pada pembukaan ini anda dapat menuliskan secara sekilas manfaat terbesar yang mereka dapatkan setelah memiliki produk anda. Oleh karena itu sales letter harus kita desain agar menampilkan manfaat terbesar yang mereka peroleh setelah memiliki produk anda. Dalam beberapa paragraf awal anda dapat menyampaikan pada pengunjung bahwa anda tahu cara memecahkan masalah mereka. Dengan demikian rasa penasaran mereka untuk terus mengetahui produk anda semakin lamalama membara.

Tag HTML yang dapat kita gunakan untuk bullet list adalah tag <ul></ul> dan <li></li>.com Manfaat yang anda tulis juga sangat menentukan keputusan pengunjung dalam membeli produk anda. Selain itu cara yang paling efektif adalah dengan menunjukkan kepuasan (testimonial) konsumen terdahulu. Bab 5 . dan Membuat Website Reseller 422 .Memulai Bisnis di Internet. Jangan tutupi diri anda dengan tidak mencantumkan profil data diri anda dengan lengkap.1: Daftar manfaat pada rahasia-webmaster. Desainlah daftar manfaat tersebut pada setiap baris berbeda.Memulai Bisnis di Internet Daftar Manfaat Setalah anda sudah menciptakan rasa keingintahuan yang lebih besar dari konsumen. Jadi pastikan daftar manfaat terbaik yang anda tulis dalam daftar manfaat. Atau akan lebih baik jika anda menggunakan bullet list. Saatnya memberikan daftar manfaat yang akan mereka peroleh. Tentu produk dari mereka lebih dipercaya konsumen ketimbang produk dari produsen yang tidak jelas kredibilitasnya. Kita semua tahu jika kita membeli dari produsen terkemuka yang kredibilitasnya sudah jelas. Dengan demikian mereka dapat percaya kalau produk anda memang benar-benar berhasil. Gambar 5. Kita dapat menunjukkan kredibilitas dengan memberikan informasi mengapa kita ahli dalam bidang tersebut. Langkah selanjutnya adalah dengan menunjukkan beberapa hal yang berhubungan dengan kredibilitas. Untuk mempermudah pengunjung dalam memahami manfaat produk anda. Web Design. kemudian lebih kita perkuat lagi dengan memeberi daftar manfaat produk kita pada mereka. Karena dengan mencantumkan profil diri anda secara lengkap. Kesan negatif terhadap anda dapat dihilangkan. Kredibilitas Setelah kita mendapatkan perhatian mereka.

Bisa-bisa pengunjung bertanya. "Ini produk dijual apa tidak sih?".Memulai Bisnis di Internet Harga Ini bagian yang juga jangan anda lupakan. Namun anda hanya menjualnya seharga 100 ribu. Diantaranya anda harus dapat membuat seolah-olah harga produk anda tidak pantas dihargai dengan harga tersebut karena manfaatnya begitu besar. Dalam membuat link pemesanan pada sales letter anda.com.Memulai Bisnis di Internet. Bagaimana caranya? Caranya adalah dengan menciptakan kondisi keterburu-buruan. Masa. Maka sekali lagi harus kita yakinkan agar segera membeli produk kita. Jika anda memesan sebelum hari Rabu. Pemesanan Pada bagian ini kita dapat beranggapan bahwa pengunjung telah memiliki minat dan mereka hendak membeli produk kita. maka dapatkan juga 8 SUPER BONUS!!! Contoh deadline diatas adalah deadline yang saya gunakan pada sales letter rahasiawebmaster. 19 Oktober 2005. kan tidak lucu. Ya dengan menciptakan kondisi tersebut calon pembeli produk kita akan segera melakukan tindakan. Misalnya setelah daftar manfaat atau harga e-book anda. Letak dari link-link yang merujuk ke pemesanan juga harus anda perhatikan letaknya. Salah satu contoh untuk menciptakan rasa keterburu-buruan adalah dengan menggunakan deadline. Web Design. Di bawahnya anda beri link pemesanan seperti. jutaan rupiah sudah dapat saya kantongi. Lihat contoh berikut. Ciptakan Kondisi Setelah pengunjung mengetahui harga produk anda. Anda harus menyediakan jalan bagi mereka untuk menuju proses pemesanan. Buatlah link tersebut tampak jelas dengan cara memperbesar tulisan dan sebagainya. anda menulis panjang lebar dalam sales letter anda namun anda tidak mencamtukan harga. Dan seharusnya harganya mencapai jutaan. Misalnya anda memiliki sebuah produk yang sangat berkualiatas. Namun dengan beberapa baris kode tersebut. PESAN SEKARANG JUGA! Bab 5 . Maka kita harus menunjukkan kepada mereka dengan jelas tata cara pemesanan produk kita. Dalam mencantukan harga anda harus memperhatikan beberapa hal. Yaitu melakukan pemesanan produk kita dan akhirnya membeli. Saya yakin deadline diatas pasti memiliki pengaruh pada keputusan anda. Dalam hal ini kita dapat menyediakan link pemesanan. dan Membuat Website Reseller 423 . Untuk menciptakan deadline diatas kita sudah pernah membuatnya. Buatlah pengunjung merasa bahwa ia beruntung menemukan sebuah produk yang berkualiatas namun dengan harga yang rendah. Kita hanya memerlukan beberapa baris kode PHP untuk menciptakan deadline seperti diatas. Dengan demikian link tersebut akan mendapat perhatian lebih dari pengunjung.

Maka akan semakin membuat konsumen ingin cepat-cepat mencoba produk anda. Jika mereka merasa tidak puas terhadap produk anda.Memulai Bisnis di Internet. Entah itu masih trial atau sudah dicrack. Atau bahasa kerennya LIFE TIME. Jika anda menyertakan suatu program shareware dalam bonus anda.Memulai Bisnis di Internet Dengan demikian pengunjung dapat langsung bereaksi melakukan pemesanan. biasanya mereka menunda permintaan garansi mereka. Membeli sesuatu semuanya terdapat resiko. Pertanyaan diatas terletak pada seberapa bagus produk anda. Bonus Mungkin bonus menjadi salah satu hal yang penting dalam peran serta mempengaruhi keputusan pengunjung untuk membeli produk kita. dan Membuat Website Reseller 424 . Garansi Jika kita berbicara tentang pembelian suatu produk. Saya rasa anda sudah tahu pengaruh bonus terhadap produk utama anda. Jadi jika ada seseorang yang memikat hati konsumen dengan embel-embel software yang jelas-jelas berlisensi hak cipta. Semakin pendek waktu garansi produk anda. Dengan adanya bonus seperti itu keinginan anda untuk membeli akan semakin besar. Anda dapat memberikan bonus berupa e-book gratis. Karena anda dianggap telah melanggar undang-undang hak cipta orang lain. Dengan begitu mereka tidak akan terburu-buru mencoba produk anda. Anda dapat dikenai sanksi berupa pidana. Jika belum ingatingat kembali waktu anda belum memiliki e-book ini. Dan kemudian jika mereka tidak puas. Mungkin dalam pikiran anda. Seperti program-program shareware. Saya sarankan anda untuk memberikan waktu garansi yang cukup lama. Dan sudah wajar kalau akhirnya mereka lupa. jangan pernah menual produk yang memiliki lisensi hak cipta. "Bagaimana jika mereka meminta pengembalian produk?". Dan saya yakin jika memang produk anda berkualitas dan memang bermanfaat untuk mereka. Mereka tidak akan meminta kembali uangnya. produk berlisensi hak jual ulang. Seperti pada rahasia-webmaster.com yaitu servis iklan gratis dan gratis update seumur hidup. Entah itu secara offline lebih-lebih secara online. Web Design. Namun perlu anda ingat. Namun saya sarankan jangan memberikan waktu garansi terlalu pendek semisal 7 hari atau 30 hari. betul?. Untuk menghilangkan rasa ketakutan dan meningkatkan rasa keyakinan pengunjung kita wajib memberikan garansi. atau sebuah servis. Karena telah mengetahui daftar menfaat produk anda. Waktu garansi yang dapat anda berikan juga bervariasi. Maka pengetahuannya akan dunia bisnis ataupun TI perlu dipertanyakan. Pada bagian ini tegaskan sekali lagi bahwa Bab 5 . Maka faktor garansi jangan pernah anda abaikan. Maka mereka dengan segera meminta kembali uangnya. Misalnya 6 bulan. 8 bulan atau 1 tahun atau bahkan lebih. Penutupan Pada bagian yang terakhir adalah penutupan. Karena dengan menambahkan bonus dapat meningkatkan minat calon pembeli kita menjadi berlipat-lipat.

Tugas kita hanyalah mengaktifkan keanggotaan user yang telah melakukan transfer dana ke rekening kita. Database member Database Pemesan Form Registrasi Email Konfirmasi Transfer Dana Keanggotaan diaktifkan Email Konfirmasi Member Area Gambar 5.Memulai Bisnis di Internet produk anda mempunyai manfaat yang begitu besar.Memulai Bisnis di Internet. Maka sekarang tugas anda sebagai pengelola hanyalah mengecek kecocokan dana yang ditransfer. Skenario untuk sistem pelayanan otomatis adalah sebagai berikut: 1. Sudah dibilang dari tadi. database dan pengiriman email berjalan secara otomatis. setelah itu kita tinggal menunggu mereka melakukan transfer. Ketika user mensubmit form registrasi. Juga Ingatkan pada pengunjung bahwa penawaran seperti ini memiliki keterbatasan waktu. Email konfirmasi yang terkirim ke alamat email user berisi data transfer rekening pengelola dan reseller lengkap dengan alamat email dan nomor telpon reseller. Bab 5 . 2. 5. Sehingga mereka harus cepat memutuskan untuk bertindak. dan Membuat Website Reseller 425 . Rajin-rajin berdoa OK. Maka secara profil dari user tersebut akan kita simpan pada tabel pemesan. User telah memutuskan untuk memesan produk anda User mengisi form registrasi yang telah disediakan User menerima email konfirmasi pendaftaran User melakukan transfer ke pengelola dan reseller Keanggotaan user diaktifkan oleh pengelola User menerima email pemberitahuan bahwa keanggotaannya telah diaktifkan User masuk ke member area dan mendownload produk utama Setelah anda mengatahui alur pelayanan otomatis. 7. Web Design. 6. 4. Dan secara otomatis sebuah email yang berisi konfirmasi pendaftaran akan terkirim ke alamat email user tersebut. Bahwa dalam sistem pelayanan ini kita harus menyediakan dua tabel. maksudnya otomatis disini adalah website yang kita bangun menggunakan script PHP.2: Flowchart sistem pelayanan otomatis Penjelasan Flowchart(Diagaram) Dari flowchart diatas dapat kita lihat. Satu untuk pemesan dan satu member. Pada bagian ini website kita desain sedemikian rupa sehingga proses mulai dari registrasi. mesti jual rumah dulu dong?!!. Nah. Setelah user melakukan transfer data ke alamat rekening pengelola dan resellernya. Kalau mau beli robot. 3. Maka dengan sedikit gambaran kita dapat menciptakan sketsa alur script yang akan kita buat. Sistem Pelayanan Otomatis Pelayanan otomatis? Ini menggunakan robot atau apa.

Secara otomatis sebuah email berisi pemberitahuan bahwa keanggotaannya telah diaktifkan. Disamping kiri halaman selalu terdapat link download e-book gratis. Nah. Kemungkinan lain adalah jika suatu saat user meminta garansi. Untuk itu kita memerlukan suatu metode agar kita tetap dapat mengontak user tersebut. Follow-up disini tentunya adalah dengan menggunakan media email. Caranya? Satu-satunya cara yang harus kita lakukan adalah dengan menangkap email dari user tersebut. Dengan demikian secara otomatis alamat email user berada dalam target follow-up anda. Data user tersebut pada tabel pemesan sekarang sudah dihapus.Memulai Bisnis di Internet. Anda mungkin menemukan seorang member yang ternyata belum mentransfer dana namun sudah diaktivasi. Kita memerlukan alamat email ini karena kita akan terus melakukan follw-up pada user ini sampai ia memutuskan untuk membeli. dan Membuat Website Reseller 426 . Anda tentu ingat ketika mengunjungi rahasia-webmaster. Itu bisa berupa e-book atau software. Dengan demikian ia dapat login ke member area untuk mendownload produk. Anda sebagai pengelola juga dapat memblokir keanggotaan seorang member. Follow-up merupakan suatu cara untuk tetap berhubungan dengan prospek kita sampai ia memutuskan untuk membeli produk kita. Sistem Follow-Up Otomatis Seringkali kita mengunjungi suatu website dan kadang kita tidak pernah kembali ke website tersebut. Selain melakukan aktivasi user. Dan dipindah ke tabel member. Anda tinggal menekan tombol untuk melakukan aktivasi terhadap user tersebut. Dan kemudian anda sudah mengembalikan uangnya. Web Design. Meskipun ia belum memutuskan untuk membeli. dengan adanya fasilitas blokir member tersebut. Kita dapat memblokir keanggotaannya sehingga ia tidak dapat login. Kenyataan seperti diatas jangan sampai terjadi pada website anda.com. Namun untuk mendapatkannya user harus memasukkan nama dan email mereka. Setelah anda mengaktivasi user tersebut. Maka anda dapat melakukan pemblokiran atau menghapus permanen user tersebut dari database. Ternyata hanya terlewat begitu saja. Menangkap Email Pengunjung Salah satu cara yang efektif untuk mendapatkan email dari user adalah dengan memberikan sesuatu yang gratis untuk mereka.Memulai Bisnis di Internet Jika dana tersebut cocok dengan yang ada didatabase. Sistem follow-up sendiri dapat kita bagi menjadi beberapa bagian yaitu: Follow-up untuk prospek: serangkaian email yang kita kirimkan berupa materi atau ajakan sampai akahirnya terjadi pembelian Follow-up untuk reseller: Serangkian email yang kita kirimkan berupa materi strategi promosi yang benar dan sebagainya Untuk melakukan follow-up secara otomatis kita memerlukan suatu servis yang dinamakan autoresponder. Dimana seorang pengunjung yang semestinya membeli produk kita. Bab 5 .

Jika anda tanya seberapa besar pengaruh follow up terhadap jumlah pembelian produk anda.com. Meskipun FreeAutobot menyediakan servis gratis untuk autoresponder yaitu sebanyak 12 kali pengiriman email. Namun jangan khawatir karena dengan autorespender pengiriman follow-up tersebut terkirim secara otomatis. Tentu follow up sangatlah penting. Maka FreeAutobot (http://www. Dalam 12 kali pengiriman email tersebut anda dapat menjadwal interval waktu masing-masing email. Bab 5 .3: Form untuk menangkap email prospek Autoresponder merupakan suatu servis atau layanan yang memungkinkan anda untuk mengirimkan email dalam interval waktu tertentu sesuai settingan anda. Semua itu dapat anda atur pada halaman member freeautobot.Memulai Bisnis di Internet Gambar 5. Yang perlu anda lakukan adalah merancang isi dari email yang anda kirim.Memulai Bisnis di Internet. Misalnya email ke-2 dikirim 3 hari setelah email pertama.com/) adalah pilihan alternatif yang sangat saya anjurkan. Dengan menggunakan autoresponder kita dapat terus mengirimkan email yang berbeda-beda guna meyakinkan calon konsumen kita. FreeAutobot tidak memasang iklan pada setiap email yang dikirim sehingga email kita lebih tampak professional. dan Membuat Website Reseller 427 . Jika servis web hosting anda tidak menyediakan fasilitas autoresponder. Tips Isi Follow-up Prospek Prospek disini adalah user atau pengunjung yang telah mengunjungi website kita namun belum melakukan pemesanan pada kali pertama. Email ke-3 dikirm 5 hari setelah email ke-2 dan seterusnya. Email dari para prospek ini kita dapat ketika mereka memasukkan nama dan email untuk mendapatkan e-book gratis. Biasanya anda harus melakukan berkali-kali follow-up agar mereka akhirnya membeli produk anda. Karena biasanya orang harus diyakinkan beberapa kali sebelum akhirnya memutuskan membeli. Isi dari follow-up bagi para prospek harus anda rancang untuk dapat membangkitkan kembali minat mereka untuk membeli produk anda.freeautobot. Web Design.

Bimbing mereka agar promosi yang mereka lakukan efektif. jika kita mengirimnya dengan interval waktu yang cukup lama. Namun. Pada pesan pertama ini berikan link download untuk produk gratis yang telah anda janjikan sebelumnya. Selain itu anda juga dapat melakukan follow-up ke semua reseller lewat email. Sehingga anda sebagai pengelola memperoleh keuntungan. Cantumkan testimonial dari member yang telah membeli produk anda lebih dulu. Contoh isi email untuk follow-up reseller: 1. dan Membuat Website Reseller 428 . Begitu pula dengan mereka para reseller. Dengan demikian rasa percaya mereka kepada anda akan lebih besar. Karena fungsi reseller sangat penting dalam bisnis anda. Web Design. 4. Karena kita ingat tidak semua orang mengecek emailnya setiap hari. Tugas promosi anda digantikan oleh para reseller yang dengan rajin mempromosikan iklan anda ke berbagai media iklan. Maka yang kita dapat dari mereka bukannya rasa minat untuk membeli. Maka anda perlu melakukan training terhadap mereka.Memulai Bisnis di Internet Contoh isi email untuk follow-up prospek antara lain: 1. Dengan begitu. 5. Misalnya antara 4 hari sampai 7 hari. Berilah interval waktu yang cukup lama dan bervariasi. dan seterusnya Dengan melakukan follow-up seperti diatas mereka akan merasa bahwa anda memperhatikan member anda. Anda sudah dapat memiliki target market yang positif. Berikan penjelasan bahwa mereka juga otomatis menjadi reseller website anda dan berkesempatan menghasilkan uang. Tetapi rasa jengkel karena banyaknya email yang mereka terima. 5. Training yang dapat anda berikan pada mereka adalah dengan menyediakan suatu halaman khusus bagi reseller seputar strategi promosi. Masukkan daftar manfaat lebih banyak lagi dan produk-produk gratis berkualitas jika mereka membeli produk anda. 4. Pada email ke-3 tonjolkan manfaat produk lebih banyak. Masukkan lebih banyak testimonial lagi dan buatlah alasan mengapa mereka harus membeli sekarang. 3. Bab 5 . Karena dengan reseller anda tidak perlu susah payah melakukan promosi. Tips Follow-up Reseller/member Para reseller merupakan senjata utama anda dalam menghasilkan income yang besar. Kemungkinan satu email kita untuk dibaca setiap waktu user mengecek inboxnya akab lebih besar. 2. Dari 6 pesan follow-up seperti contoh diatas. Sampaikan terima kasih anda atas bergabungnya mereka menjadi member website anda. Lanjutkan mengenai startegi promosi. Jangan selalu cantumkan alamat website anda diakhir setiap pesan. 2. 3.Memulai Bisnis di Internet. Agar nantinya mereka dapat melakukan promosi dengan baik. ketika anda ingin meluncurkan produk baru. Berikan strategi promosi yang lebih detil. 6. Pada follow-up ke-2 berikan suatu informasi atau masalah yang dapat diatasi oleh produk anda. Jadi jika mereka melihat di inbox penuh dengan email dari kita. Berikan penjelasan mengenai tips-tips seputar promosi.

Setiap member adalah reseller Setiap reseller memiliki website duplikasi sendiri-sendiri Pengaturan komisi secara otomatis Pengelola dapat memantau para reseller Reseller dapat memantau sendiri statistiknya Sistem Reseller Otomatis Anda sebagai member rahasia-webmaster. Mengirim email konfirmasi ke user atas pemesanan produk yang dilakukan #Halaman member 1. Web Design. Contoh URL reseller sebagai berikut: http://www. Kita hanya perlu menerapkan bebera hal yaitu: #Halaman non Member 1. 2. Untuk bagi hasil sebaiknya gunakan cara langsung yaitu dengan membaginya saat pemesanan. Sebagai referensi. Salah satu cara yang paling efektif adalah dengan menggunakan reseller. 2.com?ref=username_anda Dari website duplikasi diatas secara otomatis ketika terjadi transaksi penjualan. Para reseller juga dapat memantau sendiri aktivitasnya melalui member area. Anda sebagai administrator atau pengelola dapat memantau aktivitas dari para reseller. 2. Sediakan pilihan blokir berupa checkbox dan tombol blokir untuk melakukan pemblokiran member. Anda juga memiliki website duplikasi sendiri-sendiri sesuai username anda.Memulai Bisnis di Internet Jika anda ingin menghasilkan traffic yang melimpah ke website anda. Script yang akan kita buat untuk sistem reseller otomatis sebenarnya cukup simpel. Dimana pemesan harus mentransfer ke dua rekening yaitu rekening anda sebagai pengelola dan reseller anda. Menggunakan $_GET. Dengan konsep tersebut yaitu mengubah setiap member menjadi reseller. komisi dan sebagainya. Melakukan query SQL untuk mendapatkan data dari database berupa nama bank. pada rahasia-webmaster. Mengambil isi dari variabel pada URL untuk mendapatkan username member. no. 4. berapa jumlah pengunjung.Memulai Bisnis di Internet. Karena sebagian besar telah dilakukan oleh para reseller anda. dan Membuat Website Reseller 429 .com. Lakukan query untuk mendapatkan daftar pemesan berdasarkan username member tersebut. Untuk sistem bagi hasil anda sebagai pemilik terserah mau menetapkan berapa. Sistem bagi hasil adalah 50:50. yaitu 50% untuk saya sebagai pengelola dan 50% untuk reseller. Anda dapat menerapkan hal yang serupa pada website anda. Rekening dan sebagainya. Lakukan looping while atau for untuk menampilkan semua pemesan. Tampilkan hasilnya dalam bentuk tabel 4. Berapa traffic yang dihasilkan. Rekening anda yang akan muncul. Bab 5 . Sistem pelayanan reseller otomatis ini memiliki konsep sebagai berikut: 1. Reseller adalah user yang telah menjadi member anda dan berhak mendapat komisi sekian % dari produk anda sesuai perjanjian.rahasia-webmaster. Hal itu yang akan kita terapkan pada contoh website reseller nantinya. 3. Pekerjaan promosi anda akan sangat ringan.com juga merupakan reseller kami. 3. 5. 3.

Seperti keyword. Judul website anda akan digunakan sebagai nama link pada daftar hasil pencarian. E-book.com/addurl. Jika anda memiliki kompetitor yang lebih unggul dalam hal rangking di search engine. bisnis internet. deskripsi. Dengan menggunakan meta tags anda dapat mengontrol tampilan yang akan ditampilkan search engine pada hasil pencarian. Hal yang sama juga berlaku pada website anda ketika website anda muncul di google. Ikuti petunjuk yang diberikan. Dan otomatis mereka akan mendapat komisi sekian % dari anda jika terjadi penjualan.com. Juga gunakan kata yang bervariasi misalnya e-book. Mereka cukup mereferensikan URL khusus yang anda berikan. Yaitu mendatangkan sebanyak mungkin pengunjung ke website anda. Setelah melakukan pendaftaran URL butuh waktu sekitar 1 minggu atau lebih agar website anda dapat diindex google. Coba lihat bagian meta keywords dan descriptionnya. Para reseller tidak perlu membuat website rumit dan mendesain produk. Web Design.Memulai Bisnis di Internet Tugas yang diemban oleh reseller sebanarnya sederhana. Bab 5 . Karena pencarian kebanyakan menggunakan frase bukan kata tunggal. dibuat oleh program apa dan sebagainya. Dan bagaimana menghasilkan jutaan rupiah melalui internet"> </head> Contoh diatas adalah meta tags yang saya gunakan pada website rahasia-webmaster. ebook. Anda dapat membuka alamat website kompetitor anda tersebut lalu klik View > Source. Hasil dari pencarian tersebut biasanya mencantumkan judul(title) dari website tersebut sebagai link utama. Kemudian ada sedikit penjelasan setelahnya. dan sebagainya. lowongan pekerjaan. Disini yang perlu anda perhatikan pada pembuatan meta tag adalah meta tag keywords dan meta tag description. Tips Pada meta tag keywords lebih baik gunakan frase daripada kata tunggal.google.Memulai Bisnis di Internet. anda dapat mencontoh dari kompetitor tersebut. Meskipun demikian saya anjurkan anda juga mendaftarkan website anda pada google agar dapat diindex. Meta Tags Ketika anda mencari suatu informasi pada search engine. Keberhasilan suatu website dalam mencapai ranking teratas pada search engine tidak lepas dari penggunaan kedua tag tersebut. Google misalnya. dan Membuat Website Reseller 430 . <html> <head> <title>Menjadi Webmaster dalam 30 Hari</title> <meta name="keyword" content="rahasia webmaster. peluang usaha"> <meta name="description" content="Temukan rahasia bagaimana menjadi webmaster hanya dalam waktu 30 hari saja!. Lalu Apa Hubungannya? Meta tags merupakan kumpulan tag yang diletakkan diantara tag <head></head> yang mendeskripsikan website tersebut. Untuk mendaftarkan URL website anda klik ke http://www.

com www.iklanpojok.Memulai Bisnis di Internet Jika anda ingin mendapatkan target yang besar. Oleh karena itu kita harus berusaha untuk mengoptimalkan pemasangan iklan kita.com Untuk situs-situs lainnya anda dapat mencarinya di search engine dengan mengetikkan keyword "iklan baris" atau "iklan mini".iklanbaris. Namun bagaimana jika kita ingin memasang lebih dari tiga kali. Karena iklan baris kebanyakan bersifat gratis dan instan. Karena setelah diinstall secara otomatis RoboForm akan terintegrasi dengan toolbar dari Internet Explorer atau FireFox.roboform. Bab 5 .Memulai Bisnis di Internet. Bagamana caranya? Salah satu cara yang cukup efektif dan tidak membutuhkan biaya sama sekali adalah dengan memanfaatkan software pengisi form otomatis. Hal tersebut tentu akan menguras tenaga dan menimbulkan kejenuhan.com). Saya pribadi dalam mengisi form-form pada situs-situs iklan baris memanfaatkan software RoboForm (www.com www.com www.com www. isi iklan dan sebagainya. Hal ini tidak masalah jika kita hanya ingin mengisi beberapa iklan saja. Saya pribadi menggunakan versi freeware karena saya rasa kemampuan roboform sudah cukup baik pada versi ini. Penggunaan RoboForm sangat mudah. Mengoptimalkan Pemasangan Iklan Anda tentu menyadari kalau memasang iklan di situs-situs iklan baris kita harus mengisi banyak form. Mengapa? Jawabnya simpel saja. Selain dengan menggunakan search engine.com www. cara lain yang sangat efektif diterapkan pada target market indonesia adalah iklan baris dan Milis atau Newsgroup. Dengan roboform proses pengisian form dapat anda lakukan dalam 1x klik mouse.com www. Yang anda perlukan hanyalah merancang isi dari setiap form yang akan diisi secara otomatis oleh RoboForm. Web Design. Bahkan banyak diantara situs iklan baris yang memiliki pengunjung ribuan per harinya. dan Membuat Website Reseller 431 .bekas. RoboForm hadir dalam dua versi yaitu versi Shareware dan Freeware.bursaiklan.iklaniklan. Strategi Promosi Iklan Baris Di Indonesia situs iklan baris memiliki peranan yang penting dalam hal promosi. Untuk lebih jelasnya silahkan anda baca manual atau help dari RoboForm. Dan itu kita lakukan di situs iklan baris yang berbeda. Di bawah ini adalah daftar situs iklan baris yang memiliki pengunjung terbanyak: www. Seperti judul iklan. Karena kebanyakan netter Indonesia melakukan promosi produknya melalui situs-situs iklan baris. Meskipun ada beberapa keterbatasan dibanding dengan versi PRO-nya. Ini tentu suatu "tambang emas" bagi pemilik produk seperti anda untuk memasarkan produknya.jual-beli. Daftarkan website anda ke search engine yang populer seperti Google atau Yahoo!.iklanmini.

Memulai Bisnis di Internet Meningkatkan Nilai Iklan Yang dimaksud meningkatkan nilai iklan disini adalah banyaknya orang yang mengklik iklan anda dari sekian orang yang membaca iklan anda. Maka perbandingannya adalah 10%. Satu hal yang perlu anda pegang dalam melakukan promosi adalah jangan pernah melakukan SPAM. Karena hal tersebut melanggar privasi setiap orang. dan Membuat Website Reseller 432 . Jika ada 100 orang yang membaca iklan anda dan ada 10 orang yang mengklik iklan anda. Web Design. semakin besar perbandingannya maka semakin baik pula nilai iklan anda. SPAM merupakan pengiriman email ke alamat email seseorang yang orang tersebut tidak menghendakinya. ********** Bab 5 .Memulai Bisnis di Internet.

waktu loading website anda pun akan menjadi lama. Pilihlah huruf-huruf yang mudah dibaca dan jelas. Ada beberapa kriteria yang harus anda perhatikan dalam mendasain website khusunya website komersial. abu-abu. Usahakan untuk meletakkan gambar seperlunya saja dan jangan terlalu berlebihan. Saya lebih menganjurkan untuk anda menggunakan jenis huruf verdana atau arial. Maka kita tidak boleh mengesampingkan urusan tampilan website. Namun. Karena dengan gambar yang terlalu banyak.Web Design Web Design Karena kita disini berbicara masalah bisnis. Dan jangan menset backgroundnya dalam warna-warna gelap seperti hitam. dan Membuat Website Reseller 433 . Pengunjung akan berpikir dua kali untuk membacanya secara keseluruhan. Namun jika anda mendesainnya dengan rapi. Seperti putih. Web Design.Memulai Bisnis di Internet. Yang penting adalah kerapian dan kemudahan navigasi pada website tersebut harus diperhatikan. Aspek kemudahan navigasi juga merupakan elemen penting dalam sebuah website. Meskipun website anda tidak memiliki banyak gambar. Memang untuk tampilan website tidak terlalu penting dalam penjualan produk kita. ingat kata pepatah. Kriteria-kriteria tersebut antara lain: Tampilan website Kesesuaian isi website dengan tampilan Kemudahan navigasi Dalam mendesain suatu website bisnis tampilan website tersebut harus mencerminkan bidang yang ia promosikan. Hindarilah menggunakan huruf-huruf yang tidak lazim. Karena jika tampilan website kita sudah tidak sedap dipandang. Cukup tambahkan gambar yang sekiranya dapat mendukung isi dari website anda. Berilah gambar secukupnya saja dan jangan terlalu banyak. "Dari Mata Turun ke Hati". Dalam mendesainnya kita harus memikirkan aspek kerapian dan kemudahan navigasi bagi user. Lebih-lebih jenis huruf yang anda gunakan. Meskipun menurut anda huruf tersebut keren. tata letak tulisan. Kerapian yang dimaksud disini meliputi tata letak gambar. Navigasi harus kita desain agar pengunjung dapat dengan mudah berpindah-pindah antar halaman yang ia inginkan. Dalam memilih jenis huruf untuk sebuah website bisnis. Pilihlah warna-warna yang cerah untuk background namun tidak terlalu kontras. Bab 5 . dan lainnya. Aspek kerapian adalah hal yang juga harus anda perhatikan. jenis huruf yang digunakan dan sebagainya. Website yang bagus tidak harus memakai animasi yang hi-tech seperti flash dan sebagainya. Kita ambil contoh sebuah website perbankan. website tersebut akan kelihatan bagus. Tata letak tulisan juga perlu anda pertimbangkan pendesenainnya. Karena hal itu hanya akan memperlambat proses loading website anda. Jangan-jangan nanti malah dianggap website underground. Kata mutiara tersebut saya rasa juga berlaku untuk website kita. Website yang bagus juga tidak lepas dari masalah pendesainan navigasi.

Web Design Tanpa adanya navigasi seorang user akan kesulitan dalam berbindah-pindah antar halaman. Kadang kala kita memerlukan gambar yang akan diletakkan pada website kita. Anda dapat membeli buku-buku yang membahas program tersebut. bisnis.com.Memulai Bisnis di Internet. Atau diletakkan disamping kiri atau kanan.com Bab 5 . Untuk itu kita perlu memiliki sedikit keahlian dalam menjalan program pengolah gambar seperti Adobe(R) Photoshop(R). Dan dalam waktu satu hari saja saya rasa anda sudah dapat menguasai teknik-teknik yang umum digunakan. Cukup manfaat pustaka terbesar di muka bumi apalagi kalau bukan INTERNET. Berikut ini adalah beberapa contoh template yang saya ambil dari freewebstemplate. Letakkan form untuk menangkap email prospek hampir disetiap halaman. Jika orientasi anda adalah website reseller seperti yang akan kita buat.com/. anda dapat menggunakan program lain. Ini akan selalu mengingatkan user untuk mengisi form tersebut. Di website tersebut terdapat ratusan template website yang bisa menginspirasi anda. Ada beberapa point penting yang perlu anda perhatikan. Web Design. misalnya Paint Shop Pro. Catatan: Anda tidak harus menggunakan photoshop. Namun jika anda menginginkan program pengolah gambar gratis namun tidak kalah dengan photoshop The Gimp pada linux adalah jawabannya. Untuk dapat mempelajari program pengolah seperti Adobe(R) Photoshop(R). Atau jika anda mau yang lebih murah. Karena prospek adalah segala-segalanya maka dalam mendasain tampilan website tersebut.freewebstemplate. multimedia dan masih banyak lagi. dan Membuat Website Reseller 434 . Saya rasa tidak sulit untuk mempelajari program tersebut. Salah satu tempat yang paling menarik untuk dikunjungi adalah di http://www. Mulai dari kategori hi-tech. Di internet banyak sekali website yang bisa anda jadikan inspirasi sebagai bahan pertimbangan untuk desain website anda. Lihat rahasia-webmaster. Sebaiknya link navigasi diletakkan pada bagian atas halaman dibawah gambar utama(banner).

5 Bab 5 .Web Design Gambar 5.Memulai Bisnis di Internet. dan Membuat Website Reseller 435 . Web Design.4 Gambar 5.

Coba perhatikan tampilan dan tata letak gambarnya. Rapi dan menarik bukan?.6 Gambar 5. dan Membuat Website Reseller 436 .Web Design Gambar 5.Memulai Bisnis di Internet.7 Contoh-contoh template diatas sebagian besar adalah website bisnis. jadi jika suatu saat anda Bab 5 . Web Design.

Web Design.com. Dan anda kehabisan insipirasi anda dapat mengunjungi freewebstemplate.Memulai Bisnis di Internet. ********** Bab 5 .Web Design mendapatkan job untuk membuatkan website untuk perusahaan. dan Membuat Website Reseller 437 .

Memulai Bisnis di Internet. dan Membuat Website Reseller 438 . Web Design.Bab 5 .

tampilan website yang bersih dan rapi dan sebagainya. Saya membuatnya menggunakan program The Gimp 2. Website yang akan kita buat adalah sebuah website reseller.Memulai Bisnis di Internet. Pada ladangbisnis.com/bab5/gambar Bab 5 . Sebelum melanjutkan seperti biasa lakukan hal berikut: Masuk pada direktori C:\Apache2\htdocs\webmaster\Bab5 Buat folder baru nama folder tersebut hari-26-27-28-29 27. sales letter yang menarik.localhost juga ukurannya yaitu 798x100 pixel.localhost saya hanya membuat satu gambar yaitu gambar banner yang terletak pada bagian atas website tersebut. Diantaranya headline website. dan Membuat Website Reseller 439 .localhost. Web Design. 28 & 29 ladangbisnis. Anda dapat menggantinya dengan gambar lainnya sesuai keinginan anda. Pada windows anda dapat menggunakan program Photoshop. Asal warnanya anda sesuaikan dengan content website ladangbisnis.8: Halaman utama ladangbisnis. Sesuai dengan pembahasan sebelumnya bahwa dalam membuat website yang menjual kita memerlukan beberapa strategi.localhost Hari Ke-26. Jika anda tidak dapat membuatnya cukup download materi pada bab 5 di alamat berikut: http://materi. Dimana user yang telah menjadi member dari website kita secara otomatis dia akan menjadi reseller website kita.rahasia-webmaster.2 pada linux. Di bawah ini adalah gambar jadi website yang akan kita buat.localhost Bagaimana tampilannya? lebih baik daripada proyek-proyek terdahulu kita bukan.ladangbisnis. Gambar 5. Kali ini kita akan membuat website tersebut.localhost Pada pembahasan sebelumnya kita telah membahas bagaimana membuat sebuah website yang menjual. Gambar ini saya desain sesuai dengan kebutuhan website ladangbisnis. Website yang mampu menghasilkan jutaan rupiah untuk kita.

localhost diantaranya: Untuk masuk ke admin area administrator harus mengisi username dan password. Harga produk kita yatu e-book "Internet Sebagai Ladang Bisnis" adalah Rp. banyaknya keuntungan yang diperoleh.-. Untuk bagian member dan administrator user harus mengisikan username dan password untuk dapat masuk. Syukur-syukur jika anda dapat menyelesaikannnya lebih cepat. Admin dapat menghapus member. NB: Karena pada ladangbinis. Member dapat mendownload produk utama. dan Membuat Website Reseller 440 . Anda dapat memberi komentar pada perintah mail() agar tidak dieksekusi oleh PHP sehingga tidak muncul error. Dan komisi untuk reseller adalah 50% atau Rp. Member dapat memantau statistiknya sendiri seperti banyaknya pemesan. Admin dapat mengirim email ke semua user yaitu member. banyaknya member terblokir. banyaknya member yang diblokir.localhost banyak melibatkan pengiriman email. dan bagian administrator. prospek dan member terblokir. Agar anda dapat lebih memahami gambaran umum tentang ladangbisnis. Admin dapat memantau statistik lengkap seputar ladangbisnis. Admin dapat menambah. yaitu bagian pengunjung.localhost seperti banyaknya member yang bergabung. 50. Web Design. Dimana website ini memiliki tiga bagian utama. bagian member.localhost Selanjutnya kita akan membahas teknis pembuatan website reseller yaitu ladangbisnis. Member dapat mengetahui halaman strategi promosi. mengedit atau menghapus testimonial. Admin dapat memblokir keanggotaan member yang dirasa telah melanggar kesepakatan.localhost diantaranya: Untuk masuk ke member area user harus mengisikan username dan password.Memulai Bisnis di Internet. pemesan. pemesan.000.000. Member dapat memberikan testimonialnya di member area.ladangbisnis. 100. Bagian Administrator Pada bagian ini adalah halaman-halaman yang dikhususkan untuk administrasi website ladangbisnis. Maka jika anda tidak memiliki program mail server atau anda belum di server sebenarnya. atau member terblokir berdasarkan kriteria yang diinginkan. Member dapat mengetahui traffic dan banyaknya komisi yang diperoleh. berikut adalah sketsa proyeknya.localhost. terblokir dan prospek atau secara spesifik ke satu user saja. Bagian Member Area Pada bagian ini adalah halaman-halaman yang khususkan untuk member ladangbisnis. Maka secara otomatis ia(reseller) akan memperoleh komisi 50% dari harga produk kita. pemesan. Sketsa Proyek Website yang akan kita buat adalah website reseller. dan banyaknya prospek yang masuk lewat rekomendasinya. Mari kita bahas satu per satu dari masing-masing bagian tersebut. Bab 5 . Admin dapat mengaktivasi user yang telah melakukan transfer dana atau yang telah diblokir. banyaknya member. Kita akan membuat website ini dalam waktu empat hari kita mulai pada hari ke-26. banyaknya traffic ke website. banyaknya pemesan. Admin dapat melakukan pencarian data baik member.Setiap member yang masuk lewat rekomendasi reseller kita.localhost. Member dapat memblokir member lain yang telah diaktivasi admin namun belum mentransfer dana ke rekeningnya.

maka proses selanjutnyanya adalah user harus mengisi form registrasi. dan namai folder tersebut reseller. User dapat mengetahui manfaat menajadi reseller website anda. Pada saat halaman transfer dana. Selanjutnya kita mengirim email berupa alamat link download bonus.localhost Pada flowchar gambar 5. _my_cp_. Sebelum mulai mengerjakan proyek ini lakukan beberapa konfigurasi berikut: Masuk pada direktori C:\Apache2\htdocs\webmaster\Bab5\hari-26-27-28-29 Buat folder baru. Pertama kita menghadapi kemungkinan apakah user tertarik atau tidak pada ladangbisnis.localhost.ladangbisnis. Jika tertarik maka proses dilanjutkan namun jika tidak maka proses akan berakhir yang artinya kita gagal mendapatkan user tersebut. Yang terakhir adalah proses pengiriman email konfirmasi ke user yang baru saja mendaftar.9: Flowchart alur kerja dari ladangbisnis. member. Kemungkinan kedua user memesan produk kita. dan Membuat Website Reseller 441 . Jika tidak memesan mungkin user tertarik pada bonus yang kita berikan dan ia mengisikan form bonus. Bab 5 . Start Tidak Tertarik Tertarik Tidak Pesan Ya Form Registrasi Database Form Bonus Kirim Email Finish Gambar 5. User dapat mendownload e-book gratis yang kita sediakan. include. Buat beberapa folder baru diantaranya gambar. Setelah itu user akan masuk pada daftar prospek di database kita. Web Design.localhost dapat anda lihat pada gambar 5.9 kita sudah mendapatkan gambaran umum tentang cara kerja ladangbisnis. Kemungkinan kedua user tertarik namun ia akan memesan atau tidak masih menjadi pertanyaan. User dapat mengontak admin lewat form kontak. User dapat memesan produk kita. rekening dibagi 2 satu untuk pengelola yaitu anda dan satu lagi untuk reseller anda. Halaman yang berisi daftar transfer dana yaitu pengelola dan reseller ditampilkan. Flowchart dari alur kerja website ladangbisnis. dan template.Memulai Bisnis di Internet. User dapat melihat daftar testimonial dan bonus. Kemudian data user tersebut masuk pada daftar pemesan di database.localhost Bagian Pengunjung Pada bagian ini adalah halaman-halaman yang dikhususkan untuk pengunjung/non-member diantaranya: User dapat membaca/review dari produk kita. Masuk pada direktori reseller yang baru anda buat.localhost.9.

php memproses data berupa pengaktifan. dan Membuat Website Reseller 442 .localhost (sales letter) Bab 5 .localhost.php Nama File bonus.php form login dan halaman utama admin area mail_to. Direktori reseller\_my_cp_ Nama File Fungsi cari.ladangbisnis.php strategi.css Nama File banner.php member_var.php untuk melakukan pencarian data index.php Nama File index_skin.php index.php fungsi.php profil.php Nama File admin_var.php statistik.localhost melakukan redirect ke halaman utama berisi konfigurasi halaman ladangbisnis.php style.localhost menyimpan kumpulan variabel untuk halaman member menyimpan kumpulan variabel untuk template email menyimpan kumpulan variabel untuk halaman non-member Direkori reseller\template Fungsi file skin untuk halaman non-member file skin untuk halaman member dan administrator file CSS untuk semua halaman Direktori reseller\Gambar Fungsi Gambar utama ladangbisnis. Daftar file yang akan kita buat untuk website ladangbisnis. pemblokir user dan lainnya statistik.php testimonial.php class_skin.localhost dapat anda lihat pada tabel 5.sql index.php var_utama.php download.php konfig.x Daftar file untuk website ladangbisnis.php db_reseller. dan menghapus testimonial Nama File cari.jpg index. Tabel 5.php class_halaman. mengedit.php index. Hal ini kita lakukan agar user atau para attacker yang akan mencoba masuk ke admin area sedikit mengalami kesulitan dalam menemukan form login untuk administrator.php class_waktu.x.php Direktori reseller\member Fungsi untuk pencarian data menampilkan halaman download halaman utama member area untuk mengupdate profil member menampilkan statistik dari member menampilkan halaman strategi promosi menamapilkan form testimonial dan mengirimnya ke admin Direktori reseller\include Fungsi menyimpan kumpulan variabel untuk halaman administrator class untuk menampilkan navigasi halaman class untuk mengganti tampilan halaman class untuk menampilkan waktu dan deadline pembelian menyimpan kumpulan fungsi yang diperlukan ladangbisnis.php var_mail. Web Design. Anda dapat menggantinya dengan kata yang lain yang menurut anda sulit ditebak.php menambah.php menampilkan statistik user testimonial.php member_skin.localhost Kita tidak menamakan direktori untuk file-file administrasi dengan nama admin melainkan kita ganti dengan _my_cp_.localhost (opsional) Meredirect ke halaman utama Direkori reseller Fungsi menampilkan daftar bonus untuk membangun database reseller halaman utama ladangbisnis.php untuk mengirim email ke seluruh user proses_db.Memulai Bisnis di Internet.

php pesan. password varchar(32). kota varchar(20).localhost menampilkan daftar testimonial member memproses data registrasi dan mengirim email ke user Seperti proyek-proyek terdahulu kita mulai mengerjakannya dari file databasenya terlebih dahulu. kota varchar(20). password varchar(32) ) TYPE='MyISAM'. dan Membuat Website Reseller 443 .ladangbisnis. -. nama varchar(50). Bab 5 .aktifkan database reseller USE reseller.php insert. -.hapus jika sudah ada DROP DATABASE IF EXISTS reseller. -. password varchar(32). password varchar(32). email varchar(30).php menampilkan form kontak dan memprosesnya memproses login user menampilkan form registrasi dan memprosesnya menampilkan keuntungan menjadi reseller ladangbisnis. nama varchar(50). -. kemudian salin kode berikut. reseller varchar(16).buat tabel tbl_admin CREATE TABLE tbl_admin ( username varchar(16) PRIMARY KEY. transfer int(10) ) TYPE='MyISAM'.localhost kontak.php reseller. nama varchar(50).buat tabel tbl_member CREATE TABLE tbl_member ( tgl varchar(10).php thankyou. transfer int(10) ) TYPE='MyISAM'. email varchar(30). Script dari file db_reseller. untuk itu klik menu File > New > SQL pada PHP DESIGNER 2006. Web Design. -. username varchar(16) PRIMARY KEY.buat tabel tbl_blokir CREATE TABLE tbl_blokir ( tgl varchar(10). username varchar(16) PRIMARY KEY.sql -. reseller varchar(16). username varchar(16) PRIMARY KEY. kota varchar(20). CREATE DATABASE reseller.buat tabel tbl_pemesan CREATE TABLE tbl_pemesan ( tgl varchar(10). email varchar(30).Memulai Bisnis di Internet.php testimonial.buat database reseller -.

localhost reseller varchar(16).buat tabel tbl_profil CREATE TABLE tbl_profil ( username varchar(16) PRIMARY KEY.masukkan account admin ke tbl_admin -. 'Surabaya'. 'joni'. transfer int(10) ) TYPE='MyISAM'. 'Surabaya'. testimonial text ) TYPE='MyISAM'. 'Mr.masukkan beberapa data ke tbl_member. email varchar(30) PRIMARY KEY. nama varchar(50).buat tabel tbl_traffic CREATE TABLE tbl_traffic ( username varchar(16) PRIMARY KEY. Bab 5 . 'Mr.localdomain'. 50001). username varchar(16).buat tabel tbl_testimonial CREATE TABLE tbl_testimonial ( tm_id int(4) PRIMARY KEY auto_increment. 'admin'. 'joni@localhost. '0da656c1352c7ec167b91122dd6d1aff'. password varchar(32). '0da656c1352c7ec167b91122dd6d1aff'. reseller varchar(16) ) TYPE='MyISAM'. 50000). '1835a30bcedf3c4fa4fca7b6d9092113').Memulai Bisnis di Internet. -. Jono'. Joni'. '0da656c1352c7ec167b91122dd6d1aff'. -. Web Design. 'jono@localhost.password => _super_pass_ = 1835a30bcedf3c4fa4fca7b6d9092113 -. -.localdomain'. ('26-10-2005'. telpon varchar(20). 'jono'. -. 'Surabaya'.pass123 = 0da656c1352c7ec167b91122dd6d1aff (setelah dienkrip balik_md5()) INSERT INTO tbl_member VALUES ('26-10-2005'. 'Mr. Joko'. reseller varchar(16). dan Membuat Website Reseller 444 . -. ('26-10-2005'. dan tbl_profil -. 'joni'. -. bank varchar(100) ) TYPE='MyISAM'. 'joni'. nama varchar(50). alamat varchar(100). 'joko'. 'joko@localhost.ladangbisnis. email varchar(30). CREATE TABLE tbl_transfer ( nilai int(6) PRIMARY KEY ) TYPE='MyISAM'.setelah dienkrip dengan balik_md5() INSERT INTO tbl_admin VALUES ('_^_super_user_^_'. kota varchar(20).localdomain'.masukkan member (kita asumsikan passwordnya pas123) -.buat tabel tbl_prospek CREATE TABLE tbl_prospek ( tgl_masuk varchar(10). 50002). tbl_pemesan. traffic int(6) ) TYPE='MyISAM'.

* TO res_user@localhost IDENTIFIED BY 'reseller123'. 'jojo'. Pada phpMyAdmin klik tab SQL lalu klik tombol browser arahkan ke alamat seperti pada MySQL Monitor diatas. 'joni@localhost.buat privilige untuk database ini GRANT SELECT. '0da656c1352c7ec167b91122dd6d1aff'.php.masukkan pemesan INSERT INTO tbl_pemesan VALUES ('26-10-2005'. '080808080'. Joko'). 'josi@localhost. 'Mr. 'Surabaya'. 'jono@localhost. Pada pada PHP DESIGNER 2006 klik menu File > New > PHP untuk membuat file PHP baru.localdomain'. INSERT. 'Jl. 'jojo@localhost. 'jono'.set nilai transfer ke 50005 karena yang terakhir adalah 50004 -.Rek.Memulai Bisnis di Internet. 'pas123'. 'Surabaya'. -. ('jono'. Joni'). 'Mr. 50003).a. Jono'). ('26-10-2005'. 5432167890 . 'Surabaya'. ('26-10-2005'. Josi'.Rek. Netbios 139'. Selanjutnya kita akan membuat file-file yang berada pada direktori include. -. 9876543210 . -.a. Login pada MySQL monitor kemudian ketik kode berikut. DELETE. 'Mr.com'. 'semar@mendem. 'Semar Sakti'. 'Surabaya'. '0da656c1352c7ec167b91122dd6d1aff'.a.localdomain'. 'Surabaya'. 'Bank Localhost . 'Mr. Simpan pada direktori paling atas yaitu direktori reseller dengan nama db_reseller. Script dari file index. 'joni'. 'joko'). ('joko'. 'Mr. Karena file-file pada direktori ini merupakan file library yang dipanggil hampir oleh semua halaman.sql Alternatif yang kedua kita dapat menggunakan phpMyAdmin. Tugas file ini hanyalah melakukan redirect jika ada yang mencoba masuk ke direktori include.localdomain'. Sekarang kita perlu mengeksekusi file ini untuk menciptakan database reseller.masukkan beberapa data ke tbl_profil INSERT INTO tbl_profil VALUES ('joni'.masukkan beberapa orang ke prospek INSERT INTO tbl_prospek VALUES ('26-10-2005'.php. -. Mail 21'.masukkan ke tbl_traffic INSERT INTO tbl_traffic VALUES ('admin'. Joko'. -. ('joko'. Jojo'. ('jono'. 'joni'. 'joko@localhost. Untuk yang pertama kita menggunakan MySQL monitor. Untuk yang pertama kita akan membuat file index. 'Bank Localhost . 'Jl. ('joni'. C:\>mysql –u root –p [ENTER] ENTER PASSWORD: [PASSWORD ANDA] mysql> source C:/Apache2/htdocs/webmaster/Bab5/hari-26-27-28-29/reseller/db_reseller. 'joni'). 'josi'.n Mr. Web Design. '0da656c1352c7ec167b91122dd6d1aff'.localdomain'. 15). 'Jl.com'. Jono'. UPDATE ON reseller.n Mr.com'. '070707070'. 0123456789 . 'joko'. dan Membuat Website Reseller 445 . 'gatot@kaca. 'Mr.n Mr. Joni'. Apache 80'. 10).ladangbisnis.Rek. 50004). ('26-10-2005'. 'Gatot Kaca'. 'pas123'.localhost -. kemudian ketik kode berikut.php <?php Bab 5 .yaitu si josi INSERT INTO tbl_transfer VALUES (50005). Open Source'. 'Bank Localhost . 5).localdomain'. '060606060'. 'os@linux. 4). 'joni'). 'admin'.

. // deadline hari /* KONFIGURASI UNTUK USER/MEMBER */ /***********************************/ $u_tmph = 2.localhost /********************************************************** ** Nama File.ladangbisnis...: konfig. // konfigurasi umum per halaman // ?> Simpan pada direktori reseller/include dengan nama konfig.php').: Rio Astamal *** ** Tanggal.: menyimpan konfgiurasi baik untuk *** ** halaman member dan admin *** ***********************************************************/ // cegah pengaksesan langsung dari browser if (eregi('konfig.php'./index.php <?php /********************************************************** ** Nama File.localhost......php *** ** Penulis.: 20-10-2005 *** ** Penjelasan.... dan Membuat Website Reseller AKHIR KONFIGURASI // 446 . Web Design.. ?> Simpan pada direktori reseller/include dengan nama index. tugas file ini menyimpan berbagai variabel untuk tampilan suatu halaman. Bab 5 .... // testimonial per halaman $u_pph = 2.Memulai Bisnis di Internet...php *** ** Penulis. // kembalikan ke halaman utama exit. Kemudian salin kode berikut.. Langsung saja klik menu File > New > PHP untuk membuat file php bau kemudian ketik kode berikut.php.... exit.php. } // KARENA DALAM DEVELOPMENT MAKA ANGKANYA KITA SET KECIL SAJA MISAL 2 /* KONFIGURASI UNTUK ADMIN */ /*****************************/ // ganti jumlahnya sesuai keinginan anda $a_pph = 2. $_SERVER['PHP_SELF'])) { header('Location: ......: Rio Astamal *** ** Tanggal... File berikutnya adalah konfig.php..: 17-10-2005 *** ** Penjelasan... File berikutnya yang akan kita buat adalah file yang menyimpan semua fungsi yang dipakai pada semua halaman ladangbisnis.. // konfigurasi umum per halaman $a_tmph = 2.php")../index. Script dari file konfig.. Seperti berapa testimonial yang harus ditampilkan per halaman dan sebagainya... Buat file PHP baru klik File > New > PHP..: Untuk meredirect ke halaman utama *** ***********************************************************/ // jika user mencoba masuk ke halaman inc // kembalikan ia ke halaman utama header ("Location: . // testimonial per halaman $deadline = 2..: index...

else return false. return true. } // fungsi untuk menyaring string selain alpabet. $email)) return true. exit..]+$'.. } // fungsi untuk mengkoneksikan ke MySQL server function konek_db() { // untuk username = secure dan password = secure123 @ $koneksi = mysql_connect('localhost'. 'res_user'... // Gunakan metode ini hanya jika dalam tahap development saja. } else { // pilih database yang digunakan mysql_select_db('reseller').php *** ** Penulis."<br>\n".. } return true. } //cek kevalidan email function cek_email($email) { //fungsi untuk mengecek kevalidan email if (ereg('^[a-zA-Z0-9_\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\..: menyimpan kumpulan fungsi *** ***********************************************************/ // cegah pengaksesan langsung dari browser if (eregi('fungsi.ladangbisnis."<br>\n". numerik dan _ // karakter pada parameter ke-2 tidak difilter jika diisi Bab 5 . echo "Keterangan: "..mysql_errno().php'). echo "Error: ".: 20-10-2005 *** ** Penjelasan. Web Design.: Rio Astamal *** ** Tanggal.: fungsi.php'...mysql_error(). } } //cek setiap field apa ada yang kosong function cek_field($var) { foreach ($var as $field) { if ($field == '' || !isset($field)) return false. 'reseller123')..php <?php /********************************************************** ** Nama File... dan Membuat Website Reseller 447 .Memulai Bisnis di Internet...... $_SERVER['PHP_SELF'])) { header('Location: .. exit.localhost Script dari file fungsi.. // jika gagal melakukan koneksi tampilkan pesan kesalahannya if (!$koneksi) { // jika kode anda sudah dirilis sebaiknya jangan menampilkan pesan // kesalahannya seperti berikut./index..

// ambil satu karakter } return $pass.Memulai Bisnis di Internet. } // fungsi untuk mengenkripsi string dengan metode MD5 // dan membalik urutannya function balik_md5($string) { // untuk membalik urutan string digunakan fungsi strrev() $chiper_text = strrev( md5( $string ) ). else $filter = ereg_replace("[^a-zA-Z0-9_$lainnya]". return $chiper_text. // acak karakter srand((double)microtime() * 1000000). // kembalikan nilai true } // fungsi untuk membuat password secara acak // digunakan untuk mengirim password pada form lupa password function pass_acak($panjang=8) { $kar = "ABCDEFGHJKLMNPRSTUVWXYZ0123456789abchefghjkmnpqrstuvwxyz". ''. $i++) // default diulang sebanyak 8x { $nom_acak = rand() % 53. $password) { // lakukan query untuk mencocokkan data $hasil = mysql_query("SELECT * FROM $tabel WHERE username='$username' AND password='$password'"). // kembalikan hasil } // fungsi untuk logout (menghapus session) function logout($nama_ses) { Bab 5 . // cek baris yang dikembalikan if (mysql_num_rows($hasil) == 0) return false. $username. // lakukan looping sebanyak $panjang for ($i=0. // data tidak cocok else return true. Web Design. $nom_acak. // kemblikan nilai true } // fungsi untuk login function login($tabel. // kembalikan nilai false else // jika tidak kosong return true.ladangbisnis. // untuk mendapatkan nomor acak. return $filter. $string). $lainnya='') { if ($lainnya == '') $filter = ereg_replace('[^a-zA-Z0-9_]'. $i<$panjang.= substr($kar. $string). } // fungsi untuk mengecek session function cek_session($nama_ses) { // jika session kosong if (!isset($_SESSION[$nama_ses])) return false. 1). ''. pada substr() $pass . dan Membuat Website Reseller 448 .localhost function filter_str($string.

number_format($rp. ''. $i<count($reseller). xxx. // acak array for ($i=0. 0. $i++) return $reseller[$i]. dan Membuat Website Reseller // kembalikan hasil 449 . // kembalikan false else { // jika tidak kosong hancurkan session tersebut unset($_SESSION[$nama_ses]).ladangbisnis.localhost // jika session kosong if (!isset($_SESSION[$nama_ses])) return false. // query SQL $my_array = mysql_fetch_array($hasil). // looping untuk membuat array $reseller while ($data = mysql_fetch_array($hasil)) $reseller[] . // pecah menjadi array return $my_array. '. return $rupiah. $hasil = mysql_query($query).'.function rupiah($rp) { $rupiah = 'Rp. return true.Memulai Bisnis di Internet. } //fungsi untuk mengkonversi nilai rupiah ke format Rp. Bab 5 . else return true. '.-'. Web Design. else if ($pilih == 1) // visit $query = "UPDATE tbl_traffic SET traffic=traffic+1 WHERE username='$username'".= $data[0]. // kembalikan nilai true } } // ******* FUNGSI-FUNGSI BARU ************* // // fungsi untuk mengupdate nilai transfer atau traffic function update($pilih=0. // kembalikan nilai } // fungsi untuk langsung memecah hasil query menjadi array function SQL_array($query) { $hasil = mysql_query($query). } // fungsi untuk mendapatkan username reseller secara acak function acak_reseller() { // ambil username reseller dari database $hasil = mysql_query("SELECT username FROM tbl_member").xxx.'). srand((double)microtime() * 1000000). session_destroy(). // cek status if (!$hasil) return false. $username='') { if ($pilih == 0) // transfer $query = "UPDATE tbl_transfer SET nilai=nilai+1". shuffle($reseller). else return "Error: Pilihan 0 untuk transfer dan 1 untuk visit".

PENJELASAN SCRIPT Beberapa fungsi baru yang kita tambahkan kali ini antara lain update(). Web Design.Memulai Bisnis di Internet. Namun jika parameter pertama kita isi selain 0 maka fungsi ini akan mengupdate nilai traffic yang diisikan pada parameter ke dua.localhost } // fungsi untuk mencetak kolom pada suatu tabel // cukup berguna menghemat energi jari-jari kita?!? function buat_kolom($datanya. $opsi. Jadi anda tinggal memodifikasi dan menambah fungsi baru. // tunjuk index array yang aktif // looping untuk mencetak semua kolom/array while ($isi) { $kolom . // cek status if (!$hasil) return false. $isi = next($datanya).= "<$style $lainnya>$isi</$style>\n". // kembalikan false jika ada error else { // hapus data dari tabel awal $hasil2 = mysql_query("DELETE FROM $tb_awal WHERE $opsi='$isi'"). dan Membuat Website Reseller 450 . acak_reseller(). Pada fungsi update() kita memberikan 2 parameter dua-duanya bersifat opsional. $tb_tujuan. Ada satu fungsi yang kita buang dari proyek sebelumnya yaitu fungsi show_tgl(). } // fungsi untuk memindah data antar tabel yang strukturnya sama function pindah_data($tb_awal. kita mulai dari fungsi update(). Kita akan membahasnya satu per satu. Ada beberapa fungsi yang sudah pernah kita tulis pada proyek sebelumnya. Jika tidak ada yang diisi maka secara default fungsi update() akan mengupdate nilai transfer. SQL_array(). password dan database pada fungsi konek_db().php. } } ?> Simpan pada direktori reseller/include dengan nama fungsi. $lainnya='') { // cek nilai dari style apakah kolom header atau biasa if ($style != 'td') $style = 'th'. $isi) { // lakukan query gabungan INSERT dan SELECT $hasil = mysql_query("INSERT INTO $tb_tujuan SELECT * FROM $tb_awal WHERE $opsi='$isi'"). Fungsi ini nantinya kita ganti dengan metode baru pada class_waktu. // kembalikan hasil Bab 5 . // parameter input berupa array reset($datanya). Jangan lupa ganti username. buat_kolom() dan pindah_data(). // index array berikutnya } return $kolom. // cek status if (!$hasil2) return false. $style='td'. // pastikan index array dimulai dari awal $isi = current($datanya). else return true.ladangbisnis. rupiah().

x.xxx parameter yang harus diisi adalah yang pertama. Tujuan pembuatan fungsi ini adalah agar kita tidak perlu menulis berulangulang tag <td></td> selama looping. Data pada parameter pertama ini berupa array. INSERT INTO tbl_member SELECT * FROM tbl_pemesan WHERE kolom='isi'. Sekarang susunan array $reseller yang berisi username sudah teracak. Namun dari hasil perbandingan yang saya lakukan hasilnya kurang random dibanding menggunakan looping for. Parameter pertama adalah tabel awal. Caranya adalah pertama kita lakukan query pada tabel member untuk mendapatkan daftar username. Bab 5 . Web Design. Kemudian kita memecah hasil query tersebut dengan mysql_fetch_array() dan mengembalikan hasilnya. Fungsi selanjutnya yaitu SQL_array(). Untuk itu kita gunakan fungsi reset() yang akan mengembalikan index array dari awal.localhost nantinya terdapat proses aktivasi dan pemblokiran maka data-data memerlukan beberapa baris kode jika menggunakan cara query biasa. Untuk mencetak kolom maka kita perlu menggunakan looping dalam kasus ini kita gunakan while. Seperti namanya tugas fungsi ini adalah membuat kolom. class dan sebagainya.xxx. Pada database reseller tabel yang strukturnya sama adalah tbl_member. Pada badan looping kita membuat variabel $kolom yang isinya adalah elemen array yang akan dicetak sebagai kolom. Fungsi ini memiliki empat parameter. Untuk menghasilkan string x. tbl_pemesan. Fungsi ini memiliki satu parameter yang harus diisi yaitu query SQL yang dijalankan.-. parameter ketiga adalah field/kolom. Kemudian kita acak index array dengan srand(double()) dan shuffle(). Oleh karena itu kita gunakan tanda [] pada $reseller[] sebagai identitas bahwa data yang kita inginkan berbentuk array. dan tbl_blokir. Fungsi rupiah() bertugas untuk mengubah bentuk dari angka biasa xxxx ke format Rp.localhost Fungsi berikutnya adalah acak_reseller(). Sebenarnya kita juga dapat menggunakan fungsi array seperti current() atau end() dalam menunjuk index array. Karena pada ladangbisnis. Kemudian kita membuat sebuah variabel yaitu $isi yang isinya adalah index array yang sedang aktif. Jadi untuk mempersingkatnya kita membuat fungsi ini. Fungsi pindah_data() memiliki empat parameter yang semuanya harus diisi. Fungsi berikutnya yaitu fungsi buat_kolom(). Fungsi yang terakhir yaitu pindah_data(). Untuk mencetak kolom pertama kita harus pastikan bahwa index array dari data yang akan dipakai dimulai dari awal.ladangbisnis. Untuk melakukan itu kita menggunakan fungsi number_format(). Fungsi ini cukup menarik karena dengan fungsi ini kita dapat mendapatkan username dari member secara acak. dan yang keempat adalah isi field/kolom. Kemudian parameter ke-4 yaitu tanda pemisah antar ribuan. Parameter pertama merupakan data yang akan kita masukkan pada kolom tabel. parameter kedua adalah tabel tujuan. Yaitu string yang akan dirubah formatnya.Memulai Bisnis di Internet. Satu bersifat wajib dan dua opsional. Kemudian kita gunakan looping while untuk membuat array yang isinya adalah semua username yang ada pada tabel member. dan Membuat Website Reseller 451 . Langkah terakhir adalah mengabil satu username yaitu dengan melakukan looping for. Parameter ketiga kita isi bila mana kita ingin memasukkan attribut-attribut tambahan pada kolom seperti align. Parameter kedua adalah jenis kolom apakah header kolom(th) atau kolom biasa(td). Contohnya kita akan memindah data dari tbl_pemesan ke tbl_member. Untuk memindah data yang strukturknya sama kita hanya perlu melakukan query INSERT digabung dengan query SELECT dalam satu baris perintah. Fungsi ini berguna untuk memindah data pada tabel yang strukturnya sama. Fungsi buat_kolom() memiliki tiga parameter. Setelah itu kita set index array agar berpindah ke posisi berikutnya.

. Klik File > New > PHP pada PHP DESIGNER 2006 lalu ketik kode berikut.: class_skin... $this->halaman).Memulai Bisnis di Internet. Selanjutnya adalah file yang kita gunakan untuk menampilkan menampilkan link nomor halaman. File ini sudah pernah kita buat pada proyek sebelumnya... var $file_skin. Web Design.. Script dari file class_skin. // tampilkan ke layar } } ?> Simpan pada direktori reseller/include dengan nama class_skin. // gunakan looping foreach() untuk mengganti setiap tag foreach($this->tag as $str_dicari => $str_baru) { $this->halaman = ereg_replace($str_dicari.localhost Setelah kita memindah data maka kita hapus data dari tabel sebelumnya menggunakan query DELETE...php..php <?php /********************************************************** ** Nama File.: 20-10-2005 *** ** Penjelasan.. $str_pengganti) { $this->tag[$namatag] = $str_pengganti. File dari direktori include berikutnya yang akan kita buat adalah file class_skin...php. } // metode untuk menentukan file template yang digunakan function ganti_skin($namafile) { $this->file_skin = $namafile. } // metode untuk mengganti tampilan function ganti_tampilan() { // buka file template menggunakan file() $this->halaman = file($this->file_skin).ladangbisnis.. } echo $this->halaman. Hanya saja sekarang Bab 5 .. // gabungkan setiap baris dengan implode() $this->halaman = implode("". dan Membuat Website Reseller 452 . $this->halaman)..: Rio Astamal *** ** Tanggal.. // metode untuk menentukan nama tag yang diganti // dan string penggantinya function ganti_tag($namatag. $str_baru.: Class untuk mengganti tag *** ***********************************************************/ class skin { // deklarasikan properti var $tag = array().... File ini sudah sering kita buat jadi saya rasa anda sudah sangat hafal dengan file ini.php *** ** Penulis. var $halaman.

. exit.. Script dari file class_halaman.. $jml_data. var $record. $_SERVER['PHP_SELF'])) { // kembalikan ke halaman utama header('Location: . Web Design..: Class untuk menampilkan link nomor *** ** halaman *** ***********************************************************/ // cegah pengaksesan langsung dari browser if (eregi('class_forum.. dan Membuat Website Reseller 453 . Buat file PHP baru pada PHP DESIGNER 2006 kemudian ketik kode berikut. $file.: class_halaman. return $this->record. $hasil_query.ladangbisnis. $jml_hal... $lainnya='') { Bab 5 . jumlah record = halaman x pesan per halaman function get_record() { $hasil = $this->page * $this->per_halaman... } // metode untuk menentukan data yang di-post function set_page($halaman) { $this->page = $halaman. $this->record = $hasil..php *** ** Penulis. $tampilkan_hal. $id=''. } // metode untuk menentukan banyaknya pesan per halaman function set_pph($angka) { $this->per_halaman = $angka.. } // metode untuk mendapatkan jumlah record yang harus ditampilkan // pada query SQL. // keluar dari rutin script } class halaman { // deklarasilam properti untuk class var $tabel..localhost terdapat sedikit perubahan. $berikutnya. $sebelumnya.. return $this->per_halaman. $isi=''. $page.: 20-10-2005 *** ** Penjelasan. // metode umtuk memilih tabel yang digunakan function set_tabel($nama_tabel) { $this->tabel = $nama_tabel..php'). $per_halaman....php'. $last_page.. digunakan untuk mendapatkan jumlah // data.php <?php /********************************************************** ** Nama File.Memulai Bisnis di Internet./index. } // metode untuk melakukan query sql.. jumlah record dan sebagainya function query_SQL($q = 1.: Rio Astamal *** ** Tanggal..

$this->per_halaman"). $this->jml_data = $jumlah. else $query = mysql_query($q).Memulai Bisnis di Internet.2 atau 3 lakukan query berikut $this->hasil_query = $query. return $this->jml_hal. // link halaman berikutnya didapat dengan menambahkan nilai // halaman sekarang dengan satu $this->berikutnya = $this->page + 1. } // metode untuk mendapatkan jumlah halaman function get_jml_hal() { // untuk menghitung jumlah halaman digunakan fungsi ceil // dimana >> Jumlah data : pesan per halaman // jika hasilnya koma. } // metode untuk menampilkan halaman function show_page($URL) { // jika jumlah halaman lebih dari satu tampilkan selain itu jangan if ($this->jml_hal > 1) { // jika halaman sekarang 0 (paling awal) jangan tampilkan link // first dan before ganti dengan tulisan biasa(warna abu-abu) if ($this->page == 0) Bab 5 . dan Membuat Website Reseller 454 . maka dibulatkan ke atas $jumlah = ceil($this->jml_data / $this->per_halaman). else if ($q == 2) // jika 2 lakukan query berikut $query = mysql_query("SELECT * FROM $this->tabel WHERE $id='$isi'"). Web Design.ladangbisnis. return $this->hasil_query. sebelumnya. else if ($q == 3) // jika 3 lakukan query berikut $query = mysql_query("SELECT * FROM $this->tabel WHERE $id='$isi' ORDER BY $lainnya DESC LIMIT $this->record. // jika bukan 1. } // metode untuk mendapatkan halaman // paling awal.1.localhost // jika parameter pertama berisi 1 lakukan query berikut if ($q == 1) $query = mysql_query("SELECT * FROM $this->tabel"). $this->jml_hal = $jumlah.1. return $this->jml_data. // kembalikan hasil dari query } // metode untuk mendapatkan jumlah data pada database function get_jml_data() { $jumlah = mysql_num_rows($this->hasil_query). // link halaman sebelumnya didapat dengan mengurangi nilai // halaman sekarang(yang aktif) dengan satu $this->sebelumnya = $this->page . berikutnya dan paling akhir function set_hal() { // halaman terakhir kita kurangi satu karena pada nomor // karena nilai jml_hal lebih besar 1 dari halaman terakhir $this->last_page = $this->jml_hal .

$next = "<font color='#cccccc'>></font>". dimana x adalah nomor halaman // << < x x x > >> } else $halaman = ''.php. } else { $first = "<a href='$URL&page=0'><<</a>". File ini juga pernah kita buat sebelumnya namun disini Bab 5 . dan Membuat Website Reseller 455 . // artinya halaman yang ada hanya satu $this->tampilkan_hal = $halaman. else $halaman . } // jika halaman sekarang sama dengan nilai halaman terakhir // jangan tampilkan link last dan next if ($this->page == $this->last_page) { $last = "<font color='#cccccc'>>></font>".ladangbisnis. $next = "<a href='$URL&page=$this->berikutnya'>></a>".intval($i + 1).localhost { $first = "<font color='#cccccc'><<</font>". $back = "<a href='$URL&page=$this->sebelumnya'><</a>"."</a> \n". Itu saja? Ya itu saja. // gunakan looping untuk menampilkan setiap nomor halaman for ($i=0.= " <font color='#cccccc'><b>". $i<$this->jml_hal. // kembalikan nilai karena akan dicetak ke layar return $this->tampilkan_hal.Memulai Bisnis di Internet. File berikutnya adalah class_waktu. } } // akhir dari class halaman ?> Simpan pada direktori reseller/include dengan nama class_halaman. } // tampilkan $halaman = "$first &nbsp $back &nbsp\n"."</b></font>". } else { $last = "<a href='$URL&page=$this->last_page'>>></a>". Web Design.intval($i + 1) .= " <a href='$URL&page=$i'>". } $halaman . Yang berubah dari file ini hanyalah tulisan seperti << First < Before xxx Next > Last >> kita ganti dengan yang lebih sederhana yaitu << < xxx > >>. $back = "<font color='#cccccc'><</font>".= "&nbsp $next &nbsp $last\n".php. // output dari halaman jika jumlah halamannya lebih dari satu // kurang lebih seperti berikut. $i++) { // jika nomor halaman sama dengan halaman yang sedang // dibuka tebalkan angka tersebut dan hapus link // nomor halaman kita tambah 1 agar nomor awal tidak 0 if ($i == $this->page) $halaman .

. // jumlah hari $this->is_kabisat = date('Y') % 4. } // metode untuk menambah.*/ $this->angka = $angka. // bulan 01-12 $this->year = date('Y')... /* --------.. maka bulan sebelumnya { $bulan = $this->bulan . // tangggal dikurangi if ($tgl <= 0) // jika kurang/sama dengan nol. if ($this->mode == 0) // jika mode pengurangan { $tgl = $this->date . mengurangi tanggal atau tetap // format 0 = tanggal biasa.Memulai Bisnis di Internet..php <?php /********************************************************** ** Nama File. // kurangi bulan dengan 1 if ($this->jml_hari == 30) // bulan yang tanggalnya sampai 30 $tgl = (31 + $this->date) . $mode.$angka. bulan.. $thn = $this->year.*-*-*-*-*-*-* -----------*/ $bulan = $this->bulan. dan Membuat Website Reseller 456 . tahun. // metode untuk memberi nilai tanggal.. $is_kabisat. keluar dari fungsi.."... $angka = 1) { if ($angka > 31) return "Error: Angka terlalu tinggi(max. Klik File > New > PHP kemudian ketik kode berikut.localhost akan ada penambahan baru.php *** ** Penulis. 1 = detik(timestamp) function set_tgl($format = 0. // tahun 4 digit $this->jml_hari = date('t').ditambah atau tetap *** ***********************************************************/ class waktu { // deklarasikan properti var $date. 1 = menambah.: class_waktu. // jika 0 = kabisat selain itu tidak } // metode untuk menentukan tanggal dikurangi atau ditambah // 0 = mengurangi. Web Design. 31).. jumlah // hari dalam bulan sekarang function set_date() { $this->date = date('d').: class untuk memanipulasi tanggal *** ** baik dikurangi.ladangbisnis..$angka. $jml_hari. 2 = tetap function set_mode($pilihan) { $this->mode = $pilihan.: 20-10-2005 *** ** Penjelasan.. // tanggal pada bulan yang tanggalnya 31 else if ($this->bulan == 1) // januari Bab 5 .kode tambahan ---------.. $bulan.: Rio Astamal *** ** Tanggal.. // tanggal 01-28/29/30/31 $this->bulan = date('m').1.. Script dari file class_waktu. $year... /* --------..

// tanggal pada bulan DESEMBER $bulan = 12. // bulan kita set januari $thn = $thn + 1.ladangbisnis. // bulan ditambah 1 } } else if ($tgl > 28) // jika non kabisat Bab 5 .$angka.$angka.31) + $angka.$angka. dan Membuat Website Reseller 457 .$angka. // angka ditambah if ($this->jml_hari == 31 && $bulan != 12) // bulan bertanggal 31 selain desember { if ($tgl > 31) // jika melebihi tanggal 31 { $tgl = ($this->date .localhost { $tgl = (31 + $this->date) . // tahun kita tambah satu } } else if ($bulan == 2) // jika bulan februari { if ($this->is_kabisat == 0) // jika kabisat { if ($tgl > 29) // jika lebih dari tanggal 29 { $tgl = ($this->date . Web Design. // bulan ditambah 1 } } else if ($this->jml_hari == 30) // bulan bertanggal 30 { if ($tgl > 30) { $tgl = ($this->date . // kurangi 31 dan tambah sesuai parameter $bulan = $bulan + 1. // tahun dikurangi 1 } else if ($this->bulan == 3) // maret { if ($this->is_kabisat == 0) // jika kabisat $tgl = (29 + $this->date) . // tanggal pada februari else $tgl = (30 + $this->date) .$angka.29) + $angka.31) + $angka.$angka. $bulan = $bulan + 1. $bulan = $bulan + 1. } } else if ($bulan == 12) // bulan desember { if ($tgl > 31) // jika melebihi tanggal 31 { $tgl = ($this->date .Memulai Bisnis di Internet.1. // tanggal pada bulan juli else if ($this->bulan == 2) // februari $tgl = (31 + $this->date) . // tanggal pada februari non kabisat } else if ($this->bulan == 8) // Agustus $tgl = (31 + $this->date) . $bulan = 1. // tanggal pada februari else $tgl = (28 + $this->date) . // desember $thn = $this->year .31) + $angka. // tanggal pada bulan yang tanggalnya 30 } } else if ($this->mode == 1) { $tgl = $this->date + $angka.

1=senin.".$thn".$bulan . "Juli". "Selasa". "Mei". $bulan = $bulan + 1. "Februari". // tanggal $bln = $pecahan[1] .28) + $angka. $this->hasil). function show_deadline() { // buat array untuk nama hari $nm_hari = array("Minggu". 0. "Desember"). // agar berformat 2 digit if (strlen($bulan) < 2) $bulan = "0$bulan". "September". if ($this->mode == 1) $int_hari = $int_hari + $this->angka. "Maret". "Kamis". 0=minggu. dst. $bulan.localhost { $tgl = ($this->date . $tgl = intval($pecahan[0]). // detik return $this->hasil. // bulan (dikurangi 1 agar index awal 0) $thn = $pecahan[2]. // tanggal biasa else $this->hasil = mktime(0. Web Design. "Oktober". $tgl. "Juni". "Jumat". } } } else $tgl = $this->date. "Senin". // agar berformat 2 digit // cek format yang diinginkan if ($format == 0 || $format != 1) $this->hasil = "$tgl . "April".". // metode untuk menampilkan deadline atau hari biasa.Memulai Bisnis di Internet. // pecah isi dari $this->hasil $pecahan = explode(" . // agar angka kembali ke awal Bab 5 .7) + $this->angka. "Nopember". // jika $int_hari melebihi 6 if ($int_hari > 6) $int_hari = (date('w') . // tetap if (strlen($tgl) < 2) $tgl = "0$tgl". $thn). // hari dalam angka. dan Membuat Website Reseller 458 . // kembalikan hasil } // akhir dari metode set_tgl() } // akhir dari class waktu // class untuk menampilkan deadline hari // merupakan turunan dari class waktu class deadline extends waktu { var $the_day. "Agustus". "Sabtu"). // tahun // set maksimal deadline 7 hari if ($this->angka > 7) return "Error: Maksimal deadline adalah 7 hari. $int_hari = date('w').1.ladangbisnis. // buat array untuk nama bulan $nm_bulan = array("Januari". 0. "Rabu".

Perubahan ada pada metode set_tgl().7) + $this->angka. Kita set maksimal 7 karena jika melebihi 7 kalkulasi hari akan sulit dilakukan. $tgl $bulan $tahun". Namun karena kita dalam class maka yang kita ambil adalah $this->hasil. 1 untuk senin dan seterusnya. // kembalikan hasil return $this->the_day = $day. Class ini merupakan turunan dari class waktu. } // akhir dari class deadline ?> Simpan pada direktori reseller/include dengan nama class_waktu. /* --------.". Jadi kita perlu untuk memecahnya jika ingin mendapatkan tanggal. Tujuan pembuatan class deadline adalah untuk menciptakan format tanggal Hari. Selanjutnya kita membuat array untuk nama bulan dan kita simpan pada variabel $nm_bulan.*-*-*-*-*-*-* -----------*/ PENJELASAN SCRIPT Selain perubahan diatas kita juga menambahkan class baru pada file ini yaitu class deadline.localhost // isi nilai dari $hari dengan array $nm_hari berdasarkan $int_hari $hari = $nm_hari[$int_hari]. dan $thn untuk menampung hasil pecahannya. Yang merupakan isi dari parameter ke dua pada metode set_tgl(). Kemudian kita mengecek nilai dari $this->angka. Dalam menjalankan kerjanya class deadline meminjam semua metode dari class waktu. Dimana kita menambahkan kode berikut /* --------.Memulai Bisnis di Internet. Oleh karena itu kita gunakan statemen if berikut untuk menghandelnya. 25 Oktober 2005.ladangbisnis. // susun format tampilan $day = "$hari.kode tambahan ---------.*/ $this->angka = $angka. Jika melebihi 6 maka agar nilai kembali ke antara 0 – 6 diperlukan kalkulasi seperti diatas. Untuk mendapatkan tanggal maka kita mendapatkannya dari metode set_tgl(). Tanpa statemen if kalkulasinya Bab 5 . Bagaimana jika nilai $int_hari melebihi 6 yang tidak terdefinisi?. seperti berikut ini $pecahan = explode(" . Web Design.php. // isi nilai dari $bulan dengan array $nm_bulan berdasarkan $bln $bulan = $nm_bulan[$bln]. if ($int_hari > 6) $int_hari = (date('w') . $bln. } // akhir dari show_deadline(). $this->hasil). Variabel $int_hari meyimpan hasil dari fungsi date('w') yang mengembalikan angka sebagai pengenal hari 0 untuk minggu. 22 Oktober 2005 dan kita ingin deadlinenya tiga hari ke depan maka deadlinenya haruslah Selasa. Pertama kita membuat array yang berisi hari dari Minggu hingga Sabtu dan kita masukkan pada variabel $nm_hari. dan Membuat Website Reseller 459 . Contoh jika saat ini tanggal Sabtu. Khusus untuk $tgl kita gunakan intval() karena akan kita lakukan perhitungan jadi kita ubah menjadi integer. Class deadline hanya memiliki satu metode asli yaitu show_deadline(). Setelah itu kita buat variabel $tgl. Format tanggal dari $this->hasil adalah format dalam angka dan spasi yaitu dd – mm – yyyy. $tahun = $thn. Jadi semua fungsionalitas dari class waktu dimiliki oleh class deadline namun tidak sebaliknya. dd bulan yyyy.

lalu ketik kode berikut. hari = ( 6 – 7 ) + 3 ==> hasil 2 Nilai 2 dalam index hari adalah Selasa.php'.localhost tanpa sponsor namun jika tidak anda dapat menentukan user mana yang mendapat komisi jika ada pengunjung yang datang tanpa sponsor // ( NAMANYA JUGA BISNIS YANG DICARI YA KEUNTUNGAN!!! ) // cek isi dari res pada URL untuk menentukan reseller // jika res tidak diset/kosong $res = filter_str($_GET['res']). hari = 6 + 3 (sabtu = 6) ==> hasil 9 hasilnya adalah 9 sedangkan index hari hanya 0 sampai 6. // koneksikan PHP dengan MySQL server // // // // // jika anda ingin adil anda dapat menggunakan cara berikut untuk menentukan reseller yang mendapat komisi jika user mengunjungi ladangbisnis.php').ladangbisnis. dan Membuat Website Reseller 460 . Script dari file var_utama. if ($res == '') { // panggil fungsi acak_reseller() untuk mengambil username // secara acak/random $res = acak_reseller(). exit. $_SERVER['PHP_SELF'])) { header('Location: . Web Design. Bab 5 . Jadi hasilnya adalah NULL atau tidak terdefinisi.php'). include ('include/class_waktu. } else { // jika isi res tidak kosong namun username tidak terdaftar $hasil = mysql_query("SELECT * FROM tbl_member WHERE username='$res'"). include ('include/konfig./index. Berikutnya file yang akan kita buat adalah file yang menyimpan kumpulan variabel untuk halaman non-member.php'). Selanjutnya kita tinggal memasukkan $int_hari ke array $nm_hari untuk mendapatkan hari yang diinginkan.php **/ /* Penulis : Rio Astamal **/ /* Tanggal : 25-10-2006 **/ /* Fungsi : untuk menyimpan variabel yang dipakai seluruh halaman **/ /* non member **/ /************************************************************************/ //cegah pengaksesan langsung dari browser if (eregi('var_utama.php').. Jadi terbukti dengan kalkulasi diatas deadline hari dapat ditentukan.php <?php /************************************************************************/ /* NamaFile: var_utama. Dengan statemen if diatas kalkulasinya akan menjadi seperti dibawah ini.localhost adalah sebagai berikut. konek_db(). Untuk membuatnya klik menu File > New > PHP pada PHP DESIGNER 2006 untuk membuat file PHP baru.Memulai Bisnis di Internet. } // panggil file-file yang diperlukan include ('include/fungsi.

// ada di konfig.php?res=$res' class='menu'> H O M E</a></td> <td align='center'><a href='pesan. $waktu->set_date(). TGL BULAN TAHUN // variabel untuk menampilkan hari ini $hari_ini = $waktu->show_deadline(). // variabel untuk menyimpan tampilan link menu $menu = " <table border='0' cellpadding='4' width='100%' bgcolor='#ba7b31'> <tr><td align='center'><a href='index. $deadline).php?res=$res' class='menu'> KONTAK</a></td></tr> </table>". </p> <p class='sf'>Cukup isikan nama dan email anda di form berikut. $bonus = " <table border='0' cellpadding='4' width='100%'> <tr><td bgcolor='#ba7b31'> <font color='#ffffff' size='2'><b>E-BOOK GRATIS!</b></font> </tr></td> </table> <form action='bonus. // panggil class deadline (turunan waktu) $waktu = new deadline.php?res=$res' class='menu'> RESELLER</a></td> <td align='center'><a href='bonus.php?res=$res' class='menu'> TESTIMONIAL</a></td> <td align='center'><a href='login.php?res=$res&proses=ebook' method='post'> <table border='0' cellpadding='4'> <tr><td colspan='2' class='putdih'> <p class='sf'>Dapatkan e-book tentang bagaimana membangun mailing list berskala global dengan cepat dan mudah secara GRATIS!!. $dead->set_mode(1). // format tanggal biasa => Hari. $waktu->set_mode(2).php?res=$res' class='menu'> LOGIN</a></td> <td align='center'><a href='reseller.php?res=$res' class='menu'> PESAN</a></td> <td align='center'><a href='testimonial. } // dapatkan nama dan kota dari reseller (berupa array) $data_res = SQL_array("SELECT * FROM tbl_member WHERE username='$res'"). // tanggal tetap $waktu->set_tgl(). $reseller = " <table border='0' cellpadding='4' width='100%'> <tr><td> <p class='sf' align='right'><font color='#ba7b31'><b> Reseller: $data_res[nama] . $dead = new deadline. // tanggal ditambah $dead->set_tgl(0.php // variabel untuk menampilkan deadline hari $hari_deadline = $dead->show_deadline().php?res=$res' class='menu'> BONUS</a></td> <td align='center'><a href='kontak. $dead->set_date(). // buat session untuk menampung username $_SESSION['reseller'] = $res.$data_res[kota]</b></font></p> </tr></td> </table>".Memulai Bisnis di Internet.localhost if (mysql_num_rows($hasil) == 0) $res = acak_reseller().ladangbisnis. Bab 5 . Web Design. dan Membuat Website Reseller 461 .

php'. exit.back()"><< Kembali</a>'./index. Web Design..php **/ /* Penulis : Rio Astamal **/ /* Tanggal : 25-10-2006 **/ /* Fungsi : menyimpan variabel yang dipakai pada semua halaman **/ /* member area **/ /************************************************************************/ //cegah pengaksesan langsung dari browser if (eregi('var_utama. // variabel untuk profil pemilik website $me = " <table border='0' cellpadding='4' width='100%'> <tr><td bgcolor='#ba7b31'> <font color='#ffffff' size='2'><b>PROFIL ADMIN</b></font> </tr></td> </table> <table border='0' cellpadding='4'> <tr><td> <p class='sf'>Rio Astamal<br>Administrator of <br>ladangbisnis. Script dari file member_var. Ganti Dengan AL AD<br>Surabaya 63210<br> Call: 0808080808</p> </td></tr> </table>". ?> Simpan pada direktori reseller\include dengan nama var_utama. File yang akan kita buat selanjutnya adalah file yang menyimpan kumpan variabel yang digunakan untuk halaman member.php. // variabel untuk footer $footer = "&#169 Copyright 2005 ladangbisnis. $_SERVER['PHP_SELF'])) { header('Location: .localhost Alamat link download akan kami kirim ke email anda saat ini juga!.php <?php /************************************************************************/ /* NamaFile: member_var.localhost".php').localhost <br>Jl. // panggil file-file yang diperlukan Bab 5 .Memulai Bisnis di Internet. } // user yang sedang login $user = $_SESSION['member']. dan Membuat Website Reseller 462 .</p> </td></tr> <tr> <td>Nama: </td> <td><input type='text' name='nama'></td></tr> <tr> <td>Email: </td> <td><input type='text' name='email'></td></tr> <tr> <td></td><td><input type='submit' value='Kirim'></td></tr> </table> </form>".ladangbisnis. Buat file PHP baru kemudian ketik kode berikut. // variabel untuk menyimpan link kembali $kembali = '<br /><br /><a href="javascript: history.

. include ('. konek_db().Memulai Bisnis di Internet.php'> STATISTIK</a></td> <td align='center'><a class='menu' href='testimonial.localhost include ('.date('H:i'). dan Membuat Website Reseller 463 . // format tanggal biasa => Hari.back()"><< Kembali</a>'. // variabel untuk footer $footer = "&#169 Copyright 2005 ladangbisnis.</td></tr> <tr><td class='sf'>Jumlah pemesan</td> <td class='sf'>: $jml_pemesan user.php'). $traf = SQL_array("SELECT * FROM tbl_traffic WHERE username='$user'"). $jml_member = mysql_num_rows(mysql_query("$q1 tbl_member $q2")). // variabel untuk menyimpan link kembali $kembali = '<br /><br /><a href="javascript: history.localhost". Web Design.php'> STRATEGI</a></td> <td align='center'><a class='menu' href='index.php'). // koneksikan PHP dengan MySQL server $menu = " <table border='0' cellpadding='4' width='100%' bgcolor='#ba7b31'> <tr><td align='center'><a class='menu' href='index. $waktu->set_date()./include/fungsi./include/konfig. include ('. // variabel yang menyimpan statistik member // lakukan query untuk mendapatkan statistik $q1 = "SELECT * FROM". $jml_prospek = mysql_num_rows(mysql_query("$q1 tbl_prospek $q2")). $waktu->set_mode(2).' '.</td></tr> Bab 5 . $jml_blokir = mysql_num_rows(mysql_query("$q1 tbl_blokir $q2"))./include/class_waktu.</td></tr> <tr><td class='sf'>Jumlah terblokir</td> <td class='sf'>: $jml_blokir user.php'). // panggil class deadline (turunan waktu) $waktu = new deadline.php'> TESTIMONIAL</a></td> <td align='center'><a class='menu' href='strategi.</td></tr> <tr><td class='sf'>Jumlah member</td> <td class='sf'>: $jml_member user. $komisi = 50000 * $jml_member.ladangbisnis. $jml_pemesan = mysql_num_rows(mysql_query("$q1 tbl_pemesan $q2")).. // tanggal tetap $waktu->set_tgl().php?proses=logout'> LOGOUT</td></tr> </table>". TGL BULAN TAHUN // variabel untuk menampilkan hari ini $hari_ini = $waktu->show_deadline()..php'> PROFIL</a></td> <td align='center'><a class='menu' href='download. $q2 = "WHERE reseller='$user'". // komisi yang diterima member $mem_stat = " <table border='0' cellpadding='4'> <tr><td bgcolor='#ba7b31' class='putih' colspan='2'> <b>STATISTIK ANDA</b></td></tr> <tr><td colspan='2' class='sf'> Berikut ini adalah statistik anda sebagai reseller kami.php'> HOME</a></td> <td align='center'><a class='menu' href='profil.php'> DOWNLOAD</a></td> <td align='center'><a class='menu' href='statistik.

} // panggil file-file yang diperlukan include ('...</td></tr> <tr><td bgcolor='#ba7b31' height='25' colspan='2'></td></tr> </table>". // tanggal tetap $waktu->set_tgl().php <?php /************************************************************************/ /* NamaFile: admin_var.php').php'). // variabel yang berisi javascript untuk menampilkan kotak dialog $java_konfirm = ' <script language="javascript"> function konfirmasi(pesan) { var tanya = confirm(pesan). Web Design. $_SERVER['PHP_SELF'])) { header('Location: . // format tanggal biasa => Hari.php'). ?> Simpan pada direktori reseller\include dengan nama member_var./index. exit. dan Membuat Website Reseller ... Masih berupa file yang menyimpan kumpulan variabel.Memulai Bisnis di Internet. return tanya.php'> 464 Bab 5 . Kali ini file yang akan kita buat adalah file yang menyimpan kumpulan variabel untuk halaman administrator. // koneksikan PHP dengan MySQL server // panggil class deadline (turunan waktu) $waktu = new deadline.php')./include/konfig.php. } </script>'. include ('. $waktu->set_mode(2). $menu = " <table border='0' cellpadding='4' width='100%' bgcolor='#ba7b31'> <tr><td align='center'><a class='menu' href='index.rupiah($komisi)."</td></tr> <tr><td colspan='2' class='sf'> Jumlah kunjungan ke website anda: <br>$traf[1] kali. konek_db().ladangbisnis. Buat file PHP baru pada PHP DESIGNER 2006 kemudian ketik kode berikut. include ('. $waktu->set_date().</td></tr> <tr><td class='sf'>Komisi Anda</td> <td class='sf'>: ".localhost <tr><td class='sf'>Jumlah Prospek</td> <td class='sf'>: $jml_prospek user./include/fungsi.php'. TGL BULAN TAHUN // variabel untuk menampilkan hari ini $hari_ini = $waktu->show_deadline()./include/class_waktu.' '. Script dari file admin_var.date('H:i').php **/ /* Penulis : Rio Astamal **/ /* Tanggal : 26-10-2006 **/ /* Fungsi : menyimpan variabel halaman administrator **/ /************************************************************************/ //cegah pengaksesan langsung dari browser if (eregi('admin_var.

"tbl_member")). Seperti biasa klik menu File > New > PHP pada PHP DESIGNER 2006 lalu ketik kode berikut."tbl_prospek")). 465 Bab 5 .localhost H O M E</a></td> <td align='center'><a PENCARIAN</td> <td align='center'><a KIRIM EMAIL</td> <td align='center'><a TESTIMONIAL</td> <td align='center'><a LOGOUT</td></tr> </table>". // variabel yang menyimpan statistik website $q = "SELECT * FROM ". $jml_member = mysql_num_rows(mysql_query($q.php'> class='menu' href='index. while ($data = mysql_fetch_array($hasil)) { $web_traffic += $data['traffic'].</td></tr> <tr><td class='sf'>Jumlah Prospek</td> <td class='sf'>: $jml_prospek user. ?> Simpan pada direktori reseller\include dengan nama admin_var.php. $jml_pemesan = mysql_num_rows(mysql_query($q.</td></tr> <tr><td class='sf'>Jumlah terblokir</td> <td class='sf'>: $jml_blokir user. Web Design.back()"><< Kembali</a>'.</td></tr> <tr><td class='sf'>Jumlah member</td> <td class='sf'>: $jml_member user.ladangbisnis. class='menu' href='cari.</td></tr> <tr><td bgcolor='#ba7b31' height='25' colspan='2'></td></tr> </table>".localhost: $web_traffic kali. // hitung jumlah traffic ke ladangbisnis.localhost."tbl_pemesan")). // variabel untuk menyimpan link kembali $kembali = '<br /><br /><a href="javascript: history. File terakhir pada direktori include yang akan kita buat adalah file yang menyimpan template untuk keperluan pengiriman email."</td></tr> <tr><td colspan='2' class='sf'>Jumlah kunjungan ke http://ladangbisnis.php?proses=logout'> // variabel untuk footer $footer = "&#169 Copyright 2005 ladangbisnis."tbl_blokir")). $jml_prospek = mysql_num_rows(mysql_query($q.localhost $hasil = mysql_query("SELECT * FROM tbl_traffic").php'> class='menu' href='testimonial. dan Membuat Website Reseller . $jml_blokir = mysql_num_rows(mysql_query($q.localhost".rupiah($komisi). // total traffic user } $komisi = 50000 * $jml_member.Memulai Bisnis di Internet.</p></td></tr> <tr><td class='sf'>Jumlah pemesan</td> <td class='sf'>: $jml_pemesan user.php'> class='menu' href='mail_to. // komisi yang diterima member $web_stat = " <table border='0' cellpadding='4'> <tr><td bgcolor='#ba7b31' class='putih' colspan='2'> <b>STATISTIK WEBSITE</b></td></tr> <tr><td colspan='2'> <p class='sf'>Berikut ini adalah statisk dari website ladangbisnis.</td></tr> <tr><td class='sf'>Profit Anda</td> <td class='sf'>: ".

localhost =================================".php'). Supaya Anda dapat segera masuk ke member area dan mendownload produk kami. // variabel untuk isi email member/terblokir yang dihapus admin $mail_del = " Saudara {NAMA}. Maka segeralah mentransfer dana sebesar {RUPIAH} x2 yang masing-masing ditujukan kepada Saya selaku pemilik program dan Reseller Anda. $_SERVER['PHP_SELF'])) { header('Location: index.-.a.Administrator http://ladangbisnis.000. jika anda saat ini telah memesan maka segeralah melakukan transfer.\n\n =================================== Bab 5 ./HP: {TELPON} Email : {EMAIL} ==========================================================\n Karena minat dan respon untuk e-book ini meningkat pesat. Jika anda ingin kembali dapat masuk ke member area maka anda harus mendaftar kembali sebagai member baru.akan segera saya naikkan menjadi Rp.Memulai Bisnis di Internet. Web Design.php **/ /* Penulis : Rio Astamal **/ /* Tanggal : 26-10-2006 **/ /* Fungsi : menyimpan variabel yang digunakan untuk mengirim emeil **/ /************************************************************************/ // cegah pengaksesan langsung dari browser if (eregi('var_mail. exit().localhost Script dari file var_mail.Rek.\n Dengan demikian saudara tidak lagi dapat masuk member area dan mengikuti program reseller kami. Agar anda tetap memperoleh harga terendah yaitu Rp.-\n\n ================================= Rio Astamal .localhost kami hapus. dan Membuat Website Reseller 466 .\n Oleh karena itu.localhost ==========================================================\n PROFIL RESELLER ========================================================== Nama : {NAMA_R} Transfer: {RUPIAH} Bank : {BANK} Telp. 200. 100.php <?php /************************************************************************/ /* NamaFile: var_mail.n Rio Astamal Telp.\n Terima kasih atas pendaftaran anda untuk menjadi member ladingbisinis.000.ladangbisnis. Saat ini saya hanya melayani 11 pemesan saja..\n Karena saudara telah melakukan pelanggaran terhadap ketentuan-ketentuan yang telah disepakati bersama./HP: 0808080808 Email : admin@ladangbisnis. Berikut ini adalah data profilnya.\n PROFIL PENGELOLA ========================================================== Nama : Rio Astamal Transfer: {RUPIAH} Bank : BANK Virtual .000.php'. Maka dengan terpaksa keanggotaan saudara di ladangbisnis. 100. Kemungkinan harga akan saya naikkan pada hari $waktu_naik. 0987654321 .localhost. } // variabel untuk isi email konfirmasi pendaftaran user $mail_daftar = " Saudara/i {NAMA_U}. Maka harga Rp.

\n Jika anda ingin keanggotaan anda diaktifkan kembali. Berikut ini adalah data diri dari reseller anda. // variabel untuk isi email member yang diblokir admin $mail_blokir = " Saudara {NAMA}.\n Namun jika anda memang belum mentransfer.Administrator http://ladangbisnis.ladangbisnis. Pemblokiran ini dikarenakan anda belum menyelesaikan pembayaran kepada reseller anda yaitu Saudara/i {NAMA_R}.\n Kami mohon maaf karena keanggotaan anda di ladangbisnis. segeralah untuk mentransfer agar keanggotaan anda dapat diaktifkan kembali. Namun jika anda sudah merasa mentransfer ke reseller anda tersebut. Agar keanggotaan anda aktif dan anda dapat mengikuti kembali program reseller kami. // variabel untuk isi email (BLokir yang dilakukan reseller dari // member area) $mail_res_blokir = " Saudara/i {NAMA_U}. informasinya akan saya kirim ke email anda.localhost yang sempat diblokir.localhost ================================".localhost Rio Astamal .localhost untuk sementara kami blokir.Administrator http://ladangbisnis.Memulai Bisnis di Internet. Dengan demikian anda dapat kembali masuk ke member area. Web Design.\n Selain itu anda juga dapat mengukuti kembali program reseller ladangbisnis.localhost ===================================".\n Reseller anda telah meminta saya selaku pemilik program untuk mengaktivasi kembali keanggotaan anda. Sebaiknya anda menguhugungi dia untuk konfirmasi.\n TERIMA KASIH.localhost ====================================". // variabel untuk member yang diaktivasi oleh admin $mail_aktivasi = " Saudara {NAMA}.\n DATA DIRI RESELLER ======================================== Nama : {NAMA_R} Username: {USERNAME} Email : {EMAIL} Telp/HP : {TELPON} Bank : {BANK} ========================================\n Segeralah mentransfer dana ke reseller anda. ==================================== Rio Astamal (Administrator) http://ladangbisnis. maka reply email ini.localhost.localhost ==================================". dan Membuat Website Reseller 467 .\n Bab 5 .localhost.\n Dengan demikian anda tidak dapat masuk ke member area dan juga tidak dapat mengikuti program reseller ladangbisnis.\n ================================== Rio Astamal .\n ================================ Rio Astamal (Administrator) http://ladangbisnis. // variabel untuk member yang diaktivasi ulang oleh admin $mail_reaktivasi = " Saudara {NAMA}. Setelah keanggotaan anda diaktifkan kembali. Maka untuk sementara waktu keanggotaan anda kami blokir.\n Karena anda telah melakukan beberapa hal yang menurut saya (administrator) merugikan member lain atau website ladangbisnis.

localhost.jpg. Setiap member yang masuk lewat rekomendasi anda...... Sekarang anda dapat masuk ke member area dan mendownload produk utama kami. Saya sarankan kepada anda untuk mengikuti program reseller kami. Script dari file index.000.ladangbisnis....localhost Saya ucapkan selamat.: Rio Astamal *** ** Tanggal.\n Pada tanggal {DATE} anda meminta kami untuk melakukan reset password anda di ladangbisnis..\n =============================== Username: {USERNAME} Password: {PASSWORD} ===============================\n Jika anda menginginkan penghasilan yang instan.-.. Hanya terdpat dua file pada direktori ini yaitu file index. Untuk direktori berikutnya kita beralih ke direktori reseller/gambar.. Tag-tag {XXX} pada variabel diatas nantinya akan kita ganti sesuai dengan data yang kita inginkan saat mengirim email.. Maka anda akan mendapatkan komisi 50% atau Rp.localhost?res={USERNAME}\n Untuk keterangan lebih lengkap silahkan lihat pada member area.: index.php *** ** Penulis.. dan Membuat Website Reseller 468 . 50..php klik menu File > New > PHP pada PHP DESIGNER 2006 kemudian salon kode berikut.\n\n =================================== Rio Astamal (Administrator) http://ladangbisnis.Memulai Bisnis di Internet. karena keanggotaan anda di ladangbisnis. ?> Simpan pada direktori reseller\inlcude dengan nama var_mail.: Untuk meredirect ke halaman utama *** ***********************************************************/ // jika user mencoba masuk ke halaman inc // kembalikan ia ke halaman utama Bab 5 .localhost ================================". Dan berikut ini adalah password baru anda untuk masuk ke member area.\n ================================ Rio Astamal .Administrator http://ladangbisnis..php...: 20-10-2005 *** ** Penjelasan.php dan file gambar utama yaitu banner.php <?php /********************************************************** ** Nama File. \nAlamat URL yang anda promosikan adalah: ========================================= http://ladangbisnis.\n =========================== Username: {USERNAME} Password: {PASSWORD} ===========================\n Gunakan password baru anda tersebut untuk login dan update kembali password anda agar mudah diingat. // variabel untuk isi email pengiriman lupa password $mail_lupa_pass = " Saudara {NAMA}.. Web Design. Akhir dari file yang berada pada direktori reseller\include.localhost ===================================". Untuk membuat file index.\n TERIMA KASIH karena anda telah membeli e-book ini.localhost telah diaktifkan..

.php *** ** Penulis.. kemudian ketik kode berikut.css body{font-family: verdana. arial.. font-size: 12px} Bab 5 . seperti yang sudah pernah kita bahas sebelumnya. margin-left: 0.php <?php /********************************************************** ** Nama File. Anda dapat membuat menggunakan Photoshop atau The Gimp atau program pengolah gambar lainnya.: index..ladangbisnis.php. sans-serif. ?> Simpan pada direktori reseller\template dengan nama index.. Untuk file yang pertama adalah index. ?> Simpan pada direktori reseller\gambar dengan nama index. exit.rahasia-webmaster. Pada direktori ini hanya terdapat empat file..php").. File berikutnya yaitu banner.th{font-family: verdana. Selanjutnya file-file yang akan kita buat adalah file yang berada pada direktori reseller/template.php").... Meskipun anda tidak membuat file ini pun tidak masalah dan tidak mengganggu jalannya script ladangbisnis. Gambar 5. margin-top: 0./index. Script dari file style. Klik File > New > PHP pada PHP DESIGNER 2006. Hanya saja tampilannya kurang menarik. margin-bottom: 0} td. sans-serif..php.. Pada PHP DESIGNER 2006 klik menu File > New > CSS kemudian ketik kode berikut... arial. Script dari file index.: 20-10-2005 *** ** Penjelasan. Yang penting adalah ukurannya 798x100 pixel. Web Design.com/bab5/gambar/ Akhir dari file yang berada pada direktori reseller\gambar. margin-right: 0..jpg. exit..localhost header ("Location: .... font-size: 12px.10: File banner.. File-file ini digunakan sebagai skin template pada semua halaman ladangbisnis. Tugas file ini hanya melakukan redirect halaman saja jika ada yang mencoba masuk ke direktori reseller/template.php.localhost.Memulai Bisnis di Internet. dan Membuat Website Reseller 469 ./index..jpg Jika anda tidak bisa atau malas membuatnya cukup download gambarnya di http://materi.li. Untuk file berikutnya kita akan membuat file CSS.: Rio Astamal *** ** Tanggal.: Untuk meredirect ke halaman utama *** ***********************************************************/ // jika user mencoba masuk ke halaman inc // kembalikan ia ke halaman utama header ("Location: .localhost.

font-size: 18px.jpg" width="798" height="100"></td> </tr> </table> <!-. text-align: center} Simpan pada direktori reseller\template dengan nama style.php <html> <head> <title>Jadikan Internet Ladang Bisnis Paling Menguntungkan</title> <!-. text-decoration: none} a. border-color: #cgcgcg} a{color: #ba7b31.localhost"> <meta name="owner" content="ladangbisnis.menu{font-weight: bold.besar{font-family: verdana. sans-serif. sans-serif.menu:hover{text-decoration: underline. text-decoration: none} a:hover{font-weight: bold.ladangbisnis.css --> <link rel="stylesheet" type="text/css" href="template/style. mlm. bisnis. Script dari file index_skin. File berikutnya yang akan kita buat adalah file skin template untuk semua halaman nonmember. line-height: 20px.css. peluang usaha. color: #ffffff. color: #ba7b31} a.tabel:hover{text-decoration: underline. font-weight: bold} a.error{color: red.localhost table{border-collapse: collapse. Web Design. follow"> <meta name="revisit-after" content="30 days"> <!-.localhost"> <meta name="author" content="Rio Astamal"> <meta name="publisher" content="ladangbisnis.putih{color: #ffffff} . programmer"> <meta name="description" content="Temukan cara paling ampuh untuk mengubah internet menjadi ladang bisnis paling menguntungkan"> <meta name="title" content="ladangbisnis. color: #ffffff.sf{font-family: verdana. text-decoration: underline} p{line-height: 17px} .Tabel untuk sales letter disebelah kanan --> <table border="1" cellpadding="0" width="100%" bordercolor="#00000"> <tr class="putih"> <td width="70%" valign="top">{MENU}</td> <td width="30%" valign="middle" align="right" bgcolor="#ba7b31">{TODAY}</td> </tr> <tr> <td width="70%" valign="top">{UTAMA}</td> <td width="30%" valign="top" bgcolor="#dea057">{KANAN}</td> </tr> </table> 470 Bab 5 .AKHIR META TAG --> <!-.Tabel untuk gambar utama --> <table border="0" cellpadding="0" width="100%" bordercolor="#000000"> <tr> <td background="gambar/banner. arial. lowongan kerja. Klik File > New > PHP pada PHP DESIGENR 2006 lalu ketik kode berikut. font-size: 11px} . font-weight: normal} . font-weight: bold.Memulai Bisnis di Internet. text-align: center. dan Membuat Website Reseller . internet marketing.localhost"> <meta name="distribution" content="global"> <meta name="robots" content="index.PANGGIL FILE style. web programmer.css"> </head> <body> <!-.OPTIMASI META TAG --> <meta name="keywords" content="peluang bisnis. arial.

css"> </head> <body> <!-.ladangbisnis. dan Membuat Website Reseller 471 .php <html> <head> <title>Jadikan Internet Ladang Bisnis Paling Menguntungkan</title> <!-. Untuk membuatnya klik File > New > PHP lalu ketik kode berikut.11: Tampilan file index_skin. Script dari file member_skin./gambar/banner.Tabel untuk sales letter disebelah kanan --> <table border="1" cellpadding="0" bordercolor="#00000"> Bab 5 .beri jarak --> <p></p> <!-.php.php dengan nama index_skin.css --> <link rel="stylesheet" type="text/css" href=". Web Design.PANGGIL FILE style.localhost <!-.buat tabel untuk footer --> <table border="0" width="100%"> <tr> <td bgcolor="#d9d9d9"><font color="#838383"> <marquee scrolldelay="1" scrollamount="2">{FOOTER}</marquee></font></td> </tr> </table> </body> </html> Simpan pada direktori reseller\index_skin./template/style.Tabel untuk gambar utama --> <table border="0" cellpadding="0" bordercolor="#000000"> <tr> <td background=". Untuk optimasi search engine maka kita juga memasukkan beberapa meta tag tambahan. Gambar 5.php File template berikutnya kita gunakan untuk halaman-halaman member dan admin.Memulai Bisnis di Internet.php. Jika anda ingin melihat tampilan awalnya arahkan browser anda ke http://localhost/webmaster/bab5/hari-26-27-28-29/reseller/template/index_skin..jpg" width="798" height="100"></td> </tr> </table> <!-..

Maka pada member_skin.php').php. dan Membuat Website Reseller 472 .beri jarak --> <p></p> <!-. Web Design. Script dari file index. Jalankan PHP DESIGNER 2006 klik File > New > PHP kemudian salin script berikut..Memulai Bisnis di Internet. // panggil file-file yang diperlukan include ('. Jika pada index_skin.php <?php /************************************************************************/ /* NamaFile: index.ladangbisnis. Langsung saja kita akan membuat file yang pertama yaitu index. Karena berhubungan dengan hak/permission maka semua halaman pada direktori ini menggunakan session sebagai pengenal. include ('..php kolom yang lebih lebar adalah sebelah kiri dan yang sempit adalah sebelah kanan ({TODAY} dan {KANAN}).php').php hanya terletak pada lebar kolomnya./include/class_skin.php./include/admin_var. // handel setiap kondisi dengan switch dan case switch ($proses) { Bab 5 . $proses = filter_str($_GET['proses']). if ($proses == '') $proses = 'utama'.localhost <tr class="putih"> <td width="30%" valign="middle" align="left" bgcolor="#ba7b31">{TODAY}</td> <td width="70%" valign="top">{MENU}</td> </tr> <tr> <td width="30%" bgcolor="#dea057" valign="top">{KIRI}</td> <td width="70%" valign="top">{UTAMA}</td> </tr> </table> <!-. Perbedaan file ini dengan file index_skin. Selanjutnya kita akan bekerja pada direktori untuk halaman-halaman administrasi yaitu pada direktori reseller/_my_cp_.php kolom yang lebih lebar adalah yang sebelah kanan dan yang sempit adalah sebelah kiri ({TODAY} dan {KIRI}). Akhir dari file pada direktori reseller\template.buat tabel untuk footer --> <table border="0" width="100%"> <tr> <td bgcolor="#d9d9d9"><font color="#838383"> <marquee scrolldelay="1" scrollamount="2">{FOOTER}</marquee></font></td> </tr> </table> </body> </html> Simpan pada direktori reseller\template dengan nama member_skin.php **/ /* Penulis : Rio Astamal **/ /* Tanggal : 25-10-2006 **/ /* Fungsi : untuk membuat form login dan halaman utama admin **/ /************************************************************************/ session_start().

php'>$jml_blokir user</a> <tr bgcolor='#ffffff'><td>Jumlah Prospek</td> <td><a href='prospek."</font> </b></td></tr> </table> </td></tr> </table> </td></tr> </table>".Mohon Login</p> <center> <form action='index. } // akhir dari else !cek_session() break. dan Membuat Website Reseller 473 . Bab 5 .php?proses=pros_form' method='post'> <table border='1' cellpadding='5' width='50%' bordercolor='#cgcgcg'> <tr bgcolor='#ba7b31' align='center'> <td class='putih' colspan='2'><b>FORM LOGIN</b></td></tr> <tr bgcolor='#f4f4f4'><td>Username</td> <td><input type='text' name='username'></td></tr> <tr bgcolor='#ffffff'><td>Password</td> <td><input type='password' name='password'></td></tr> <tr><td></td><td><input type='submit' value='Login'></td></tr> </table></form></center> </td></tr> </table>".php'>$jml_pemesan user</a> </td></tr> <tr bgcolor='#ffffff'><td>Jumlah Member</td> <td><a href='member.Memulai Bisnis di Internet. Web Design. // buat form login $utama = " <table border='0' cellpadding='5' width='100%'> <tr><td> <p class='besar'>Admin Area . } else { // tampilkan menu dan statistik dan link untuk manage database $utama = " <table border='0' cellpadding='5' width='100%'> <tr><td> <p class='besar'>Selamat Datang di Admin Area</p> <p>Silahkan klik pada tabel berikut untuk melihat daftar membernya. $web_stat = ''.rupiah($komisi).ladangbisnis.</p> <table border='1' cellpadding='0' width='50%'> <tr><td> <table border='0' cellpadding='5' width='100%'> <tr bgcolor='#ba7b31' height='30' class='putih'> <td><b>STATISTIK</b></td> <td><b>JUMLAH</b></td></tr> <tr bgcolor='#f4f4f4'><td>Jumlah Pemesan</td> <td><a href='pemesan.localhost /************/ case 'utama': /************/ // cek apaka user sudah login atau belum if (!cek_session('admin')) { // kosongkan nilai menu dan web_stat $menu = ''.php'>$jml_member user</a> </td></tr> <tr bgcolor='#f4f4f4'><td>Jumlah Terblokir</td> <td><a href='terblokir.php'>$jml_prospek user</a> <tr bgcolor='#f4f4f4'><td>Jumlah Profit</td> <td><font color='#ba7b31'><b>".

$skin->ganti_tag('{KIRI}'. if (!login('tbl_admin'. $utama). Bab 5 . $menu). Jika admin belum login otomatis session belum terisi jadi yang ditampilkan adalah form login.</b></a>".<a href='index. // tentukan file template $skin->ganti_tag('{TODAY}'.php. $web_stat).localhost /************/ /****************/ case 'pros_form': /****************/ // ambil data yang dipost $username = filter_str($_POST['username']. } else { // buat session untuk user ini $_SESSION['admin'] = $username. } break.. // enkripsi password $password = balik_md5($password). $footer). } break. Web Design.php'). /****************/ /*************/ case 'logout': /*************/ if (!logout('admin')) $utama = "<p class='error'>Anda belum login. $password)) { // kosongkan menu dan statistik $menu = ''. "\^").<a href='index. $utama = "<p class='error'>Username atau password salah. header('Location: index.php'). $skin->ganti_tag('{MENU}'. $skin->ganti_tampilan(). Namun jika session sudah terisi berarti yang ditampilkan adalah halaman utama admin area. // buat objek skin $skin->ganti_skin('. else { $utama = "<p class='error'>Anda telah logout dari sistem.Memulai Bisnis di Internet. $web_stat = ''. dan Membuat Website Reseller 474 . // ^ diperbolehkan $password = filter_str($_POST['password']).php'> <b>Login</b></a>". ?> Simpan pada direktori reseller\_my_cp_ dengan nama index. $username. $skin->ganti_tag('{FOOTER}'. /*************/ } // akhir dari switch $skin = new skin.$kembali</p>"./template/member_skin. $skin->ganti_tag('{UTAMA}'.ladangbisnis.php'> <b>Login kembali. $hari_ini).

Memulai Bisnis di Internet. File berikutnya yang akan kita buat adalah file yang akan menampilkan daftar statistik dari pemesan. Variabel seperti $jml_pemesan. Anda dapat mengklik link x user pada tabel statistik. Pada kolom sebelah kiri untuk halaman-halaman administrator. Hanya saja string chiper pada file db_reseller. Sebagian besar nantinya akan ditampilkan tentang statistik website ladangbisnis. jadi kita tinggal memanggilnya lewat include(). Untuk membuatnya klik menu File > New > PHP untuk membuat file baru kemudian ketik scritpt berikut.ladangbisnis. dan Membuat Website Reseller 475 . Username dan password ini sesuai dengan apa yang kita masukkan pada file db_reseller.php. reseller. Sudah kita set nilainya pada file admin_var.12: Tampilan halaman utama admin area Untuk login gunakan username _^_super_user_^_ dan untuk password gunakan _super_pass_. banyaknya member yang telah bergabung. Untuk melihat statistik lengkap daftar user seperti tanggal join. Statistik tersebut meliputi banyaknya pemesan e-book.php **/ /* Penulis : Rio Astamal **/ /* Tanggal : 25-10-2006 **/ /* Fungsi : menampilkan daftar statistik user **/ /************************************************************************/ session_start(). Tampilan dari halaman utama admin area dapat anda lihat pada gambar 5.localhost. banyaknya member yang terblokir dan jumlah kunjungan ke ladangbisnis. terblokir. Bab 5 .php <?php /************************************************************************/ /* NamaFile: statistik. transfer dan lain sebagainya. banyaknya prospek. member.12. Web Design.localhost. $jml_member dan lainnya.localhost Gambar 5. Menggunakan echo balik_md5(“_^_super_user_^_”) dan echo balik_md5(“_super_pass_”) kemudian kita tinggal copy dan paste saja.sql saya peroleh dengan menampilkan dulu hasil enkripsi. Script dari file statistik.sql. dan prospek.

php'). $form = "proses_db. if ($tabel == '') $tabel = 'tbl_pemesan'. include ('. if ($page == '') $page = 0. Web Design.locahost</p>".php?proses=pemesan"..php'). } else if ($tabel == 'tbl_blokir') { $jdl = " <p class='besar'>Daftar Terblokir</p> <p>Total member yang keanggotaannya diblokir: $jml_blokir user.php?proses=terblokir".</p>". // untuk tabel pemesan dan terblokir (tampilan sama) $chk_name = "aktivasi[]". $form = "proses_db. } else if ($tabel == 'tbl_prospek') Bab 5 . // ambil data yang dipost $tabel = filter_str($_GET['tabel']). include ('. $form = "proses_db. $chk_name = "blokir[]". // untuk query SQL selain tbl_prospek // cek nama tabel if ($tabel == 'tbl_member') { $jdl = " <p class='besar'>Daftar Member</p> <p>Total member yang sudah bergabung: $jml_member user.php?proses=member". // label pada header kolom $order_by = "transfer".php'). dan Membuat Website Reseller 476 . } else { // ambil data dari URL $page = filter_str($_GET['page']). $web_stat = ''. exit. // nama checkbox $tombol = "Aktivasi".<br><br> Statistik berikut menunjukkan daftar pemesan e-book \"Internet Sebagai Ladang Bisnis\". $tombol = "Blokir".<br><br> Statistik berikut menunjukkan daftar member ladangbisnis.Memulai Bisnis di Internet.. // cek apakah user sudah login atau belum if (!cek_session('admin')) { header('Location: index.ladangbisnis.php').. // kosongkan hari dan statistik agar tabel lebih lebar $hari_ini = ''.<br><br> Statistik berikut menunjukkan daftar member ladangbisnis. // label Tombol $status = "Aktivasi?". } else if ($tabel == 'tbl_pemesan') { $jdl = " <p class='besar'>Daftar Pemesan</p> <p>Total pemesan e-book: $jml_pemesan user.locahost yang keanggotaannya diblokir.localhost // panggil file-file yang diperlukan include ('. $status = "Blokir?"./include/class_halaman.</p>"./include/class_skin./include/admin_var.

else $color = '#f4f4f4'. $data[3]." ORDER BY $order_by DESC LIMIT $record.<br><br> Statistik berikut menunjukkan daftar prospek ladangbisnis.php?proses=prospek". // urut berdasarkan tgl_masuk } // buat array if ($tabel == $header_arr else $header_arr untuk header kolom 'tbl_prospek') = array("Tgl. $chk_akt = "<input type='checkbox' name='$chk_name' value='$data[1]'>". // ada di konfig. $pph = $hal->set_pph($u_pph).localhost { $jdl = " <p class='besar'>Daftar Prospek</p> <p>Total prospek yang berhasil didapat: $jml_prospek user. "Hapus?"). // panggil class halaman $hal = new halaman. "Email".Memulai Bisnis di Internet. $hal->set_page($page). $hal->set_tabel($tabel).locahost</p>". $query = "SELECT * FROM $tabel". // lakukan looping untuk menampilkan hasil while ($data = mysql_fetch_array($hasil)) { // agar setiap baris warnanya silih berganti if ($color == '#f4f4f4') $color = '#ffffff'. $chk_del = "<input type='checkbox' name='hapus[]' value='$data[1]'>". $order_by = "tgl_masuk"."</tr>". "Nama". $form = "proses_db. Join". $chk_del). "Nama". "Kota". "Hapus?"). "Username".php?to=$data[4]' class='tabel'>$data[4]</a>". dan Membuat Website Reseller 477 . Join". "Email". // buat link email $l_mail = "<a href='mail_to. $hasil = $hal->query_SQL($query. $data[2]. Web Design. $data[1]. $kolom_arr = array($data[0]. "Transfer". // lakukan query ulang $record = $hal->get_record(). 'th'). = array("Tgl. } else $kolom_arr = array($data[0]. $jml_hal = $hal->get_jml_hal(). $l_mail. "reseller". $l_mail. Bab 5 .buat_kolom($header_arr. $jml_data = $hal->get_jml_data(). $data[5]. $pph").ladangbisnis. // buat array kolom if ($tabel == 'tbl_prospek') { $l_mail = "<a href='mail_to. $status.php // lakukan query untuk mendapatkan banyaknya data dan jumlah halaman $hal->query_SQL($query).php?to=$data[1]' class='tabel'>$data[1]</a>". "Reseller". $utama = " <table border='0' width='100%' cellpadding='5'> <tr><td> $jdl <form action='$form' method='post'> <table border='1' cellpadding='5' bordercolor='#cgcgcg' width='775'> <tr bgcolor='#ba7b31' class='putih'>" . $data[3].

Yang berbeda hanya form dan isi halaman saja.= " <tr bgcolor='#ba7b31' align='center'><td colspan='4'></td> <td><input type='submit' value='Hapus'></td></tr> </table></form><br>".ladangbisnis. $menu). Tugas anda sebagai administrator hanyalah mencocokkan data transfer yang ada di statistik dengan yang ada di bank anda.Memulai Bisnis di Internet. Untuk variabel $chk_name.. $utama). maka kita harus memilih variabel mana yang sama dan banyak digunakan oleh semua tabel agar kita tidak perlu menuliskannya ulang pada statemen if. $skin->ganti_skin('. 'align="center" class="sf"'). Web Design. Karena kita menghadapi kemungkinan 4 tabel.php'). $skin->ganti_tag('{UTAMA}'. Maka kita juga meletakannya diluar if.localhost $data[6].= $hal->show_page("statistik. } // akhir while $hal->set_hal(). $utama .buat_kolom($kolom_arr.php?tabel=$tabel"). $footer). $skin->ganti_tag('{KIRI}'. $chk_akt.php. Bab 5 . Output dari file ini dapat anda lihat pada gambar 5. $skin->ganti_tag('{FOOTER}'. $tombol dan $status tampilan untuk tabel pemesan dan terblokir sama jadi kita meletakkannya diluar statemen if. PENJELASAN SCRIPT Karena merupakan file admin pertama kita mengecek apakah admin sudah login atau belum dengan mengecek session admin.13."</tr>". $chk_del)./template/member_skin. Dimana isi dari tabel inilah yang menentukan aksi yang akan dijalankan."$kembali </td></tr> </table>". Jika belum maka tampilkan form login. $skin->ganti_tampilan() ?> Simpan pada direktori reseller\_my_cp_ dengan nama statistik. dan Membuat Website Reseller 478 . Dari keempat tabel hanya tabel prospek yang strukturnya berbeda.= " <tr bgcolor='$color' height='25'>" . Begitu pula dengan variabel $order_by yang menyimpan kolom mana yang akan di-sort pada query SQL nantinya. // beri nilai untuk navigasi halaman // cek jika tabelnya prospek maka cukup sediakan satu