PHP Coding Kita
PHP Coding Kita
Pemrograman
PHP
Dan
MySQL
Daftar Isi
2
BABVII
ARRAY
...................................................................................................................................................39
7.1 Konsep array ..................................................................................................................39
7.3. Navigasi array ...............................................................................................................40
7.4 Fungsi-fungsi array ........................................................................................................41
BAB VIII
Function....................................................................................................................................43
8.1 Konsep function .............................................................................................................43
8.2 Return value dan parameter ...........................................................................................43
8.3 Deklarasi function ..........................................................................................................43
8.4 Implementasi function ...................................................................................................44
BAB IX
Variable Lifetime......................................................................................................................46
9.1 Scope ..............................................................................................................................46
9.2 Passing variabel .............................................................................................................47
BABX
Class dan Objects......................................................................................................................49
10.1 Konsep class dan object ...............................................................................................49
10.2 Method dan properties .................................................................................................50
BAB XI
File Handling............................................................................................................................52
11.1 Menulis file ..................................................................................................................53
11.2 Menghapus file .............................................................................................................56
11.3 Membuat direktori .......................................................................................................56
11.4 Navigasi direktori .........................................................................................................56
11.5 Menghapus direktori ....................................................................................................57
11.6 Membaca file ...............................................................................................................57
BAB XII
Database Access .......................................................................................................................59
12.1 Sekilas SQL Query ......................................................................................................60
12.2 Membuat koneksi ke database .....................................................................................64
12.3 Mengakses hasil query .................................................................................................66
BAB XIII
String Handling.........................................................................................................................70
13.1 Sekilas Regular Expression ..........................................................................................70
13.2 Penggunaan Regular Expression ..................................................................................71
BAB XIV
Session .....................................................................................................................................73
14.1 No Session ...................................................................................................................73
14.2 Konsep session .............................................................................................................79
14.3 Implementasi : Cookie .................................................................................................79
14.4 Implementasi : Hidden Form .......................................................................................83
14.5 Implementasi : URL Embedding .................................................................................83
14.6 Implementasi : Session API .........................................................................................83
3
BAB I
PENDAHULUAN
Aplikasi internet berbasis web, yang akan dikembangkan dalam tutorial ini,
adalah salah satu penerapan multi tier application.
Multi tier application adalah aplikasi yang dibagi menjadi beberapa bagian yang
menjalankan fungsi masing-masing. Secara umum, ada tiga bagian utama dari
multi tier application:
4
materi yang cukup kompleks dalam pembangunan aplikasi. Karena
kecepatan, keutuhan, dan keamanan data merupakan faktor kritis dalam
aplikasi. Ada banyak solusi database yang tersedia di pasaran. Pada
umumnya,database yang digunakan bertipe relasional (Relational Database
Management System – RDBMS). Manajemen data dilakukan dengan bahasa
SQL (Standard Query Language).
Perbedaan kedua, adalah cara aplikasi berjalan. Pada aplikasi visual, aplikasi
dibangun dengan menggunakan tool tertentu, kemudian dikompilasi. Hasilnya
dapat langsung digunakan dalam komputer. Aplikasi berbasis web tidak dapat
dijalankan langsung di komputer. Untuk menjalankannya, dibutuhkan engine
tertentu, dalam hal ini web server.
Teknologi server side yang akan kita pelajari pada modul ini adalah PHP.
Walaupun demikian, perlu diketahui teknologi alternatif yang dapat menjadi
bahan pertimbangan.
5
yaitu hanya dapat berjalan di webserver tertentu, sehingga mengurangi
portabilitas.
1.2.3 ASP
Merupakan solusi server side programming dari Microsoft. Teknologi ini
banyak digunakan oleh para programmer yang berlatar belakang Visual
Basic. Database pasangannya adalah MS SQL Server. Operating system
pasangannya adalah Window 2000 Server yang menjalankan webserver
Microsoft IIS.
1.2.4 JavaServlet/JSP
Teknologi server side Java. Mempunyai banyak keunggulan dan kemudahan
pemrograman. Tetapi karena murni berorientasi objek, banyak programmer
pemula kesulitan menggunakannya. Selain itu, Java juga adalah bahasa
pemrograman yang relatif rumit bagi pemula. Keunggulannya, sangat
portabel. Dapat dipindahkan dengan mudah dari Windows ke Unix dan
sebaliknya.
1.2.5 ColdFusion
Bahasa pemrograman ini mirip dengan HTML, menggunakan tag untuk
membentuk blok-blok programnya.
1.2.6 PHP
Banyak digunakan oleh programmer berlatar belakang C/C++ karena
kemiripan syntaxnya. Open source, karenanya gratis dan bebas. Database
pasangannya biasanya MySQL, dijalankan bersama webserver Apache di atas
operating system Linux. Semuanya gratis dan bebas.
6
BAB II
Menjalankan Script PHP
Dalam bagian ini, kita akan membuat kode program sederhana untuk
menunjukkan bagaimana aplikasi PHP bekerja. Kita membutuhkan satu file yang
akan kita namakan welcome.php.
Source code
<?
?>
Output
Dengan menggunakan web browser, seperti internet explorer, isi alamat yang
akan diakses dengan data sebagai berikut :
http://localhost/welcome.php
7
BAB III
Statement dan Comment
3.1 Statement
Statement adalah satuan perintah dalam PHP. Statement harus diakhiri dengan
tanda semicolon/titik-koma (;).
Contoh statement :
echo(“4 + 5 = ” . 4+5);
3.2 Expression
Expression adalah satu bagian kecil kode yang akan dihitung hasilnya oleh php.
Contoh expression :
4+5
Penggunaan expression :
echo(“4 + 5 = ” . 4+5);
3.3 Comment
Ada dua cara menulis comment : comment satu baris dan comment banyak
baris.
Comment satu baris dibuat dengan menggunakan tanda //. Semua statement
yang ada di kanan // tidak dijalankan oleh interpreter. Contoh penggunaan:
8
/*
kode ini akan menampilkan hasil dari
4+5
*/
echo(“4 + 5 = ” . 4+5);
9
BAB IV
Variabel dan Tipe Data
Untuk dapat menggunakan variabel, ada dua langkah yang harus dilakukan,
deklarasi dan inisialisasi.
Contoh :
$namaPembeli $jumlahBarang$harga
Ada beberapa aturan yang diikuti berkenaan dengan penggunaan nama
variabel. Aturan pemberian nama variabel : Dimulai dengan tanda $ Karakter
pertama harus huruf atau garis bawah ( _ ) Karakter berikutnya boleh huruf,
angka, atau garis bawah.
1
PHP mengenal dua tipe data sederhana; numerik dan literal. Ditambah dengan
dua tipe data yang tidak sederhana, yaitu array dan object.
Tipe Numerik dapat menyimpan bilangan bulat. PHP mampu menyimpan data
bilangan bulat dengan jangkauan dari -2 milyar sampai +2 milyar. Contoh
bilangan bulat: 3, 7, 20.
Selain itu, tipe numerik juga digunakan untuk menyimpan bilangan pecahan
Tipe literal digunakan untuk menyimpan data berupa kumpulan huruf, kata, dan
angka.
Tipe boolean, yang dikenal dalam bahasa program yang lainnya, tidak ada dalam
PHP. Untuk menguji benar salah (true false), kita menggunakan tipe data yang
tersedia. FALSE dapat digantikan oleh integer 0, double 0.0 atau string kosong,
yaitu "". Selain nilai itu, semua dianggap TRUE.
Variabel dapat digunakan untuk menyimpan berbagai jenis data. Misalnya data
numerik yang dapat dioperasikan secara matematika.
Contoh :
$jumlahBarang = 3;
$harga = 1000;
$pembayaran = $jumlahBarang * $harga;
Secara umum, data literal ditandai dengan pasangan “ dan “. Data numerik
tidak dikelilingi oleh “ dan “. Tetapi biasanya PHP akan secara otomatis
mengubah tipe data sesuai kebutuhan. Contoh :
1
$alamat = $jalan + $noRumah;$hasil = $noRumah + $jumlahPenghuni;
$hasilAneh = $blok + $noRumah;
Pada sampel kode di atas, variabel alamat akan menyimpan nilai Gubeng
Kertajaya 29. PHP secara otomatis mengubah tipe data variabel noRumah
(numerik) menjadi literal. Variabel alamat akan bertipe literal.
Variabel hasil akan menyimpan nilai 32, yaitu penjumlahan dari 29 dan 3.
Perhatikan, konversi otomatis ini kadang berjalan secara tidak semestinya. Ini
dapat dilihat dari variabel hasilAneh yang akan menyimpan nilai 7. PHP
mengambil nilai numerik dari variabel blok, yaitu 4, kemudian
menambahkannya dengan isi variabel jumlahPenghuni. Hasil akhirnya adalah 4
+ 3, yaitu 7.
diantaranya :
[alamat web]?var1=nilai1&var2=nilai2
Misalnya, untuk memberikan variabel $nama berisi “Indarzah” dan $alamat =
“Surabaya” ke welcome.php, kita akan menulis :
welcome.php?nama=Indarzah&alamat=Surabaya
Di kolom address pada explorer. Untuk lebih jelasnya, perhatikan gambar
berikut.
1
Variabel ini dapat diakses di script welcome.php dengan cara sebagai
berikut :
?>
<html>
<head>
<title>Passing Variable</title>
</head>
<body>
</form>
</body>
</html>
dan tampilannya adalah sebagai berikut :
1
form tersebut akan diproses oleh file welcome.php
1
BAB V
Operator
Arithmetic Operator
Assignment Operator
Comparison Operator
Logical Operator
Lain-lain
$a = 5 + 3;
Operator "+" berfungsi untuk menambahkan kedua operand (5 dan 3).
+ : penjumlahan
-: pengurangan
* : perkalian
/ : pembagian
operator.htm
1
Komponen Nama Variabel
TextField kiri operand1
TextField kanan operand2
Operator op
hasilArithmetic.p
Action
hp
operator.php
.== : memeriksa apakah operand kanan bernilai sama dengan operand kiri
.> : memeriksa apakah operand kiri bernilai lebih besar daripada operand kanan
< : memeriksa apakah operand kiri bernilai lebih kecil dengan operand kanan
1
>= : memeriksa apakah operand kiri bernilai lebih besar atau sama dengan
operand kanan
<= : memeriksa apakah operand kiri bernilai lebih kecil atau sama dengan
operand kanan
!= : memeriksa apakah operand kanan tidak bernilai sama dengan operand kiri
1
5.3 Logical operator
Logical Operator digunakan untuk membandingkan dua nilai variabel yang bertipe boolean.
Hasil yang didapat dari penggunaan logical operator adalah boolean. Tabel logika berikut
digunakan sebagai pedoman perhitungan
1
5.4 Assignment Operator
$nama = "indarzah";
Pada contoh di atas, operator "=" digunakan untuk mengisi nilai "indarzah" ke
dalam variabel nama.
Selain operator "=", ada beberapa assignment operator yang lainnya, seperti
dapat dilihat pada penjelasan berikut :
Operator +=
Contoh :
$a += 3;
sama dengan
$a = $a + 3;
Operator -=
1
Contoh :
$a -= 3;
sama dengan
$a = $a - 3;
Operator *=
Contoh :$a *= 3;
sama dengan
$a = $a * 3;
Operator /=
Contoh :
$a /= 3;
sama dengan
$a = $a / 3;
Operator %=
Contoh :
$a %= 3;
sama dengan
$a = $a % 3;
Operator &=
Contoh :
$a &= TRUE;
sama dengan
$a = $a & TRUE;
2
Operator |=
Contoh :
$a |= FALSE;
sama dengan
$a = $a | FALSE;
Operator ^=
Contoh :
$a ^= 3;
sama dengan
$a = $a ^ 3;
Operator .=
Contoh :
$a .= “rudi”;
sama dengan
$a = $a . “rudi”;
Operator ++
Contoh :
$a ++ ;
sama dengan
$a = $a + 1;
Operator --
Contoh :
2
$a -- ;
sama dengan
$a = $a - 1;
Contoh penggunaan :
$string1 = "Hello";
$string2 = "World";
echo($string1." ".$string2);
akan menampilkan :
Hello World
Operator percabangan
if($user == "indarzah"){
echo("Welcome Indarzah");}
else{
echo("Wrong username");}
Hal yang sama dapat dilakukan dengan cara :
PHP memeriksa apakah pernyataan di sebelah kiri "?" benar atau salah. Apabila
benar, pernyataan di sebelah kiri tanda ":" dieksekusi. Bila salah,pernyataan di
sebelah kanan ":" dieksekusi.
2
mengakses database, dan lainnya.
Pada saat pembuatan aplikasi, pesan error ini sangat membantu dalam
menyelesaikan dan memperbaiki kesalahan pemrograman. Tetapi, padasaat
aplikasi selesai dibuat dan digunakan secara umum, pesan error iniakan
mengganggu pengguna.
Contoh penggunaan :
@chdir("temp");
Pada kondisi normal, function chdir akan menimbulkan pesan error apabila
direktori temp tidak ditemukan atau tidak dapat diakses. Dengan menggunakan
operator @, PHP akan "diam saja" apabila direktori temp tidak ditemukan atau
tidak dapat diakses.
2
BAB VI
Control Flow
Control flow dalam bahasa Indonesia dapat diartikan sebagai aliran kendali.
Maksud sebenarnya dari control flow adalah bagaimana urutan eksekusi
perintah di dalam program.
function testFlow()
{ int a = 5;
echo(a);
}
Perintah pertama yang dijalankan adalah mengisi nilai 5 ke dalam variabel a.
Perintah kedua yang dijalankan adalah menampilkan nilai yang tersimpan dalam
variabel a (dalam hal ini 5) ke browser.
Control flow di atas merupakan sebuah contoh sederhana. Beberapa control flow
yang tersedia dalam PHP :
. Percabangan (branching)
. Perulangan (looping)
. Perpindahan (jumping)
6.1 Percabangan
if – else
if(condition)
2
else
4. Statement 3 dijalankan
if - elseif - else
Untuk pilihan yang lebih dari dua, PHP menyediakan konstruksi if-elseif else.
if(condition1)
{// statement 1}
elseif(condition2)
{// statement 2}
// statement 4
Aliran program : Ada 3 kemungkinan aliran program :
1. Statement 1 dijalankan
2. Statement 4 dijalankan
1. Statement 2 dijalankan
2. Statement 4 dijalankan
1. Statement 3 dijalankan
2. Statement 4 dijalankan
2
tampilan sebagai berikut :
2
switch – case
switch(a){
case 1;
2
// statement 1 goes here
break;
case 2;
break;
case 3;
break;
default;
break;
1. Variabel a diperiksa
2. Statement dieksekusi
3. Statement 5 dijalankan
switch(a){
case 1;
case 2;
2
break;
case 3;
break;
default;
break;
}
Aliran program :
1. variabel a diperiksa
<?
2
$hari hari</h2>");
?>
6.2 Perulangan
for
Looping dengan for disebut juga determinate loop, artinya looping yang jumlah
pengulangannya (iterasi) telah ditentukan di awal looping.
Initialization expression
Stop condition
Iterative expression
Loop body
Loop body dieksekusi sekali setiap iterasi, merupakan perintah yang inginkita
lakukan berulang-ulang.
Contoh kode di atas akan menampilkan tulisan Hello World di browser sebanyak
10 kali. Untuk melihat contoh penggunaan for, tambahkan tampilan
padacontrol_flow.htm menjadi seperti gambar di bawah.
3
<?
$jumlah = 0;
for($i=0; $i<strlen($kata); $i++){
}}?>
while
While
while loop juga dikenal dengan istilah indeterminate loop, artinya jumlah
loopingnya tidak ditentukan pada awal looping. while loop lebih sederhana
daripada for loop, karena cuma memiliki dua bagian: yaitu
Stop Condition
Loop body
Sama seperti pada for loop, loop body dilaksanakan satu kali setiap iterasi.
Loop di atas akan berjalan terus tanpa henti, karena tidak ada perintah yang
mengubah nilai stop condition.
do-while loop merupakan modifikasi dari while loop. Bentuknya dapat dilihat
pada sampel kode berikut:
do{
// some statement}
while (a == true)
untuk melihat contoh penggunaan while, gunakan form yang sama dengan
forDemo. Tambahkan baris kode berikut pada whileDemo.php
<?
$jumlah = 0;
$i = 0;
while($i<strlen($kata)){
if(substr($kata, $i, 1) == $huruf){
$jumlah ++;
$i++;
3
}
}?>
6.3 Perpindahan
break
Break digunakan dalam looping untuk menghentikan suatu loop. Untuk lebih
jelasnya, perhatikan kode berikut :
<?
// melakukan break pada $i == 2
for($i = 0; $1<5; $i++){
if($i == 2){
break;
echo("Nilai i : $i <br>");
echo(“Loop Selesai”);
?>
kode tersebut akan melakukan break pada saat i bernilai 2, sehingga akan
menghasilkan output sebagai berikut :
Nilai i : 0
Nilai i : 1
Loop Selesai
continue
<?
// melakukan continue pada $i == 2
for($i = 0; $1<5; $i++){
if($i == 2){
continue;
echo("Nilai i : $i <br>");
3
echo("Loop Selesai");
?>
kode tersebut akan melakukan break pada saat i bernilai 2, sehingga akan
menghasilkan output sebagai berikut :
Nilai i : 0
Nilai i : 1
Nilai i : 3
Nilai i : 4
Loop Selesai
return
perintah return berfungsi untuk memerintahkan kode untuk keluar dari fungsi.
Fungsi akan kita pelajari dengan lebih mendalam pada bagian selanjutnya.
Untuk sementara, fungsi cuma akan digunakan untuk menjelaskan return.
Perhatikan kode di bawah :
<?
function testReturn(){
if($i == 2){
return;
echo("Nilai i : $i <br>");
echo("Loop Selesai");}
// jalankan functiontestReturn();
echo("Function selesai");
?>
outputnya adalah :
Nilai i : 0
Nilai i : 0
3
Function Selesai
Perhatikan bahwa Loop Selesai tidak dijalankan. Ini menunjukkan bahwa
setelah return dieksekusi, program langsung keluar dari function dan
mengeksekusi perintah setelah function, yaitu
echo(“Function Selesai”);
exit
<?
function testExit(){
if($i == 2){
exit;
echo("Nilai i : $i <br>");
echo("Loop Selesai");}
// jalankan functiontestExit();
echo("Function selesai");
?>
outputnya adalah :
Nilai i : 0
Nilai i : 0
Function Selesai
Perhatikan bahwa baris
echo("Function selesai");
Tidak dijalankan.
Untuk melihat contoh penggunaan break, continue, return, dan exit; tambahkan
tampilan pada control_flow.htm menjadi seperti gambar di bawah.
3
Tambahkan baris kode berikut pada perpindahan.php
<?
/*
variabel yang dibutuhkan
$mark -> tempat dilakukan perpindahan
$perintah -> perintah pindah : continue, break, return, exit
*/
function execute($tanda, $perintah){
for($i=0; $i<11; $i++){
if($i == $tanda){
if($perintah == "continue"){
continue;
}
elseif($perintah == "break"){
break;
}
elseif($perintah == "return"){
return;
}
elseif($perintah == "exit"){
exit;
}
}
echo($i."<br>");
echo("Looping Selesai<br>");
execute($tanda, $perintah);
?>
3
BABVII
ARRAY
Array adalah kumpulan beberapa data yang disimpan dalam satu variabel. Jadi,
berbeda dengan variabel sebelumnya yang hanya menyimpan satu nilai saja,
array dapat menampung lebih dari satu nilai.
Sebagai contoh, kita akan menyimpan data teman-teman kita dalam satu
variabel $teman. Ada tiga orang teman yang akan kita masukkan ke dalam
variabel tersebut. Secara visual, dapat digambarkan sebagai berikut :
Tiap nilai dalam array (disebut elemen) diakses dengan menggunakan index.
PHP mengenal dua macam index, yaitu index numerik dan index asosiatif. Index
numerik menggunakan angka untuk menandai tiap elemen, sedangkan index
asosiatif memberi nama untuk masing-masing elemen. Penggunaan index akan
dibahas lebih detail di bawah.
$teman
untuk membuat array berindex asosiatif, kita membutuhkan label atau nama
3
untuk masing-masing elemen. Contoh di atas akan dikembangkan agar dapat
menyimpan nomer telepon masing-masing teman.
pada gambar di atas, nama masing-masing teman akan dijadikan label untuk
nilai nomer telepon yang disimpan. Kode programnya adalah sebagai berikut :
$rekan = array(“Charlie”=>123);
for($i=0; $i<length($teman);$i++){
echo(“<br>”);
}
Untuk mengakses array berindex asosiatif, kita tidak dapat menggunakan loop
seperti di atas, karena label/index elemen disimpan dalam bentuk string.
Loop untuk mengakses array berindex asosiatif dapat dilihat pada sampel kode
di bawah :
echo(“<br>”);
}
ada dua fungsi yang terlibat di atas, each dan list. Fungsi each berguna untuk
mengakses masing-masing elemen dalam array. Elemen yang dihasilkan adalah
3
pasangan key dan value, dimana key adalah indexnya dan value adalah isinya.
Pasangan tersebut akan dipisahkan oleh fungsi list dan dimasukkan ke dalam
variabel $index dan $nilai.
sort
sort($teman);
for($i=0; $i<length($teman);$i++){
echo(“<br>”);
}
akan menghasilkan output :
asort($rekan);
echo(“<br>”);
}
akan menghasilkan output :
3
penggunaan :
ksort($rekan);
echo(“<br>”);
}
akan menghasilkan output :
3
BAB VIII
Function
return $a + $b;
}
Function sederhana di atas akan menerima masukan berupa dua angka.
Kemudian kedua angka tersebut akan dijumlahkan, dan hasilnya dikembalikan
kepada pemanggil function.
Nilai yang dikembalikan tersebut disebut return value. Sedangkan nilai yang
dimasukkan ke dalam function ($a dan $b) disebut parameter.
Ada beberapa hal utama yang perlu diperhatikan dalam deklarasi function pada
PHP.
nama function
parameter function
body
Contoh function:
2{
3 z = x + y;
4 echo(z);
5}
4
6
8{
9 z = x + y;
10 return z;
11 }
Perhatikan contoh function addNumber di atas.
- keyword function
- nama function
- parameter
Tidak boleh sama dengan function yang telah ada dalam PHP.
Hanya boleh terdiri dari huruf, angka, dan garis bawah (underscore)
Contoh function:
2{
3 z = x + y;
4 echo(z);
4
5}
8{
9 z = x + y;
10 return z;
11 }
Perhatikan contoh function addNumber di atas.
Perhatikan baris 2 sampai 4.
Function body dibatasi oleh sepasang { dan }
Function body berisi instruksi yang harus dilakukan komputer untuk
menghasilkan output yang diinginkan.
Baris 3 menyuruh komputer untuk membuat satu variabel bernama z
yang isinya adalah hasil penjumlahan x dan y.
x dan y didapat dari input yang diberikan user.
Baris 4 menyuruh komputer untuk menampilkan hasil perhitungan ke
layar.
Bedakan dengan baris 4 pada function jumlahkanlah yang memerintahkan
komputer untuk menampilkan hasil perhitungan di layar
Contoh penggunaan function
hasil = jumlahkanlah(4,5);
addNumber(4,5);
4
BAB IX
Variable Lifetime
9.1 Scope
Local
<?
function testVar(){
$a = 3;
?>
Global
Variabel global dideklarasi di luar function dan dapat digunakan di mana saja
dalam program. Variabel global tidak berlaku di dalam function kecuali
dipanggil dengan keyword global. Contoh penggunaan :
<?
$a = 4;
function testVar2(){
echo($a); // -- tidak menghasilkan apa-apa
global $a;
echo($a); // -- menampilkan 4}
?>
4
By Value
function tambahSatu($angka){
$angka++;
}
Function tersebut akan digunakan sebagai berikut :
<?
$a = 7;
tambahSatu($a);
echo(“Nilai a = ” . $a);
?>
Nilai a = 7
karena variabel angka yang ada dalam function berakhir umurnya pada saat
function selesai dijalankan. Dan variabel a yang asli tetap bernilai 7. Untuk
menghasilkan efek yang diinginkan, kita dapat menggunakan pass by reference.
By Reference
Pada pass by reference, kita memasukkan variabel yang asli ke dalam function.
Teknik ini dilakukan dengan cara sebagai berikut :
function tambahSatu(&$angka){
$angka++;
}
Function tersebut akan digunakan sama seperti contoh di atas :
<?
$a = 7;
tambahSatu($a);
echo(“Nilai a = ” . $a);
?>
Nilai a = 8
4
BABX
Class dan Objects
Sekuensial Programming
Structured Programming
Untuk dapat memahami class dan object, kita akan memvisualisasikan aplikasi
address book.
Dalam sebuah address book, komponen utama yang terlibat adalah kontak
Komponen kontak disebut class.
Object adalah benda nyata yang ada dalam session pelatihan, diantaranya:
<?
class Contact{
?>
object dari class Contact dibuat dengan kode sebagai berikut :
4
10.2 Method dan properties
Lebih mendetail tentang class Contact. Semua contact, baik Ani, Budi, maupun
Charlie, mempunyai karakteristik yang sama. Mereka semua memiliki nama
lengkap, nomer telepon, dan alamat. Karakteristik ini dikenal dengan istilah
properties. Properties diterjemahkan ke dalam kode menjadi :
<?
class Contact{
var $namaLengkap;
var $telp;
var $alamat;
?>
Tiap object memiliki nilai yang berbeda-beda untuk masing-masing properties.
Hal ini juga sering dikatakan : object memiliki state yang berbeda satu dengan
lainnya. Contoh kode yang menggambarkan kondisi tersebut adalah :
$budi->telp = 456;
$budi->alamat = “Bandung”;
4
<?
class Contact{
var $namaLengkap;
var $telp;
var $alamat;
function panggil($contact){
?>
kode tersebut dieksekusi sebagai berikut :
$budi->panggil($ani);
dan menghasilkan output sebagai berikut :
4
BAB XI
File Handling
Pada bagian ini, kita akan mempelajari bagaimana script php berinteraksi
dengan file. Sebagai contoh, kita akan meneruskan aplikasi contact manager
dengan memungkinkan pengguna untuk mengupload file foto beserta
komentarnya. Setelah foto berhasil diupload, kita akan memberikan halaman
untuk mengakses foto dan komentar tersebut.
form tersebut harus dapat menghandle file upload. Listing kode upload.htm
adalah sebagai berikut :
<html>
<head>
<title>Pic Uploader</title>
</head>
<body>
4
<h1>Pic Uploader</h1>
<form enctype="multipart/form-data" method="POST"
action="upload.php">
</body>
</html>
Sekarang kita akan mengerjakan file upload.php yang berguna untuk menangani
file upload dari form tersebut.
Form tersebut, setelah diisi dan disubmit, akan diterima oleh server dan menghasilkan
beberapa variabel berikut :
4
$comment Berisi tulisan yang diisikan Ini foto saya waktu kecil
user di textarea komentar
$pic Berisi file gambar yang
diupload, disimpan sementara
di server
$pic_name Berisi nama file yang diupload Coffee Bean.bmp
$pic_size Berisi ukuran file yang
16.6 kB
diupload
Informasi di atas dapat kita tampilkan dalam script upload.php dengan kode
sebagai berikut :
$fileServer = "upload/$nama/$pic_name";
copy($pic, $fileServer);
Selain file gambar yang diupload, kita juga akan menuliskan komentar yang ada
di textarea ke dalam file, dengan nama yang sama dengan nama gambar,
diakhiri dengan extension txt untuk menandai bahwa file tersebut mempunyai
format text.
Buka/buat file
Untuk dapat mengakses dan mengubah isi file, kita membutuhkan sebuah file
descriptor. File descriptor adalah suatu variabel yang digunakan untuk mewakili
file tertentu.
File yang akan kita buat akan diberi nama sesuai dengan nama gambar.
Tambahkan kode berikut pada upload.php
$fileComment = "/upload/$nama/$pic_name-comment.txt";
5
$fp = fopen($fileComment, "w");
seperti kita lihat pada contoh di atas, kita menggunakan fungsi fopen.
Nama File : bertipe string, merupakan nama file yang akan dibuka. Harus
berada dalam folder yang sama dengan tempat script php yang
memanggilnya.
Jenis Akses : bertipe string, menentukan perlakuan yang diperbolehkan
terhadap file yang dibuka. Ada beberapa jenis akses:
Read : disimbolkan dengan huruf r. File yang dibuka hanya dapat dibaca
dan tidak boleh ditulisi. File yang dibuka dengan akses r akan
menimbulkan pesan error kalau ada usaha untuk menulis ke dalamnya.
Write : disimbolkan dengan huruf w. File yang dibuka hanya dapat ditulis
dan tidak bisa dibaca. Penulisan terhadap file akan menghapus isi yang
sebelumnya.
Read dan write : disimbolkan dengan r+. File yang dibuka dapat dibaca
dan juga ditulisi. Penulisan terhadap file akan ditambahkan pada bagian
awal file.
Write dan read : disimbolkan dengan w+. Apabila file sudah ada, isinya
akan dihapus.
Menambahkan (append) : disimbolkan dengan a. Membuka (membuat bila
belum ada) dan menulis di awal file.
Menambahkan (append) dan membaca: disimbolkan dengan a+.
Membuka (membuat bila belum ada) dan menulis di awal file.
Mode binary. Disimbolkan dengan b. Digunakan pada filesystem windows
yang membedakan file text dan binary.
Masukkan data
fwrite($fp, $comment);
Tutup file
5
Setelah itu, tutup file.
fclose($fp);
File yang dupload pada pembahasan di atas telah tersimpan secara permanen di
harddisk server di folder upload/indarzah/Coffee Bean.bmp. dengan demikian,
kita dapat menghapus file yang disimpan sementara oleh server. File tersebut
kita hapus dengan menggunakan perintah unlink() atau delete(). Tambahkan
baris berikut pada upload.php.
unlink($pic);
Pembaca yang teliti akan menyadari bahwa nama folder pada contoh di atas
disesuaikan dengan nama user yang mengupload foto. Karena kita sebagai
programmer tidak dapat meramalkan nama user yang akan mengupload foto,
kita tidak dapat menyediakan folder yang sesuai dengan kebutuhan tersebut.
Dengan demikian, kita harus membuat folder secara dynamic. Membuat
direktori atau folder baru bukan hal yang sulit, tambahkan baris berikut pada
upload.php :
$oldmask = umask(0);
mkdir("upload/$nama", 0777);
umask($oldmask);
direktori akan dibuat dengan nama folder sesuai dengan nama user
yang dimasukkan pada form dengan permission 777. Arti dari permission 777
dan umask tidak dibahas dalam tutorial ini.
Selanjutnya, kita akan menampilkan foto yang telah diupload oleh user.
Untuk itu, kita harus membuka folder yang berisi file, melihat daftar file yang
ada, dan menampilkan foto serta isi comment.
Untuk menampilkan foto, kita cukup memberikan link nya saja dalam tag <img>
</img>. Sedangkan untuk menampilkan isi file text, kita harus membuka dan
membaca file txt tersebut.
5
Untuk menampilkan isi direktori, kita terlebih dulu harus membuka direktori.
Tambahkan kode berikut pada upload.php :
$myDir = "upload/$nama";
$dir = opendir($myDir);
Selanjutnya, kita akan melakukan looping untuk membaca setiap entry yang
while($tmp = readdir($dir)){
echo($tmp."<br>");
}
Setelah selesai, tutup folder dengan kode berikut:
closedir($dir);
rmdir($namaDirektori);
direktori yang akan dihapus harus kosong.
Untuk menampilkan isi comment yang telah kita tulis ke dalam file, kita akan
menempuh langkah-langkah yang sama dengan menulis file, yaitu:
Ada sedikit modifikasi, kita akan memproses isi comment agar tidak
mengandung tag-tag html. Tambahkan kode berikut pada upload.php :
$f = fopen($fileComment, "r");
$isi = fread($f, filesize($fileComment));
fclose($f);
$output = nl2br(htmlspecialchars($isi));
echo(“Komentar anda : <br>”);
echo($output);
5
File lengkap upload.php adalah sebagai berikut :
5
BAB XII
Database Access
Menyimpan data dalam file biasa memiliki banyak keterbatasan. Semakin besar
ukuran file, pencarian data menjadi lebih sulit. File biasa juga tidak memiliki
kemampuan untuk mengolah data, misalnya menghitung total nilai, rata-rata,
dan lain sebagainya.
Karena itu, sekarang kita akan menggunakan media penyimpanan data yang
lebih mutakhir, yaitu database. Operasi data dalam database umumnya
mengikuti pola yang sama, yaitu melalui rangkaian langkah sebagai berikut :
Mengakhiri sambungan
Sebagai contoh, kita akan mengaktifkan fasilitas login pada aplikasi Contact
Manager. User akan diminta untuk memasukkan username dan password. Bila
data yang dimasukkan sama dengan yang ada dalam database, user akan
diteruskan ke halaman welcome. Kalau salah, akan muncul pesan error.
User yang belum terdaftar dapat melakukan registrasi di halaman yang akan
disediakan. Berikut screenshot halaman web yang dibutuhkan :
login.htm :
5
register.htm
SQL (Structured Query Language) adalah bahasa yang khusus digunakan untuk
mengoperasikan database. Untuk memudahkan pelajaran, SQL query akan
dikelompokkan menjadi tiga:
5
Query yang melibatkan lebih dari satu tabel
Yang termasuk ke dalam kelompok ini adalah query yang bertujuan untuk :
Membuat database
Menghapus database
Membuat tabel
Memodifikasi tabel
Menghapus tabel
Menambah user
Mengatur permission
Menghapus user
…,
);
contohnya:
5
CREATE TABLE userTable(
);
Menghapus tabel dilakukan dengan menggunakan query
Query satu tabel digunakan untuk mengelola data dalam satu tabel. Beberapa hal
yang dapat dilakukan pada satu tabel adalah :
Tujuan Query
Memasukkan data INSERT
Memodifikasi data UPDATE
Mengambil data SELECT
Menghapus data DELETE
Menghitung banyaknya data COUNT
Menghitung penjumlahan data SUM
Menghitung nilai minimal MIN
Menghitung nilai maksimal MAX
Menghitung nilai rata-rata AVG
INSERT INTO <nama tabel> (<nama kolom 1>, < nama kolom2>, ..)
VALUES (<isi kolom 1>, <isi kolom 2>, ..);
Contoh :
VALUES (1,'indarzah','inipaswod','Indarzah'
);
Untuk mengubah data dalam database, digunakan perintah UPDATE, dengan
5
aturan penulisan sebagai berikut :
Contoh :
UPDATE userTable
SET password=’test’
WHERE UserName=’indarzah’
Query banyak tabel digunakan untuk menghubungkan data di lebih dari satu
database. Pembahasan tentang join berada di luar materi PHP Programming
dan ada di pembahasan tentang relational database.
Sebelum mulai, kita terlebih dahulu akan membuat database. Kita membutuhkan tabel user
untuk menyimpan data sebagai berikut :
5
NamaLengka varchar(50
p )
);
tabel siap digunakan.Kita akan mulai dengan halaman daftar, karena kita belum
punya user. File register.php akan menangani pendaftaran user baru.
Tugasnyaadalah memasukkan data yang diisi dalam form ke dalam database.
$dbServer = "localhost";
$dbUser = "indarzah";
$dbPass = "test";
$dbName = "phpTutorial";
mysql_select_db($dbName);
6
sekarang database telah siap untuk digunakan. Kita dapat melangkah ke tahap
selanjutnya, yaitu memasukkan data.
);
perintah tersebut dieksekusi di dalam script PHP sebagai berikut :
$query = "
";
$hasil = mysql_query($query);
if($hasil){
}
Script kita harus mengambil data dari HTML Form (register.htm) dan
memasukkannya ke dalam database. Untuk itu, kita akan membuat file
register.php yang berisi kode sebagai berikut :
<?
$dbServer = "localhost";
$dbUser = "indarzah";
$dbPass = "test";
$dbName = "phpTutorial";
mysql_select_db($dbName);
$query = "
INSERT INTO userTable
(UserName, Password, NamaLengkap)
VALUES (
6
'$user',
'$pass',
'$namaLengkap'
);";
$hasil = mysql_query($query);
if($hasil){
?>
Setelah register.htm dieksekusi dengan sukses, kita telah memiliki satu user
dalam database. Dengan demikian, kita dapat menguji halaman login yang telah
kita buat. Untuk itu, kita perlu mengakses data dalam database dan
mencocokkannya dengan input yang diberikan user.
Memilih database
Membuat query
Menjalankan query
Mengambil hasilnya
$hasil = mysql_query($query);
Bila userName yang diinputkan user tidak ada dalam database, query akan
mengembalikan 0 (nol) baris hasil. Bila ada, query akan menghasilkan array
yang berisi data pada masing-masing kolom dalam database.
6
Untuk mengetahui jumlah hasil yang didapat dari query, digunakan kode
sebagai berikut:
$jumlahHasil = mysql_num_rows($hasil);
Apabila hasilnya tidak nol (berarti username telah terdaftar dalam sistem), kita
akan mengambil data password. Untuk itu, kita gunakan perintah:
$data = mysql_fetch_array($hasil);
data password ada dalam array, diakses dengan cara :
$passDb = $data[“Password”];
Dengan demikian, keseluruhan script login.php akan menjadi :
<?
$user = "indarzah";
$pass = "test";
$db = "ContentManager";
$server = "localhost";
// membuat koneksi
// memeriksa koneksi
if(!$koneksi){
exit;
// membuka database
mysql_select_db($db);
// membuat query
6
$query = "SELECT * FROM userTable WHERE
userName='".$login."'";
// mengeksekusi query
$hasil = mysql_query($query);
// mengakses hasil
$jumlahHasil = mysql_num_rows($hasil);
else{
$data = mysql_fetch_array($hasil);
$passwordAsli = $data["password"];
if($password == $passwordAsli){
else{
?>
6
BAB XIII
String Handling
Dan sebagainya
Untuk dapat menggunakan fungsi-fungsi string handling dengan baik, kita perlu
menguasai teknik pembuatan pola kalimat. Contoh pola kalimat misalnya,
alamat email yang valid (misalnya [email protected]) selalu memiliki pola
sebagai berikut:
satu atau lebih huruf/angka, diikuti tanda @ kemudian diikuti dengan satu atau
lebih huruf/angka, dipisahkan oleh tanda titik, lalu diakhiri dengan satu atau
lebih huruf/angka.
Pola kode
Harus di awal kata ^
Huruf A-Za-z
Angka 0-9
Huruf atau angka [A-Za-z0-9]
Semua jenis karakter .
+ atau
Berjumlah satu atau lebih
{1,}
Berjumlah nol atau lebih * atau {0,}
Berjumlah tiga sampai
{3,10}
sepuluh
Diikuti dengan @ @
Tanda titik \.
Harus berada di akhir
$
kalimat
Pola alamat email di atas dapat dinyatakan dengan satu baris kode sebagai
berikut.
6
^.+@.+\..+$
Atau kita dapat membatasi alamat email yang digunakan oleh user agar hanya
menerima domain com, net, atau edu dengan menggunakan pola berikut :
^.+@.+\.((com)|(edu)|(net))$
input yang dimasukkan user akan diperiksa oleh script CekMail.php yang berisi
kode sebagai berikut :
<?
// validasi alamat email
$polaEmail = "^.+@.+\..+$";
if(!eregi($polaEmail, $email)){
misal:[email protected]");}
else{
6
// validasi no telp
$polaTelp = "^\+[0-9]{2}-[0-9]+$";
if(!eregi($polaTelp, $telp)){
+62315054307");}else{
?>
Function yang digunakan untuk memeriksa email pada script di atas adalah
eregi. Menerima input berupa pola yang diinginkan dan string yang akan
diperiksa. Function ini akan menghasilkan nilai true bila polanya sesuai dan
false bila pola yang dicari tidak ada pada string input.
6
BAB XIV
Session
14.1 No Session
Pada waktu kita browsing menjelajahi website, misalnya e-mail, kita akan
diminta memasukkan username dan password. Prosedur ini hanya dilakukan
sekali pada awal proses. Selanjutnya sistem akan ‘mengingat’ identitas kita, dan
menampilkan informasi yang sesuai. Tanpa adanya session, sistem akan salah
dan menampilkan data rahasia ke orang yang salah.
Untuk mengetahui kegunaan session, kita akan membuat aplikasi tanpa session.
Kita membutuhkan satu halaman web dan tiga script php :
login.htm,
loginNoSession.php,
welcomeNoSession.php dan
displayNoSession.php
login.htm
6
loginNoSession.php
header("Location: welcomeNoSession.php?user=indarzah");}
header("Location: welcomeNoSession.php?user=oky");}
?>
welcomeNoSession.php
<?
6
?>
displayNoSession.php
<?
$dbUser = "indarzah";
$dbPass = "test";
$db = "latihan";
$server = "localhost";
// membuat koneksi
// memeriksa koneksi
if(!$koneksi){
exit;
// membuka database
mysql_select_db($db);
$hasil = mysql_query($query);
// menampilkan hasil
echo("<table border=1>");
echo("<tr>");
echo("<td>NamaTeman</td>");
echo("<td>Keterangan</td>");
echo("</tr>");
7
while($row = mysql_fetch_array($hasil)){
echo("<tr>");
echo("<td>".$row["namaTeman"]."</td>");
echo("<td>".$row["keterangan"]."</td>");
echo("</tr>");
echo("</table>");
?>
kode ini membutuhkan data contact yang diambil dari tabel UserData dengan
definisi sebagai berikut:
user VARCHAR(50),
namaTeman VARCHAR(50),
keterangan VARCHAR(50)
);
dan sampel data sebagai berikut:
'indarzah',
'Imanudin',
'Teman ceting'
);
'oky',
'Iswahyudi',
);
7
INSERT INTO userData VALUES (
'oky',
'Anton Raharja',
);
'indarzah',
'Widya Andhini',
);
Jalannya aplikasi :
7
klik link untuk mendisplay output, tampilan akan muncul sebagai berikut:
sekarang, kita akan “memalsu” link yang ada di address bar untuk menampilkan
data user indarzah.
http://localhost/latihan/displayNoSession.php?user=indarzah
Kemudian tekan enter.
Cara mencegah hal ini terjadi adalah dengan meminta user untuk memasukkan
login dan password setiap kali ia berpindah halaman. Tetapi tentu saja cara ini
menjengkelkan bagi user. Selain itu, mempassing variabel login dan password di
setiap halaman sangat tidak aman dan rentan penyadapan.
7
Session bekerja seperti tempat penitipan barang di supermarket. Kita datang,
menitipkan barang bawaan, dan petugas akan memberikan tanda pengenal.
Pada saat kita akan mengambil barang, kita memberikan tanda pada petugas,
dan petugas akan dapat mengambil barang yang dititipkan tanpa tertukar
dengan barang orang lain.
Ada tiga alternatif yang dapat digunakan untuk menyimpan data session :
o Cookie
o Hidden Form
o URL Embedding
Cookie adalah informasi yang disimpan pada browser user. Script menjalankan
function setcookie yang akan menulis data di harddisk user. Cookie ditulis pada
browser user dengan menggunakan perintah :
setcookie(“sessionId”, “1234”);
Setelah itu, variabel $sessionId akan tersedia setiap kali browser user
mengakses sistem.
Cookie akan hilang dari browser user setelah melewati masa kadaluarsa yang
ditentukan atau dihapus melalui perintah:
setcookie(“sessionId”);
Pendekatan ini banyak mengundang kontroversi. Karena cookie dapat
menghilangkan privacy user dan berpotensi mengandung virus. Oleh karena itu,
user dapat menonaktifkan cookie melalui setting di browser.
Dengan demikian, pendekatan ini kurang handal untuk diterapkan pada aplikasi
kita.
Untuk melihat dengan lebih jelas implementasi cookie, kita akan memodifikasi
aplikasi di atas sebagai berikut :
7
login.htm
loginSessionCookie.php
<?
setcookie("user", $login);
header("Location: welcomeSessionCookie.php");}
setcookie("user", $login);
header("Location: welcomeSessionCookie.php");}
?>
welcomeSessionCookie.php
<?
if(!$user){
echo("Illegal Access");exit;
}
echo("Welcome $user <br>");
echo("<a href=\"displaySessionCookie.php\">");
echo("klik di sini untuk mengakses daftar kenalan
anda</a>");
?>
if(!$user){
echo("Illegal Access");exit;
Untuk mengujinya, buka browser baru dan masukkan link berikut di address
bar:
7
http://localhost/latihan/displaySessionCookie.php
Kemudian tekan enter. Anda akan mendapatkan:
7
klik disable cookie
coba lagi mengakses halaman contact. Anda akan mendapat Illegal Access.
Cara kedua untuk menyimpan data session adalah dengan menyimpan data
tersebut pada hidden input yang ada dalam form. Misalnya dengan
menggunakan kode :
7
cara ini juga tidak dapat dilakukan di segala kondisi, karena ada saat-saat di
mana kita tidak dapat menggunakan form.
Satu-satunya kerugian cara ini adalah, link URL menjadi tidak bisa di
’bookmark’. Selain itu, link menjadi tidak indah dipandang mata. Tetapi secara
teknis, metode inilah yang paling efektif dan reliable.
Session API PHP menggabungkan teknik cookie dan teknik URL Embedding.
Apabila user mengaktifkan cookie, PHP akan menyimpan data session pada
cookie. Tetapi apabila cookie di-disable user, PHP akan menyimpan data session
pada URL. Mekanisme ini terjadi secara otomatis apabila PHP dicompile dengan
option --enable-trans-sid.
Anda dapat memodifikasi setting Internet Explorer untuk melihat bahwa metode
ini dapat dijalankan walaupun cookie di-disable. Kita juga tidak dapat mengetik
langsung URL
http://localhost/latihan/displaySessionApi.php
untuk membuka halaman pribadi.
loginSessionApi.php:
<?
session_start();
$user = $login;
session_register("user");
header("Location: welcomeSessionApi.php");}
7
session_start();
$user = $login;
session_register("user");
header("Location: welcomeSessionApi.php");}
else{
?>
welcomeSessionApi.php
<?
session_start();
if(!session_is_registered("user")){
echo("Illegal Access");
echo("<a href=\"displaySessionApi.php\">");
?>
displaySessionApi.php
<?
session_start();
if(!session_is_registered("user")){
echo("Illegal Access");
exit;
$dbUser = "indarzah";
$dbPass = "test";
$db = "latihan";
$server = "localhost";
// membuat koneksi
7
// memeriksa koneksi
if(!$koneksi){
exit;
// membuka database
mysql_select_db($db);
$hasil = mysql_query($query);
echo($sessionId);
// menampilkan hasil
echo("<table border=1>");
echo("<tr>");
echo("<td>NamaTeman</td>");
echo("<td>Keterangan</td>");
echo("</tr>");
while($row = mysql_fetch_array($hasil)){
echo("<tr>");
echo("<td>".$row["namaTeman"]."</td>");
echo("<td>".$row["keterangan"]."</td>");
echo("</tr>");
echo("</table>");
?>