1 Oleh : M. Zulkarnain, S. Kom2 DAFTAR ISI BAB I INSTALASI PROGRAM XAMPP (Apache, MySQL, PHP) Geany 0.14 Editor... 1 BAB II FORM Metode / Variabel $_G...
7.3 Mengolah Grafik Dinamis ...............................................................................
7
7.3.1 Membuat Grafik Statis ...........................................................................
7
7.3.2 Grafik Batang ........................................................................................
7
7.3.3 Grafik Lingkaran ....................................................................................
7
7.4 Manajemen Gambar pada Database ..............................................................
7
7.4.1 Menyimpan Gambar dalam Tipe BLOB .................................................
7
7.4.2 Menampilkan Gambar ...........................................................................
7
7.4.3 Memadukan Gambar dengan Teks ........................................................
7
BAB VIII QUERY .............................................................................................................
9
BAB IX MULTIPLE PAGE ................................................................................................
10
DAFTAR REFERENSI .....................................................................................................
X
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
ii
Pemrograman Internet II
BAB I INSTALASI PROGRAM
1.1 XAMPP (Apache, MySQL, PHP) Step by Step instalasi tool atau aplikasi XAMPP tidak dibahas pada modul ini, akan tetapi Step by Step XAMPP Installation dapat di ambil di alamat wordpress penulis berikut : www.masecelebes.wordpress.com
1.2 Geany 0.14 Editor Pada materi Pemrograman Internet II kali ini penulis memilih memakai Geany 0.14 sebagai editor text-nya. Adapun alasan penulis memakai Geany 0.14 Editor, sebab Geany 0.14 Editor adalah tool atau aplikasi third party yang bersifat Open Source dan memiliki kapasitas file yang kecil serta memiliki paket instalasi versi Linux dan versi Windows, sehingga sangat membantu sekali jika kita ingin membuat dan mengembangan web bersifat multi platform. HTML Authoring Tools
Text Editor
OS Default
Vi Linux Operating System.
Notepad Windows Operating System.
Third Party
Joe Linux Operating System.
Geany Linux & Windows Operating System.
Edit Plus, Ultra Edit Windows Operating System.
Visual Editor
OpenOffice.org Writer Linux & Windows Operating System.
Macromedia Dreamweaver Windows Operating System.
Microsoft Office Word Windows Operating System.
Step by Step Geany 0.14 Installation dapat di ambil di alamat wordpress penulis berikut : www.masecelebes.wordpress.com
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
1
Pemrograman Internet II
BAB II FORM
Metode pengiriman variabel melalui form terdiri dari 2 metode, yaitu metode GET dengan variabel $_GET dan metode POST dengan variabel $_POST. Apa perbedaan dari kedua metode dan variabel tersebut ? Pada bab II ini kita akan membahas perbedaan dari kedua metode dan variabel tersebut serta contoh penggunaannya.
2.1 Metode / Variabel $_GET Variabel $_GET adalah merupakan sebuah variabel yang bertipe Array. Dan nilai-nilai yang terdapat pada variabel tersebut akan dikirim ke HTTP dengan metode GET. Variabel $_GET digunakan untuk mengelompokkan sejumlah nilai dari sebuah form dengan metode GET. Informasi yang dikirim dari sebuah form dengan metode GET dapat dilihat oleh semua orang karena informasi tersebut ditampilkan pada browser di address bar. Karakteristik penggunaan metode GET :
Variabel - variabel yang dikirim dengan metode GET akan ditampilkan pada URL.
Variabel dibatasi maximal 100 karakter.
Karena variabel - variabel yang dikirim ditampilkan pada URL, maka dimungkinkan alamat web akan di bookmark. Listing 2.1 simpleform.html Form HTML sederhana. 1: 2: 3: 4: 5: 6: 7: 8. 9: 10: 11: 12: 13: 14:
A simple HTML form
Listing 2.2 send_simpleform.php Membaca inputan dari sebuah form. 1:
2
Pemrograman Internet II 2: echo "
Welcome ".$_GET["user"]."!
"; 3: echo "
Your message is: ".$_GET["message"]."
"; 4: ?>
Listing 2.1 simpleform.html, terlihat pada baris 8 terdapat sebuah text field dengan nama “user”, pada baris 10 terdapat sebuah text field dengan nama “message” dan pada baris 11 terdapat sebuah submit button. Kemudian elemen-elemen form yaitu argumen ACTION, menuju ke suatu file dengan nama send_simpleform.php, METHOD yang digunakan adalah GET, sehingga semua variabel akan disimpan pada variabel super global $_GET.
2.2 Metode $_POST Variabel $_POST adalah merupakan sebuah variabel yang bertipe Array. Dan nilai-nilai yang terdapat pada variabel tersebut akan dikirim ke HTTP dengan metode POST. Variabel $_POST digunakan untuk mengelompokkan sejumlah nilai dari sebuah form dengan metode POST. Informasi yang dikirim dari sebuah form dengan metode POST tidak dapat dilihat oleh semua orang karena informasi tersebut tidak ditampilkan pada browser di address bar. Listing 2.3 simpleform.html Form HTML sederhana. 1: 2: 3: 4: 5: 6: 7: 8. 9: 10: 11: 12: 13: 14:
A simple HTML form
Listing 2.4 send_simpleform.php Membaca inputan dari sebuah form. 1: Welcome ".$_POST["user"]."!"; 3: echo "
Your message is: ".$_POST["message"]."
"; 4: ?>
Listing 2.3 simpleform.html, terlihat pada baris 8 terdapat sebuah text field dengan nama “user”, pada baris 10 terdapat sebuah text field dengan nama “message” dan pada baris 11 terdapat sebuah submit button. Kemudian elemen-elemen form yaitu argument ACTION, menuju ke suatu file dengan nama send_simpleform.php, METHOD yang digunakan adalah STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
3
Pemrograman Internet II
POST, sehingga semua variabel akan disimpan pada variabel super global $_POST. Karakteristik penggunaan metode POST :
Variabel - variabel yang dikirim dengan metode POST tidak akan ditampilkan pada URL.
Variabel tidak dibatasi jumlah karakter.
Karena variabel - variabel yang dikirim tidak ditampilkan pada URL, maka tidak mungkin alamat web di bookmark. Variabel $_REQUEST merupakan variabel PHP yang terdiri dari :
$_GET
$_POST
$_COOKIE
Sehingga variabel $_REQUEST dapat digunakan untuk menerima kiriman dari sebuah form yang menggunakan metode pengiriman variabel GET dan POST. Contoh : Welcome ".$_REQUEST["user"]."!"; echo "
Your message is: ".$_REQUEST["message"]."
"; ?>
2.3 Validasi Form Ketika kita bekerja dengan sebuah form yang melakukan proses, kita dimungkinkan untuk melakukan validasi terhadap data yang di-input-kan oleh user. Adapun kegunaan dari validasi terhadap input-an dari user adalah untuk menghindari data yang tidak sesuai atau data yang seharusnya diisi ternyata kosong. PHP memiliki sejumlah fungsi numerik dan string yang dapat digunakan untuk validasi input-an user tersebut. Beberapa fungsi string yang dapat digunakan antara lain :
is_string(string) – memastikan apakah variabel string bernilai string. Jika ya, maka akan menghasilkan nilai True jika tidak akan menghasilkan nilai False.
is_int(string) or is_integer(variable) - memastikan apakah variabel string bernilai integer. Jika ya, maka akan menghasilkan nilai True jika tidak akan menghasilkan nilai False.
is_numeric(string) - memastikan apakah variabel string bernilai numerik. Jika ya, maka akan menghasilkan nilai True jika tidak akan menghasilkan nilai False.
is_double(string) or is_float(string) - memastikan apakah variabel string bernilai float. Jika ya, maka akan menghasilkan nilai True jika tidak akan menghasilkan nilai False.
strlen(string) – menghasilkan nilai berupa panjang dari sebuah string.
strtolower(string) – merubah nilai string menjadi huruf kecil.
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
4
Pemrograman Internet II
strtoupper(string) - merubah nilai string menjadi huruf besar.
Listing 2.6 validasi1.php Mengecek Field. "; } else { $nama=$_POST['nama']; } if ($_POST['unama'] == "") { echo "User name harus diisi "; } else { $unama=$_POST['unama']; } if (($_POST['pass'] == "") AND strlen($_POST['pass']<6)) { echo "Password harus diisi "; } else { STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
5
Pemrograman Internet II $pass=$_POST['pass']; } echo "Name : $nama "; echo "User name : $unama "; echo "Password : $pass "; ?>
Buatlah listing 2.5 dan 2.6 diatas, lalu jalankan dan amati hasilnya jika Anda tidak mengisi semua , sebagian dan salah satu field-nya.
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
6
Pemrograman Internet II
BAB III FUNGSI DAN PENGGUNAAN KEMBALI KODE
3.1 INCLUDING FILES Pada pemrograman tingkat dasar, kita masih terbiasa dengan membuat program/coding yang sama berulang-ulang/berkali-kali, sehingga kesan ke-tidakefisiensi-an terlihat dalam program/coding kita. Untuk menghindari hal tersebut, kita perlu menggunakan fasilitas yang telah disediakan oleh PHP yang disebut dengan Include Function. Dengan menggunakan fungsi ini kita hanya menuliskan program/coding yang sama satu kali saja, kemudian kita dapat memanggilnya berkali-kali. Kelebihan dari menggunakan fungsi include() adalah kita dapat menghemat waktu (pembuatan maupun maintenance), biaya, dan tenaga dalam pembuatan program/aplikasi yang kita buat. Ada 2 cara dalam pemanggilan program/coding/file yang telah kita dibuat sebelumnya :
require(filename) - includes and evaluates the specified file include(filename) - an alias of require()
3.2 USING INCLUDE() Untuk dapat menggunakan fungsi include(), pertama-tama kita membuat sebuah file yang akan kita panggil/jalankan menggunakan fungsi include(). Listing 3.1 welcome.php.
Listing 3.2 master.php. Terima kasih."; ?>
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
7
Pemrograman Internet II
Buat terlebih dahulu Listing 3.1, lalu simpan dengan nama welcome.php, kemudian buat Listing 3.2, lalu simpan dengan nama master.php. Simpan kedua file tadi di web server document root (htdoc/www) tergantung web server yang Anda gunakan. Selanjutnya jalankan Listing 3.2, maka akan menghasilkan tampilan sebagai berikut: Selamat Datang di PHP. Terima kasih.
Listing 3.3 test_returnvalue.php to Execute PHP and Assign the Return Value.
Listing 3.4 returnvalue.php An Include File That Returns a Value. Tulisan ini tidak akan ditampilkan sebab berada diluar statement return.
Buatlah Listing 3.3 dan Listing 3.4, kemudian simpan kedua file tersebut di web server document root (htdoc/www) tergantung web server yang Anda gunakan. Jalankan file test_returnvalue.php, hasilnya sebagai berikut: File yang dimasukkan, menghasilkan 8
Listing 3.5 loopy_include.php Using Include() Within a Loop. "; include("$incfile"); echo " "; } ?>
Simpan Listing 3.5 dengan nama loopy_include.php pada web server document root (htdoc), lalu jalankan file tersebut, apakah hasilnya?
Umunya fungsi include() digunakan untuk memanggil file - file menu dari program yang dibuat dan file – file konfigurasi (koneksi database, buka database dll). STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
8
Pemrograman Internet II
BAB IV ENKRIPSI AUTHENTIKASI USER
Sebagaimana Anda ketahui, aplikasi yang berjalan di Internet memungkinkan siapa saja untuk dapat mengaksesnya. Secara umum memang demikian, akan tetapi di dalam pembuatan aplikasi semacam web, ada halaman tertentu yang tidak boleh diakses oleh sembarang user. Oleh karena itu, diperlukan proteksi untuk melakukan pembuktian atau verifikasi keaslian (authentikasi) user yang berhak mengakses halaman web tersebut.
Pada bab IV ini akan dijelaskan bagaimana cara memberikan proteksi pada halamanhalaman web yang bersifat private, artinya hanya user tertentu saja atau admin saja yang berhak mengaksesnya. Pemberian proteksi ini cukup penting sekali, mengingat halaman web yang dilindungi tersebut memiliki peran penting dalam aplikasi yang dibuat.
4.1 HTTP Header Pada saat Anda mengunjungi alamat web, secara normal browser Anda akan menyimpan alamat tersebut di tempat penyimpanan sementara (cache). Ketika di lain waktu Anda mengarahkan browser ke alamat tertentu, pertama-tama browser akan memeriksa cache untuk melihat apakah halaman tersebut sudah pernah dikunjungi atau belum. Jika memang halaman tersebut sudah tersimpan, selanjutnya browser memeriksa apakah data yang ada di server telah di-update. Jika ternyata belum ada, maka bergantung pengaturan browser, namun biasanya browser menggunakan cache dari web. Meskipun mekanisme ini sangat berkaitan dengan browser client, akan tetapi PHP juga menyediakan cara untuk mengatur header HTTP, yaitu menggunakan fungsi header(). Perlu diperhatikan bahwa server tidak memiliki informasi mengenai tanggal modifikasi terakhir, sehingga browser akan memperlakukan halaman dinamis sama dengan halaman statis lainnya. Oleh karena itu, jika browser mengunjungi halaman yang menggunakan PHP, sebaiknya server mamapu memberikan informasi waktu modifikasi untuk file PHP itu sendiri. Melalui fungsi header() yang dikirim sebelum isi program , Anda dapat memastikan bahwa browser akan selalu mengambil isi yang baru. Pada dasarnya header digunakan untuk mengimplementasikan negosiasi cache dengan browser client yang memungkinkan isi diupdate, jika dokumen memang benar-benar telah dimodifikasi.
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
9
Pemrograman Internet II
Untuk mengatur waktu terkahir modifikasi, Anda cukup menggunakan header() dengan cara sebagai berikut:
Pada saat browser menerima header Last-Modified, informasi yang ada akan disimpan dan diberikan kembali ke server ketika file tersebut diminta lagi. Jadi, informasi inilah yang akan dikirim terlebih dahulu, kemudian server membandingkannya dengan waktu modifikasi dokumen. Apabila waktunya sesuai, dengan kata lain belum ada modifikasi, sehingga ia tidak perlu mengambil untuk disimpan dalam cache-nya. Anda juga dapat menghindari cache browser menggunakan header(), akibatnya halaman yang telah dikunjungi client tidak akan disimpan ke halaman yang sifatnya pribadi atau memerlukan login ketika mengaksesnya.
Jika kita ingin mengalihkan (redirect) halaman web ke halaman lainnya atau mengalihkan ke alamat lain, Kita dapat menggunakan informasi header.
Ketika browser menerima informasi Location, hal ini tidak hanya mengakibatkan header dikirim ke browser, akan tetapi juga mengembalikan kode redirect (302). Akibatnya browser akan mencari lokasi yang disebutkan, meskipun Anda memberikan kode program maka tetap saja tidak dijalankan.
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
10
Pemrograman Internet II
4.2 Cookie Cookie sering kali digunakan pada aplikasi yang berkaitan dengan login user, sehingga kita dapat membedakan identitas setiap kunjungan user. Selain untuk memeriksa keabsahan user, cookie juga mampu memudahkan user yang ingin melakukan kunjungan lagi setelah menutup browser. Pada dasarnya cookie merupakan mekanisme untuk meletakkan data pada remote browser sehingga memudahkan penelusuran atau identifikasi user. Dapat juga dikatakan bahwa cookie merupakan informasi dalam bentuk teks yang dipertukarkan oleh client dan server, di mana pembuat cookie adalah pihak server. Dalam cookie terdapat informasi mengenai nama server pemberi cookie, path cookie, isi dan tanggal batas aktifnya. Ada pun setiap cookie yang dikirm ke client, secara langsung akan diubah ke dalam variabel PHP semacam method GET atau POST. Hal ini bergantung pada konfigurasi variabel register_global dan variables_order dalam php.ini.
4.2.1 Dasar Penggunaan Cookie Dalam menggunakan cookie, terlebih dahulu Anda perlu mengatur cookie tersebut melalui fungsi setcookie() atau setrawcookie(). Perlu Anda perhatikan, cookie adalah bagian dari header HTTP sehingga juga harus dipanggil sebelum output dikirim ke browser. Hal ini berarti bahwa sebelum kode program dikirim ke browser, maka cookie harus dikirm terlebih dahulu. Untuk menunda output program sampai Anda berhasil memastikan bahwa cookie dikirm atau tidak, Anda dapat menggunakan fungsi kontrol output. Fungsi ini memungkinkan kita mengontrol output yang dikirim oleh program. Meskipun PHP menyediakan dua buah cara pengiriman cookie, yaitu melalui setcookie() serta setrawcookie(), akan tetapi prosesnya agak berbeda. Fungsi setcookie() akan mendefinisikan cookie yang dikirim pada heade HTTP, sedangkan setrawcookie() akan mengirikan cookie tanpa menyertakan nilai cookie pada encoding URL. Ada pun fungsi yang paling sering digunakan dalam mengirim cookie adalah melalui setcookie().
Sintaks penulisan cookie yang lengkap adalah sebagai berikut: setcookie(string name [, string value [, int expire [, string path [, string domain [, int secure]]]]]);
Penulisan cookie ini adalah sebelum header atau sebelum tag maupun . STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
11
Pemrograman Internet II
Parameter
Deskripsi
name
Nama cookie, misalnya setcookie (“mycookie”, “Isi cookie”). Nama cookie adalah mycookie.
value
Nilai dari cookie, pada contoh di atas nilai cookie adalah “Isi cookie”.
expire
Batas kadaluarsa cookie aktif, misalnya time()+3600. Nilai waktu ditulis dalam satuan detik, jadi batas cookie adalah satu jam.
path
Path pada server di mana cookie diletakkan, nilai default yang digunakan adalah direktori aktif di mana cookie diset.
domain
Nama domain yang menyatakan cookie berada, misalnya www.domain.com.
secure
Menyatakan bahwa cookie harus dikirimkan melaui koneksi HTTPS. Nilai default adalah 0, apabila diberi nilai 1 maka cookie hanya akan diset jika ada koneksi HTTPS.
Tabel 4.1 Keterangan parameter cookie. Berikut contoh pembuatan cookie secara lengkap, dengan mengisi semua argumen yang telah dijelaskan pada tabel 4.1.
Proses
pemanggilan
cukup
$_COOKIE[“nama_cookie”]
Anda
memanggil
atau
nama
cookie
melalui
array
tersebut,
misal asosiatif
$HTTP_COOKIE_VARS[“nama_cookie”]. Selain itu juga tersedia cara untuk mengetahui semua cookie, yaitu melalui perintah print_r($_COOKIE). Isi Cookie) ?>
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
12
Pemrograman Internet II
Demo Cookies
/* Periksa cookie */ if (isset($_COOKIE['mycookie'])) { echo "
Hai, Isi cookie adalah : $_COOKIE[mycookie]
"; } else { echo "
Cookie belum di-set
"; } ?>
Jika listing 4.1 dijalankan pertama kali, maka hasilnya seperti ditunjukkan pada gambar 4.1.
Gambar 4.1 Menjalankan test_cookie pertama kali. Namun setelah melakukan refresh atau anggaplah kunjungan berikutnya, baru si cookie akan ditampilkan sebagai mana ditunjukkan pada gambar 4.2.
Gambar 4.2 Setelah test_cookie di refresh. STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
13
Pemrograman Internet II
Listing 4.2 cookie_err.php Meletakkan cookie setelah program. Test Cookie <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <meta name="generator" content="Geany 0.14" />
Demo Cookies
/* Letakkan cookie pada header */ setcookie("mycookie","Isi Cookie"); /* Periksa cookie */ if (isset($_COOKIE['mycookie'])) { echo "
Hai, Isi cookie adalah : $_COOKIE[mycookie]
"; } else { echo "
Cookie belum di-set
"; } ?>
Jika listing 4.2 jialankan, maka akan menghasilkan tampilan sebagaimana ditunjukkan pada gambar 4.3.
Gambar 4.3 Penempatan cookie setelah header HTTP (salah).
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
14
Pemrograman Internet II
4.2.2 Mengatur Batas Waktu Cookie Pada listing sebelumnya Anda telah mengetahu bahwa, nilai cookie akan dihapus setelah menutup browser. Namun tidak demikian halnya jika Anda memberikan batas waktu masa aktif cookie, di mana untuk kunjungan yang sama berikutnya akan tetap mengenali identitas dari user.
Sintaks penulisan cookies dengan batas waktu tertentu.
Meskipun secara normal cookie akan terhapus ketika browser ditutup, namun kita juga dapat menghapus cookie dengan tanpa mentutup browser. Penghapusan cookie ini dilakukan dengan cara memanggil fungsi setcookie() dan memberikan argumen kosong pada parameter nilai. Sebaiknya Anda perlu menyertakan argumen nilai, meskipun mengosongkan isinya.
Penulisan cookies di atas memang tidak memberikan nilai, akan tetapi terkadang tidak berjalan seperti yang diharapkan. Ada pun yang lebih tetap sebagai berikut:
4.2.3 Dukungan Terhadap Cookie Masalah penting yang harus dipertimbangkan ketika menggunakan cookie adalah dukungan browser. Ini cukup penting sekali, karena aplikasi Anda tidak akan berjalan sempurna apabila browser yang digunakan tidak mendukung cookie. Begitu pula halnya ketika fasiltias cookie dimatikan, sehingga Anda perlu memastikan bahwa dukungan cookie benar-benar ada. Untuk mengetahui dukungan browser terhadap cookie, kirimkan cookie ke suatu halaman kemudian periksa hasilnya. Listing 4.3 cek_cookie_1.php Mengecek dukungan browser terhadap cookie.
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
Jika listing 4.3 dijalankan, maka hasilnya sebagaimana ditunjukkan pada gambar 4.4.
Gambar 4.4 Mengecek dukungan browser terhadap cookie. Umunya kebanyakan browser saat ini sudah mendukung cookie, sehingga kita tidak perlu khawatir bahwa aplikasi tidak dapat berjalan. Namun demikian, terkadang ada user yang sengaja mematikan fasilitas cookie untuk tujuan tertentu. Ini juga perlu kita perhatikan, karena akibatnya akan sama dimana aplikasi tidak berjalan dengan baik. Untuk menghindari hal tersebut, Anda dapat memeriksa apakah cookie aktif atau dalam keadaan disable.
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
16
Pemrograman Internet II
Pemeriksaan cookie cukup sederhana dan praktis, pertama mengirim cookie apabila belum diset dan memberinya dengan nilai 1. Melalui nilai ini kita dapat memeriksa apakah sesuai dengan URL yang kita kirimkan. Listing 4.4 cek_cookie_2.php Memeriksa cookie. Tidak dapat men-set cookie, aktifkan cookie...."; } else { echo "
Support Cookie [Ok]
"; } } ?>
Jika listing 4.4 dijalankan dan browser mendukung cookie atau fasilitas cookie aktif, maka hasilnya sebagaimana ditunjukkan pada gambar 4.5.
Gambar 4.5 Mengecek dukungan cookie_2.
4.2.4 Authentikasi Menggunakan Cookie Implementasi penggunaan cookie dalam memproteksi halaman web yang sifatnya pribadi. Pada aplikasi ini, konfigurasi yang memuat data user serta password diletakkan dalam file
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
17
Pemrograman Internet II
program. Meski demikian, tidak mudah bagi user untuk mengetahuinya, karena sudah dilakukan proteksi halaman. Pertama kita sediakan form login pada file program index.php, dan sekaligus melakukan pemeriksaan cookie. Dengan memberikan nama index.php maka secara normal halaman inilah yang pertama kali ditampilkan ke user. Pada pemeriksaan ini digunakan cookie dengan nama my_cookie. Apabila cookie belum diset, maka yang tampil adalah halaman untuk login. Sebaliknya, jika sudah diset akan tampil halaman yang sifatnya pribadi. Diasumsikan bahwa halaman page1.php merupakan halaman yang bersifat pribadi, jadi hanya boleh diakses oleh si pembuat saja (admin). Listing 4.5 index.php Authentikasi menggunakan cookie. Halaman Login <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <meta name="generator" content="Geany 0.14" />
Login Administrasi
/*Jika belum ada cookies yang di set */ if (!isset($_COOKIE["my_cookie"])) { ?> } else { echo "Anda sudah login... " ."[Lanjutkan " ."Log Out]"; } ?>
Jika listing 4.5 dijalankan, maka hasilnya sebagai mana ditunjukkan pada gambar 4.6.
Gambar 4.6 Authentikasi login dengan cookie. Listing 4.6 validasi.php
dan Password */ "admin"; "admin"; = "admin user";
/* Penambahan User */ $uname[2] = "user2"; STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
19
Pemrograman Internet II $upass[2] = "user2"; $user_as[2] = "admin user 2"; /* Halaman Login */ $login_page = "index.php"; /* Halaman utama jika login benar */ $page_ok = "page1.php"; /* Jika form kosong dan cookies belum di set, * Tampilkan pesan error dan halaman login */ if ($_POST[username] == "" && $_POST [password] == "" && !iset($_COOKIE["my_cookie"])) { echo "Isikan Nama dan Password Anda"; include ($login_page); exit(); } /* Periksa masukkan hanya huruf dan angka */ if ($_POST[username] == "" && $_POST [password] == "" && !iset($_COOKIE["my_cookie"])) { if (preg_match ("/[^a-zA-Z09]/",$_POST[username].$_POST[password])) { echo "Silahkan Ulangi Lagi..."; include ($login_page); exit(); } } /* Jika cookie belum di set */ if (!isset($_COOKIE["my_cookie"])) { $user_count = count($uname); $user_exists = false; for ($i =1; $i <= $user_count; $i++) { if ($uname[$i] == $_POST[username] && $upass[$i] == $_POST[password]) { $user_id=$i; $user_exists = true; } } if (!$user_exists) { echo "Nama User atau Password Tidak Cocok"; include($login_page); exit(); } /* Set cookie, jika login OK */ $cookie_val = $uname[$user_id]; setcookie ("name", $user_as[$user_id], 0); setcookie ("my_cookie", $cookoie_val, 0); header ("Location: $page_ok"); exit(); } ?>
Untuk menambah user lagi, buat dalam bentuk array seperti yang telah dicontohkan dalam STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
20
Pemrograman Internet II
baris dengan tanda komentar. Kemudian untuk page1.php yang merupakan halaman yang bersifat pribadi, agar validasi user dapat bekerja, Anda perlu memasukkan file validasi.php ke dalam halaman ini sebelum program dikirimkan.
Untuk menghapus cookies, sebenarnya Anda dapat langsung menutup browser ketika ingin logout. Meskipun demikian, sebaiknya Anda juga perlu menyediakan kode sendiri untuk menghapus cookie secara wajar. Sebagaimana dijelaskan sebelumnya, penghapusan cookie ini dilakukan dengan cara memanggil fungsi setcookie() dan memberikan argumen kosong pada parameter nilai. Listing 4.8 logout.php Menghapus cookies sekaligus menutup aplikasi.
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
21
Pemrograman Internet II /* logout.php */ $login_page = "index.php"; /* Menghapus cookies aktif */ setcookie ("my_cookie", "", 0, "", "", 0); setcookie ("name", "", 0, "", "", 0); /* Mengembalikan ke halaman login */ header ("Location: $login_page"); exit(); ?> untitled <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <meta name="generator" content="Geany 0.14" />
4.3 Session Control
4.3.1 Konfigurasi Session
4.3.2 Dasar Penggunaan Session
4.3.3 Authentikasi Menggunakan Session
4.4 Enkripsi Data
4.4.1 Message-Digest
4.4.2 Enkripsi String dengan Crypt
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
22
Pemrograman Internet II
4.4.3 Algoritma SHA1
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
23
Pemrograman Internet II
BAB V FILE AND FOLDER ACCESS
5.1 Opening Files PHP menyediakan fungsi untuk meng-akses file-file baik yang berada pada operating system Unix maupun Windows untuk keperluan membaca, manulis atau menambah content. fopen(filename, mode)- function used to open a file. The function requires a filename and mode. It returns a file pointer which provides information about the file and is used as a reference fclose(resource handle) - function used to close a file. The function requires the file pointer created when the file was opened using the fopen() function. Returns TRUE on success or FALSE on failure Sebelum kita bekerja dengan sebuah file, pertama kali kita harus membuka file tersebut untuk dibaca, ditulis atau untuk keperluan keduanya (baca dan tulis). PHP menyediakan fungsi fopen() untuk melakukan hal tersebut, dan fungsi ini membutuhkan string yang terdiri dari path, yang diikuti mode apa file tersebut dibuka. Mode
Keterangan
r
Membuka file untuk dibaca. Pointer file akan berada di awal file.
r+
Membuka file untuk dibaca dan ditulis. Pointer file akan berada di awal file.
w
Membuka file untuk ditulis. Jika file tidak ada, maka file ini akan dibuat. Jika file ditemukan, maka pointer file akan berada di awal file dan fungsi untuk menghapus isi file.
w+
Membuka file untuk dibaca dan ditulis. Jika file tidak ada, maka file ini akan dibuat. Jika file ditemukan, maka pointer file akan berada di awal file dan fungsi untuk menghapus isi file.
a
Membuka file untuk ditulis. Jika file tidak ada, maka file ini akan dibuat. Jika file ditemukan, maka pointer file akan berada di akhir file.
a+
Membuka file untuk dibaca dan ditulis. Jika file tidak ada, maka file ini akan dibuat. Jika file ditemukan, maka pointer file akan berada di akhir file. Tabel 5.1 Mode membuka file.
Fungsi fopen() akan mengembalikan nilai berupa isi dari file yang akan kita gunakan dengan membuka file tersebut.
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
24
Pemrograman Internet II
5.2 Reading Files Membuka sebuah file untuk dibaca adalah: $fp = fopen("test.txt", "r");
Listing 5.1 fileread1.php, Membuka file untuk di baca.
Dalam beberapa instance, fungsi fopen() tidak mungkin tidak berhasil dalam membuka file (path tidak valid dan hak akses file). Untuk mengatasi hal tersebut, disarankan agar kita menggunakan fungsi PHP untuk menangani pesan kesalahan (error message) tersebut. Fungsi ini dapat digunakan bersamaan dengan PHP script untuk menangani pesan kesalahan (error message) dengan menambahkan operator '@'.
exit(error message) - terminates the current script and outputs the error message supplied to the function. die(error message) - an alias of the exit() function.
Listing 5.2 fileread2.php, Membuka file untuk di baca dengan fungsi error handling.
Jika file tidak dapat dibuka, maka fungsi exit() akan menampilkan pesan “Could not open or create the file” dan pembacaan script akan dihentikan. Selanjutnya bagaimana menggunakan PHP untuk membaca isi file pada system windows.
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
25
Pemrograman Internet II
Fungsi fread() dan filesize() digunakan untuk membaca isi file.
fread(resource handle, length) - function used to read the contents of a file. Reads up to length bytes from the file pointer referenced by handle. Reading stops when length bytes have been read, EOF (end of file) is reached. The function requires two parameters - a file pointer that is created when the file is opened with fopen() and a filesize that specifies how much of the file contents to read. fgetcsv(resource handle, length, delimiter) - function used to read the contents of a file and parses the data to create an array. Data is parsed on the delimiter parameter supplied to the function. filesize(filename) - returns the size of a file. If an error occurs the function returns a false value.
Listing 5.3 fileread3.php, Membuka file untuk membaca isi file.
5.3 Writing Files Membuka sebuah file untuk ditulis adalah: $fp = fopen("test.txt", "w");
Membuka sebuah file untuk ditambah adalah: $fp = fopen("test.txt", "a");
Perintah tersebut digunakan untuk menambah data pada akhir file. Fungsi fopen() akan mengembalikan nilai false jika file tidak dapat dibuka dengan berbagai alasan. Oleh karena itu, kita perlu mengecek apakah file tersebut dapat dibuka atau tidak, dengan menambahkan kondisi if. if ($fp = fopen("test.txt", "w")) { // do something with the $fp resource } STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
26
Pemrograman Internet II
Atau kita juga dapat menggunakan operator logika untuk mengeksekusi jika file tidak dapat dibuka. ($fp = fopen("test.txt", "w")) or die("Couldn't open file, sorry");
Setelah kita membuka file dan melakukan pembacaan, penulisan maupun penambahan pada file tersebut, untuk mengakhiri proses jangan lupa untuk menutup file yang telah kita buka tadi dengan fungsi fclose(). fclose($fp);
Listing 5.4 appendignfile.php. Menulis dan menambah tulisan ke dalam file. Writing to ".$filename." ... "; $fp = fopen($filename, "w") or die("Couldn't open $filename"); fwrite($fp, "Hello world\n"); fclose($fp); echo "
Appending to ".$filename." ...
"; $fp = fopen($filename, "a") or die("Couldn't open $filename"); fputs($fp, "And another thing\n"); fclose($fp); ?>
Jika file tersebut dijalankan, maka akan menghasilkan tampilan sebagai berikut : Writing to test.txt ... Appending to test.txt ...
fwrite(resource handle,string) - writes the contents of string to the file stream pointed to by handle. If the length argument is given, writing will stop after length bytes have been written or the end of string is reached, whichever comes first
Listing 5.5 filewrite.php. Menulis didalam isi sebuah file.
27
Pemrograman Internet II
fclose($newfile); ?>
Dalam beberapa kasus, dimungkinkan untuk menulis kedalam file yang sedang dibuka yang akan dijadikan file baru. Pada kasus ini dibutuhkan fungsi fopen(), fread() dan fwrite(). Setelah file dibuka pertama kali, isinya dibaca, file atau isi file tersebut ditulis ke file yang baru yang telah dibuka sebelumnya. Listing 5.6 adalah contoh dalam kasus ini. Listing 5.6 filecopy.php. Menulis didalam isi sebuah file.
5.4 Copying Files copy(original filename, new filename) - copies the contents of an original file defined by the first parameter to a new file defined by the second function parameter. The function returns a true or false value
Listing 5.7 copyfile.php. Meng-copy sebuah file ke sebuah file.
Langkah pertama adalah membuat sebuah variabel untuk menyimpan path atau alamat asli STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
28
Pemrograman Internet II
sebuah file yang akan dicopy. $orig_filename = "C:/Documents and Settings/Administrators/MyFiles/myfile.txt"; Langkah kedua adalah membuat variabel kedua untuk menyimpan path atau alamat asli file yang akan dibuat. $new_filename = "C:/Documents and Settings/Administrators/MyFiles/myNewfile.txt"; Selanjutnya fungsi copy() dijalankan, menerima dua parameter yang berisi path file asli $orig_filename dan path file baru $new_filename. Fungsi copy() akan mengembalikan sebuah nilai true, jika proses copy telah sukses, jika gagal akan mengembalikan nilai false. Nilai tersebut disimpan dalam variabel $status. $status = copy($orig_filename, $new_filename) or die("Could not copy file contents"); Jika fungsi copy() tidak bisa dijalankan (gagal), maka fungsi die() akan dijalankan dan menampilkan pesan kesalahan (error message). Jika sukses maka pesan sukses (success message) akan ditampilkan dengan menggunakan perintah atau statement echo. echo "Contents sucessfully copied"; Pada sub bab sebelumnya kita sudah mempelajari cara meng-copy file dengan fungsi fwrite() dan fungsi fread(). Tetapi fungsi copy() lebih mudah dan prosesnya langsung.
5.5 Deleting Files Fungsi unlink() digunakan untuk menghapus file. Fungsi unlink() digunakan hanya dengan alasan atau tujuan menghapus file karena tidak dapat diterima.
unlink(filename) - deletes the file defined by the first parameter. The function returns a true or false value
Listing 5.8 filedelete.php. Menghapus sebuah file dengan fungsi unlik().
Langkah pertama adalah membuat sebuah variabel untuk menyimpan path atau alamat file yang akan dihapus. $filename = "C:/Documents and Settings/Administrators/MyFiles/myfile.txt"; STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
29
Pemrograman Internet II
Selanjutnya fungsi unlink() dijalankan, menerima satu parameter yang berisi path atau alamat asli file yang akan dihapus - $filename. Lalu fungsi unlink() akan mengembalikan sebuha nilai true jika file berhasil dihapus dan nilai false jika file tidak berhasil dihapus. Nilai tersebut disimpan dalam variabel $status. $status = unlink($filename) or die("Could not delete file"); Jika fungsi unlik() tidak bisa dijalankan (gagal), maka fungsi exit() akan dijalankan dan menampilkan pesan kesalahan (error message). Jika sukses maka pesan sukses (success message) akan ditampilkan dengan menggunakan perintah atau statement echo. echo "file deleted successfully";
5.6 Renaming Files Fungsi rename() digunakan untuk mengganti nama file.
rename($orig_filename, $new_filename) - renames the file defined by the first parameter to the name defined as the second parameter. The function returns a true or false value
Listing 5.9 filerename.php. Mengganti nama file dengan fungsi rename().
Langkah pertama adalah membuat sebuah variabel untuk menyimpan path atau alamat file yang akan diganti. $orig_filename = "C:/Documents and Settings/Administrators/MyFiles/myfile.txt"; Langkah kedua adalah membuat variabel kedua untuk menyimpan path atau alamat asli file yang akan dibuat ketika nama file yang lama diganti. $new_filename = "C:/Documents and Settings/Administrators/MyFiles/newfile.txt"; Selanjutnya fungsi rename() dijalankan, menerima dua parameter yang berisi path atau alamat file asli - $orig_filename, dan path atau alamat file yang akan dibuat ketika file yang lama diganti namanya - $new_filename. Fungsi rename() akan mengembalikan sebuah nilai STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
30
Pemrograman Internet II
true jika proses menghapus sukses, nilai false jika gagal. Nilai tersebut akan disimpan pada variabel $status. $status = rename($orig_filename,$new_filename) or exit("Could not rename file"); Jika fungsi rename() tidak bisa dijalankan (gagal), maka fungsi exit() akan dijalankan dan menampilkan pesan kesalahan (error message). Jika sukses maka pesan sukses (success message) akan ditampilkan dengan menggunakan perintah atau statement echo. echo "file successfully rename";
5.7 Collecting Form Data Pada kasus yang umum, form data masukan yang diisi oleh user akan ditulis atau disimpan dalam sebuah RDMS seperti MS Access dan MySQL menggunakan ODBC dan MySQL Function. Dengan cara yang sama, form data juga dapat ditulis atau disimpan kedalam sebuah file text. Bagaimana cara melakukannya ? Pada sub bab ini akan membahas hal tersebut.
Jane
First Name:
Smith
Last Name: Current Time:
5:28 am
Submit Data
Listing 5.10 menunjukkan bagaimana cara menyimpan data ke file bertipe text yang dikirim dari sebuah form. Listing 5.10 createfile.php. Menulis data ke dalam file texts.
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
31
Pemrograman Internet II ?> A Page Web <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <meta name="generator" content="Geany 0.14" />
Writing Form Data To A File
Ketiklah listing 5.10 diatas lalu simpan dengan nama file createfile.php, amati dan analisa apa yang terjadi.
5.8 Uploading Files Beberapa aplikasi web dinamis memungkinkan user untuk meng-upload file dari komputer lokalnya ke Web server. Seperti sebuah aplikasi yang membolehkan user berbagi file dengan yang lain. Dalam PHP, untuk melakukan upload file, sangat mungkin dilakukan dengan fungsi berikut.
move_uploaded_file(filename, destination) - moves a file to a specified destination on the server.
Sebelum kita melihat secara detil dari code PHP, mari kita fokus ke form XHTML control yang digunakan untuk meng-apload file. untitled <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <meta name="generator" content="Geany 0.14" />
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
32
Pemrograman Internet II
Jika kita lihat script diatas, script tersebut diawali dengan blok standart XHTML tag
Listing 5.12 uploadfile2.php. Meng-upload file dengan error handling. 0) { switch ($_FILES['uploadFile'] ['error']) { case 1: echo 'File exceeded maximum server upload size'; break; case 2: echo 'File exceeded maximum file size'; break; case 3: echo 'File only partially uploaded'; break; case 4: echo 'No file uploaded'; break; } } else { echo 'File successfully uploaded'; } } ?> untitled <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <meta name="generator" content="Geany 0.14" />
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
35
Pemrograman Internet II
BAB VI MySQL Database With XAMPP
6.1 Memulai MySQL Salah satu paket installasi XAMPP yang sering digunakan oleh seorang developer untuk mengontrol dan me-maintenance database ialah phpMyAdmin. Setelah proses instalasi XAMPP selesai, maka kita dapat menjalankan phpMyAdmin dengan cara : Buka atau jalankan borwser Anda. Pada alamat url ketikan localhost, lalu tekan enter. Maka akan muncul tampilan sebagai berikut.
Gambar 6.1 Tampilan splash XAMPP.
Pada gambar 6.1 pilih salah satu bahasa yang Anda pahami dalam menggunakan aplikasi XAMPP (phpMyAdmin). Pembahasan pada bab ini kita akan menggunakan bahasa english yang lebih populer. Setelah kita memilih english, maka muncul tampilan phpMyAdmin sebagai mana ditunjukkan pada gambar 6.2. Pada gambar 6.2 kolom sebelah kiri, pilih atau click
phpMyAdmin untuk menjalankan phpMyAdmin.
Selanjutnya muncul tampilan
phpMyAdmin sebagai mana ditunjukkan pada gambar 6.3. Dengan menggunakan phpMyAdmin ini, kita dapat dengan mudah untuk membuat serta me-maintenance database serta table yang kita miliki dan atau yang akan kita buat dengan database MySQL tentunya.
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
36
Pemrograman Internet II
Gambar 6.2 Tampilan welcome XAMPP.
Gambar 6.3 Tampilan phpMyAdmin.
6.2 Membuat Database dan Table Setelah kita berada pada tampilan phpMyAdmin, kita siap untuk membuat salah satu database, sebagai contoh kita akan membuat database lpk_os (Lembaga Pendidikan Komputer Open Source). Ketikkan lpk_os pada field Create New Database sebagai mana ditunjukkan pada gambar 6.4, kemudian click tombol Create untuk menjalankan perintah pembuatan database.
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
37
Pemrograman Internet II
Gambar 6.4 Tampilan membuat database.
Gambar 6.5 Tampilan database yang dibuat.
6.3 Inserting Records
6.4 Selecting Records
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
38
Pemrograman Internet II
6.5 Updating Records
6.6 Deleting Records
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
39
Pemrograman Internet II
BAB VII MANAJEMEN GRAFIK WEB
7.1 Dukungan Grafik pada PHP
7.2 Manipulasi Grafik
7.3 Mengolah Grafik Dinamis
7.3.1 Membuat Grafik Statis
7.3.2 Grafik Batang
7.3.3 Grafik Lingkaran
7.4 Manajemen Gambar pada Database
7.4.1 Menyimpan Gambar dalam Tipe BLOB
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
40
Pemrograman Internet II
7.4.2 Menampilkan Gambar
7.4.3 Memadukan Gambar dengan Teks
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
41
Pemrograman Internet II
BAB VIII QUERY
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
42
Pemrograman Internet II
BAB IX MULTIPLE PAGE
STMIK Sinar Nusantara Surakarta – M. Zulkarnain, S. Kom
43
Pemrograman Internet II
DAFTAR REFERENSI
Didik Dwi Prasetyo, “Solusi Menjadi Web Master Melalui Manajemen Web dengan PHP”, Elex Media, 2005, Jakarta. Julie Meloni, “PHP, MySQL and Apache All in One Third Edition”, Sams Teach Your Self, 2006. Mark Maslakowski dan Tony Butcher, “MySQL in 21 Days”, Sams Tech Your Self, 2000. Kevin