bab ii tinjauan pustaka 2.1. e-commerce - unud
TRANSCRIPT
5
BAB II
TINJAUAN PUSTAKA
Bab ini menjelaskan tentang review singkat dari kepustakaan yang
digunakan untuk menunjang perancangan dan pembuatan sistem yang dibangun.
2.1. E-commerce
E-commerce adalah tipe industri yang membeli atau menjual produk atau
layanan yang dilakukan melalui sistem elektronik seperti Internet atau jaringan
komputer lainnya. E-commerce juga dapat didefinisikan sebagai suatu cara
berbelanja atau berdagang secara online atau direct selling yang memanfaatkan
fasilitas Internet dimana terdapat website yang dapat menyediakan layanan “get
and deliver“.
E-commerce akan merubah semua kegiatan marketing dan juga sekaligus
memangkas biaya-biaya operasional untuk kegiatan trading (perdagangan).
2.1.1. Pengertian E-Commerce menurut ahli
Menurut Kalakota dan Whinston (1996), e-Commerce didefinisikan dari
beberapa perspektif yaitu:
1. Definisi menurut perspektif komunikasi menyatakan bahwa e-commerce
adalah pengiriman informasi, produk dan jasa atau pembayaran melalui
jaringan telepon, atau jalur komunikasi lainnya.
2. Definisi menurut perspektif proses bisnis menyatakan bahwa e-commerce
adalah aplikasi teknologi menuju otomatisasi transaksi bisnis.
3. Definisi menurut perspektif pelayanan menyatakan bahwa e-commerce adalah
alat yang digunakan untuk mengurangi biaya dalam pemesanan dan
pengiriman barang.
6
4. Definisi menurut perspektif online menyatakan bahwa e-commerce adalah
sistem yang menyediakan kemampuan untuk menjual dan membeli produk
serta informasi melalui Internet dan jaringan jasa online lainnya.
Definisi-definisi diatas telah menyatakan bahwa e-commerce tidak hanya
berfungsi sebagai sistem yang berfungsi untuk kegiatan perdagangan jarak jauh,
tetapi juga sebagai sarana untuk meningkatkan efisiensi modal untuk kegiatan
perdagangan secara keseluruhan.
2.1.2. Kategori e-commerce
Menurut Ana Udayana (2013), E-commerce dapat dibagi menjadi empat
kategori utama, yaitu:
1. B2B (Business-to-Business)
B2B (Business-to-Business) merupakan kategori e-commerce yang
melibatkan transaksi antara perusahaan satu dengan perusahaan lainnya, seperti
produsen menjual kepada distributor atau grosir menjual ke pengecer. Harga
produk dipengaruhi oleh jumlah pesanan dan dinegosiasikan terlebih dahulu.
2. B2C (Business-to-Consumer)
B2C (Business-to-Consumer) merupakan sistem e-commerce yang
memungkinkan perusahaan melakukan penjualan kepada pelanggan secara
langsung, biasanya melalui katalog atau memanfaatkan perangkat lunak shopping
cart.
3. C2B (Consumer-to-Business)
C2B (Consumer-to-Business) merupakan sistem e-commerce yang
memungkinkan perseorangan untuk menjual produk atau layanan ke perusahaan
atau organisasi yang mencari penjual, berinteraksi dan menyepakati suatu
transaksi.
4. C2C (Consumer-to-Consumer)
7
C2C (Consumer-to-Consumer) merupakan sistem e-commerce yang
memungkinkan pelanggan menjual barang atau jasa langsung ke pelanggan
lainnya, baik dengan cara bertemu langsung maupun melalui jasa situs periklanan
barang atau jasa di Internet. Ada banyak situs yang menawarkan iklan baris gratis,
lelang, dan forum yang memungkinkan seseorang dapat membeli dan menjual
melalui sistem pembayaran online seperti PayPal, situs yang memungkinkan
seseorang dapat mengirim dan menerima uang secara online dengan mudah.
Layanan lelang eBay adalah contoh yang bagus untuk transaksi C2C (Consumer-
to-Consumer) yang sudah ada sejak tahun 1995.
Dari beberapa definisi singkat diatas, dapat disimpulkan bahwa e-
commerce adalah sebuah proses yang memudahkan proses transaksi jual beli
secara jarak jauh tanpa harus mempertemukan penjual dengan pembeli.
2.1.3. Proses dalam e-Commerce
Menurut Dewi Irmawati (2011), Proses yang ada dalam e-commerce
adalah sebagai berikut:
1. Presentasi elektronis (Pembuatan web site) untuk produk dan layanan.
2. Pemesanan secara langsung dan tersedianya tagihan.
3. Otomasi account pelanggan secara aman (baik nomor rekening maupun nomor
Kartu Kredit).
4. Pembayaran yang dilakukan secara langsung (online) dan penanganan
transaksi.
Dari proses yang umum terjadi pada e-commerce seperti yang telah
dijelaskan di atas, maka dapat disimpulkan bahwa e-commerce memerlukan
media yang mampu mengakomodasikan kebutuhan masing-masing pihak,
misalnya dari sisi pelanggan memerlukan ketersediaan barang dari penjual dan
halaman presentasi elektronis untuk memilih produk, sedangkan dari sisi penjual
memerlukan media transfer pembayaran agar dapat menerima uang pembayaran
dari pelanggan.
8
2.1.4. Pertimbangan Bisnis dalam e-commerce
Hal-hal utama yang dibutuhkan sebelum melangkah ke dalam bisnis
dengan menggunakan e-commerce adalah sebagai berikut:
1. Penyiapan dan penyimpanan informasi
Penyiapan dan penyimpanan informasi adalah proses digitalisasi semua
informasi yang dimiliki. Pembangunan pasar elektronik global memerlukan
penanganan masalah untuk mendigitalkan informasi yang telah tersedia seperti
catalog, buku, film, arsip dalam berbagai fasilitas kualitas. Data yang telah
berbentuk digital harus dalam format yang sesuai. Aspek ekonomi yang harus
dipertimbangkan adalah biaya digitalisasi. Langkah berikutnya adalah dibutuhkan
mekanisme untuk menyimpan informasi tersebut. Sistem penyimpanan e-
commerce harus mampu menyimpan data dalam jumlah besar dengan berbagai
format dan harus lebih efisien dan efektif untuk mengakses data tersebut.
2. Jasa Pencarian Informasi.
Kemampuan pencarian informasi secara online sangat penting untuk
membantu para user mengakses data penting seperti informasi mengenai
produk, jasa, pelanggan, pemasok dan agen pemerintah. Jasa pencarian
informasi yang dimaksud adalah electronic catalogs (e-catalogs) dan information
filters.
a. Electronic Catalogs
Electronic Catalogs mengorganisasikan informasi berbasis content yang
memungkinkan pemakai untuk melakukan browsing serta memilih dokumen yang
diinginkan. Metode tersebut, walaupun mudah diimplementasikan, namun dibuat
berdasarkan skema organisasi yang kemungkinan tidak sesuai dengan kebutuhan
pengguna.
b. Information Filters
Information Filters disediakan untuk pengguna agar dapat mengambil
dokumen yang diinginkan. Filter ini bisa berada di sisi workstation user atau
bisa juga di sisi penyedia jasa. Pengambilan informasi dari sisi penyedia jasa
akan meningkatkan jalur kepadatan jaringan, tapi akan lebih efisien untuk
9
mengambil sebagian data yang diperlukan dari pada harus mengambil seluruh
data lalu dipilih lagi. Software agent misalnya robots, wanderers, dan spiders
bisa mentransfer dan mengalokasi informasi yang relevan.
3. Electronic Payments.
E-commerce memerlukan metode untuk pembayaran biaya pengiriman
data, biaya produksi dan jasa. Electronic Payments terdiri atas mata uang
digital (smart cards dan electronic money), pembayaran melalui kartu kredit,
serta electronic checks.
a. Smart Cards.
Smart Cards telah dibangun dan digunakan oleh berbagai tipe bisnis
untuk menyediakan informasi tertentu seperti shopping preferences dan data
lainnya. Ada dua tipe smart cards:
1) Relationship-based smart cards yang memungkinkan transaksi keuangan
dilakukan tapi masih memerlukan penyesuaian rekening di akhir siklus
penagihan
2) Electronic purses and debit cards yang menyimpan sejumlah uang yang
bisa digunakan untuk berbagai kebutuhan pelayanan jasa. Setelah setiap
transaksi dilakukan, nilai uangnya akan dikurangi dari electronic purse,
sehingga tidak perlu lagi penyesuaian rekening.
b. Electronic Money
Electronic Money (sering disebut digital cash atau electronic token)
merupakan metode pembayaran secara elektronik yang mengemulasikan
pertukaran barang dan jasa dengan mata uang yang sebanding. E-Money haruslah
berupa bank agar terhindar dari resiko kekurangan dana. Metode ini tidak dapat
ditukarkan dengan pembayaran bentuk lainnya, harus aman dari pencurian,
dan harus bisa diakses dari lokasi yang jauh.
c. Electroinic Checks (E-Checks)
Electroinic Checks (E-Checks) merupakan mekanisme lainnya untuk
pembayaran melalui jaringan komputer. Sistem ini dimaksudkan untuk
mengemulasikan sistem pemrosesan pembayaran melalui kertas cek. Metode ini
10
membutuhkan server pihak ketiga yang bertindak sebagai penyedia jasa penagihan
bagi para user. E-checks memerlukan digital signature dan jasa authentification
untuk memproses secara digital informasi antara pembayar, yang dibayar dan
bank.
4. Security Services
Sistem untuk e-commerce harus diamankan dari berbagai ancaman baik
dari dalam maupun dari luar, pencurian informasi berharga dan usaha sabotase.
Sistem ini harus diamankan dengan sistem security yang dirancang khusus
seperti authentication of data and entity yang bisa mengakses sistem,
pengendalian akses oleh yang tidak berhak, integritas data dan
nonrepudiation.
5. Connectivity
Connectivity adalah kemampuan untuk terhubung dengan berbagai macam
perangkat elektronik saat ini. Pada lingkungan e-commerce saat ini, ada
peningkatan jumlah client. User bisa menggunakan televisi, radio, komputer PC,
laptop dan telepon selular untuk mengakses informasi. Sistem e-commerce harus
mampu menyesuaikan diri dengan berbagai aplikasi yang berbeda-beda.
6. Kebijakan Dan Ketentuan Hukum
Ketentuan hukum dalam dunia e-commerce berhubungan dengan
hukum di dunia maya. Ketentuan hukum pada e-commerce yang beraneka
ragam seperti intellectual property, perpajakan, penegakkan hukum, dan lain
sebagainya sampai saat ini masih belum jelas pada dunia industri e-commerce saat
ini.
Semua pertimbangan yang telah disebutkan diatas sangat mempengaruhi
bagaimana struktur dari sistem e-commerce itu dibuat, fitur-fitur yang akan
tersedia di dalam sistem e-commerce, tingkat kompatibilitas sistem web dengan
11
semua perangkat elektronik yang tersedia, dan Terms of Service (TOS) dari sistem
e-commerce tersebut
2.2. Sistem Keamanan E-commerce
Sistem keamanan e-commerce adalah sebuah sistem yang bertanggung
jawab dengan seluruh aspek keamanan dalam sistem e-commerce. Sistem
keamanan e-commerce harus mampu menjaga keamanan dan kenyaman pengguna
dalam melakukan transaksi pada sistem e-commerce tersebut di segala lini
transaksi namun tetap memberikan kemudahan bertransaksi menggunakan sistem
e-commerce tersebut, sehingga pengguna dapat menggunakan sistem e-commerce
tersebut tanpa harus khawatir bahkan mengalami pencurian data atau pengubahan
data tanpa sepengetahuan pengguna.
2.2.1. Aspek-aspek keamanan
Kriptografi tidak hanya memberikan kerahasiaan dalam telekomunikasi,
namun juga melibatkan sejumlah aspek, yaitu:
1. Authentication, yaitu penerima pesan dapat memastikan keaslian pengirimnya.
Penyerang tidak dapat berpura-pura sebagai orang lain.
2. Integrity, yaitu penerima harus dapat memeriksa apakah pesan telah
dimodifikasi di tengah jalan atau tidak. Seorang penyusup seharusnya tidak
dapat melakukan perubahan ke dalam pesan selama data berada di perjalanan.
3. Nonrepudiation, yaitu pengirim tidak dapat mengelak bahwa dialah pengirim
pesan yang sesungguhnya. Tanpa kriptografi, seseorang dapat mengelak
bahwa dialah yang mengirim email yang sesungguhnya.
4. Authority, yaitu informasi yang berada pada sistem jaringan hanya dapat
dimodifikasi oleh pihak yang berwenang.
Aspek-aspek keamanan ini harus diterapkan secara keseluruhan untuk
menjaga keamanan dan kerahasiaan data transaksi antara pihak penjual dan pihak
pedagang, serta untuk meminimalisasi kerugian yang bersifat waktu, finansial dan
kerahasiaan data akibat keterlibatan pihak ketiga yang tidak diinginkan.
12
2.2.2. Macam-macam ancaman
Macam-macam ancaman yang terjadi dalam sistem e-commerce adalah:
1. System Penetration, yaitu orang-orang yang tidak berhak telah mendapatkan
akses ke sistem komputer dan diperbolehkan melakukan segalanya.
2. Authorization Violation, yaitu ancaman berupa pelanggaran atau
penyalahgunaan wewenang legal yang dimiliki oleh seseorang yang berhak.
3. Planting, yaitu ancaman yang terencana misalnya Trojan Horse yang masuk
secara diam-diam yang akan melakukan penyerangan pada waktu yang telah
ditentukan.
4. Communications Monitoring, yaitu penyerangan dengan cara melakukan
monitoring semua informasi rahasia.
5. Communications Tampering, yaitu pengubahan informasi transaksi di tengah
jalan oleh penyerang di dalam sebuah jaringan komunikasi dan dapat
mengganti sistem server dengan sistem server yang palsu.
6. Denial of Service (DoS), yaitu penolakan layanan terhadap client yang berhak.
7. Repudiation, yaitu penolakan terhadap sebuah aktivitas transaksi atau sebuah
komunikasi yang terjadi dikarenakan sesuatu yang bersifat sengaja,
kecelakaan ataupun kesalahan teknis lainnya.
Ancaman-ancaman tersebut sangat sering terjadi di dalam sistem e-
commerce karena letak server dengan letak client yang berjauhan dan harus
dihubungkan dengan fasilitas Internet. Letak server dan client yang berjauhan dan
harus dihubungkan dengan fasilitas Internet menyebabkan para penyerang dapat
melakukan berbagai macam serangan terhadap sistem e-commerce dengan cara
melakukan penyerangan terhadap lalu lintas Internet yang digunakan oleh server
dan client.
2.2.3. Solusi keamanan di Internet
Solusi keamanan di Internet yang telah umum digunakan adalah:
1. Enkripsi
Enkripsi adalah proses untuk menyandikan data di dalam lalu lintas
Internet sehingga data tidak bisa dibaca oleh siapapun kecuali orang tersebut
13
mengetahui kata sandi untuk melakukan dekripsi (menyandikan ulang) data
tersebut. Contoh teknologi enkripsi adalah enkripsi simetrik (DES, Triple DES,
AES) dan enkripsi asimetrik (RSA, PGP).
2. Otentikasi
Otentikasi adalah proses yang berfungsi untuk memastikan bahwa data
yang dikirimkan adalah asli dari pengirim dan benar-benar diterima oleh penerima
yang bersangkutan. Contoh teknologi otentikasi adalah tanda tangan digital
(digital signature) dan CAPTCHA (Completely Automated Public Turing test to
tell Computers and Humans Apart).
3. Firewall
Firewall adalah sistem yang berfungsi untuk menyaring dan melindungi
lalu lintas data di dalam jaringan atau server atau client, baik inbound traffic
maupun outbound traffic. Contoh teknologi firewall adalah VPN (Virtual Private
Networking).
Solusi keamanan untuk Internet ini telah umum digunakan oleh para
penyedia layanan berbasis sistem web.
2.2.4. Teknik Untuk Mengamankan Transaksi Elektronik
Teknik untuk mengamankan transaksi elektronik yang telah umum
dilakukan dan telah menjadi standar keamanan di Internet adalah:
1. S-HTTP
S-HTTP berfungsi untuk melindungi proses transaksi data pada web. S-
HTTP secara spesifik dirancang untuk mendukung protokol HTTP (Hypertext
Transfer Protokol) dalam hal otorisasi dan keamanan dokumen. S-HTTP
diaplikasikan pada browser, web server, dan aplikasi Internet.
14
2. Secure Socket Layer (SSL)
Menurut T. Dierks dan E Rescorla. (2008), Secure Socket Layer (SSL)
berfungsi untuk melindungi paket data pada lapisan jaringan (Network Layer).
SSL melindungi saluran komunikasi di antara 2 protokol bagian bawah dalam
tumpukan protokol menurut standar TCP/IP. SSL dapat juga digunakan untuk
transaksi-transaksi selain yang berjalan di web. SSL diaplikasikan pada browser,
web server, dan aplikasi Internet.
3. Secure MIME (S/MIME)
Secure MIME (S/MIME) berfungsi untuk melindungi lampiran email yang
melintasi berbagai platform yang berbeda. S/MIME merupakan standar baru untuk
keamanan e-mail yang menggunakan algoritma-algoritma kriptografi yang telah
memiliki hak `paten dan dilisensi oleh RSA Data Security Inc. S/MIME
bergantung pada berbagai jenis otoritas sertifikat, apakah bersifat global atau
perusahaan, untuk memastikan otentikasi. S/MIME diaplikasikan pada email
dengan enkripsi RCA dan tanda tangan digital.
4. Secure Wide-Area Network (S/WAN)
Secure Wide-Area Network (S/WAN) berfungsi untuk meng-enkripsi lalu
lintas antara firewall dan router. S/WAN diaplikasikan pada VPN-Virtual Private
Network.
5. Secure Electronic Transaction (SET)
Secure Electronic Transaction (SET) berfungsi untuk mengamankan
proses transaksi kartu kredit sehingga dapat menciptakan transaksi kartu kredit
yang aman. SET diaplikasikan pada SmartCard, server transaksi, dan e-commerce.
6. Pretty Good Privacy (PGP)
Pretty Good Privacy (PGP) merupakan suatu aplikasi populer yang
dikembangkan untuk pengiriman pesan dan berkas (file). PGP merupakan aplikasi
keamanan yang paling banyak digunakan untuk e-mail, serta menggunakan
15
berbagai standar enkripsi. Aplikasi-aplikasi enkripsi/deskripsi PGP tersedia bagi
hampir semua sistem operasi dan pesan dapat dienkripsi.
7. Firewall
Firewall berfungsi untuk melindungi serangan pada protokol individual
atau aplikasi, melindungi sistem komputer dari Spoofing (program-program
merusak yang menyamar sebagai aplikasi yang bermanfaat), dan menyediakan
titik tunggal kendali keamanan bagi jaringan (Hal ini dikarenakan Firewall
dijadikan titik pusat perhatian Hacker untuk membobol jaringan). Firewall tidak
memeriksa adanya virus pada berkas yang masuk, sehingga tidak dapat menjamin
integritas data. Firewall tidak melakukan otentikasi sumber data. Beberapa
karakteristik firewall adalah:
a. Penyaringan paket
b. Penerjemah alamat jaringan (Network Address Translation)
c. Proxy tingkat aplikasi (application-level proxies)
d. pemeriksaan keadaan (stateful inspection)
e. VPN (Virtual Private Network)
f. Real-time monitoring
Menurut kategorinya, firewall dibedakan menjadi dua kategori, yaitu:
a. Statis, yaitu pengaturan firewall yang dapat digunakan denagan salah satu dari
dua opsi sebagai berikut:
1) Mengizinkan semua lalu lintas data yang masuk kecuali secara eksplisit
dihalangi oleh administrator dari firewall
2) Menghalangi semua lalu lintas data yang masuk kecuali secara eksplisit
diizinkan oleh administrator dari firewall
b. Dinamis, yaitu pengaturan firewall yang men-setting layanan yang bisa keluar
atau masuk telah ditetapkan untuk periode waktu tertentu, namun
membutuhkan sumber daya manusia yang lebih banyak
8. Certificate Authority (CA)
16
Certificate Authority adalah sebuah badan usaha yang mengeluarkan
digital certificate. Digital certificate ini mengesahkan kepemilikan dari public key
dengan nama yang terkandung pada certificate. Certificate Authority
memungkinkan pemilik certificate untuk menggunakan digital signature yang
dibuat dari private key yang sesuai dengan public key yang telah disertifikasi.
Certificate Authority adalah pihak ketiga yang terpercaya oleh pihak pemilik
sertifikat dan pihak yang memanfaatkan sertifikat. Para penyedia sertifikat CA
secara komersial yang mengeluarkan sebagian besar certificate yang dipercaya
oleh client untuk server email dan server HTTPS publik biasanya menggunakan
teknik yang disebut "validasi domain" untuk mengotentikasi penerima certificate.
Validasi domain melibatkan pengiriman email yang berisi token otentikasi atau
link, ke alamat email yang diketahui secara administratif bertanggung jawab untuk
domain. Alamat ini bisa menjadi alamat email kontak teknis yang tercantum
dalam entri domain WHOIS, atau email administrasi seperti postmaster@ atau
root@ pada domain. Teori di balik validasi domain adalah bahwa hanya pemilik
domain yang sah akan dapat membaca email yang dikirim ke alamat administrasi
tersebut.
CA mengeluarkan digital certificate yang berisi public key dan identitas
pemilik. Proses pencocokan private key tidak tersedia untuk umum, dan
dirahasiakan oleh pengguna akhir yang telah menghasilkan key pair (pasangan
kunci). Certificate merupakan konfirmasi atau validasi oleh CA bahwa public key
yang terkandung dalam sertifikat milik orang, organisasi, server, atau badan lain
yang dicatat dalam sertifikat. Kewajiban CA dalam skema tersebut adalah untuk
memverifikasi identitas pemohon, sehingga pengguna dan pihak yang
menggunakannya dapat mempercayai informasi dalam certificate dari CA. CA
menggunakan berbagai standar dan tes untuk melakukannya. Certificate Authority
bertanggung jawab untuk menyatakan bahwa seorang pengguna tersebut adalah
seorang pengguna yang berhak atau tidak.
17
9. One-Time-Password
One-Time-Password (OTP) adalah password yang hanya berlaku untuk
satu sesi login atau transaksi. OTP memperbaiki kelemahan dari password
tradisional (statis). OTP kebal terhadap Replay Attack, sehingga penyusup
potensial yang berhasil merekam OTP yang sudah digunakan untuk login ke
dalam layanan atau untuk melakukan transaksi tidak dapat menyalahgunakannya,
karena tidak berlaku lagi. Sisi negatif dari OTP adalah sulit untuk dihafal oleh
manusia.
Berbagai cara untuk meng-generate One-Time-Password adalah sebagai
berikut:
a. Berdasarkan time-synchronization antara server otentikasi dan klien yang
diberikan password (OTP hanya berlaku untuk waktu yang singkat)
b. Menggunakan algoritma matematika untuk membuat password baru
berdasarkan password sebelumnya (OTP secara efektif berantai dan harus
digunakan dalam urutan yang telah ditetapkan).
c. Menggunakan algoritma matematika dimana password baru ini didasarkan
pada tantangan (misalnya, nomor acak yang dipilih oleh server otentikasi atau
rincian transaksi).
Setelah di-generate, OTP diberikan kepada end-user dengan beberapa cara
sebagai berikut:
a. SMS
SMS adalah teknologi umum yang digunakan untuk pengiriman OTP ke
pelanggan. Pengiriman OTP melalui SMS dienkripsi menggunakan standar A5/x,
algoritma standar yang berhasil didekripsi oleh hacker dalam hitungan menit atau
detik.
b. Ponsel
Ponsel mendukung sejumlah token dalam satu instalasi aplikasi,
memungkinkan pengguna untuk mengotentikasi ke beberapa sumber daya dari
satu perangkat. Solusi ini juga menyediakan aplikasi model khusus untuk ponsel
pengguna. Kelemahan dari solusi ini adalah ponsel yang digunakan sebagai token
bisa hilang, rusak, atau bahkan dicuri.
18
c. Propietary Token
EMV (Europay, MasterCard and Visa) mulai menggunakan algoritma
challenge-response (disebut "Program Otentikasi Chip") untuk kartu kredit di
Eropa. RSA Security's SecurID adalah salah satu contoh dari jenis token time
synchronization dalam kontrol akses untuk jaringan komputer. Kelemahan pada
token ini adalah token dapat hilang, rusak, atau dicuri, seperti halnya semua token
yang lainnya. Kelemahan lainnya adalah kehabisan baterai, terutama untuk token
tanpa fasilitas pengisian atau baterai yang tidak dapat diganti.
d. Metode berbasis web
Provider Authentication-as-a-service menawarkan berbagai metode
berbasis web untuk memberikan one-time-password tanpa memerlukan token.
Salah satu metode tersebut bergantung pada kemampuan pengguna untuk
mengenali kategori yang telah ditentukan dari kotak gambar secara acak. Proses
pendaftaran pengguna dalam situs web yang memberikan one-time-password
adalah pengguna memilih beberapa kategori rahasia dari suatu hal, seperti anjing,
mobil, kapal dan bunga. Setiap kali pengguna log-in situs web, pengguna
disajikan dengan grid yang dibangkitkan secara acak dari karakter
picalphanumeric yang muncul di layar. Pengguna mencari gambar yang sesuai
dengan kategori yang ditentukan dan memasuki karakter alfanumerik yang terkait
untuk membentuk one-time-password.
e. Kertas
Bank mengirimkan pengguna sebuah daftar bernomor pada OTP yang
dicetak di atas kertas dalam proses online banking di beberapa negara. Setiap
transaksi online, pengguna diminta untuk memasukkan OTP tertentu dari daftar di
kertas tersebut. OTP tersebut biasanya disebut TAN (Transaction Authentication
Numbers) di beberapa negara seperti Jerman, Austria, dan Brasil. Saat ini
beberapa bank telah mengirimkan TAN tersebut ke ponsel pengguna melalui SMS
sehingga TAN model ini disebut mTAN (Mobile TAN).
f. SET
Secure Electronic Transaction (SET) adalah standar protokol komunikasi
untuk mengamankan kartu kredit melalui jaringan transaksi tidak aman,
19
khususnya melalui Internet. SET dikembangkan oleh SETco, dipimpin oleh VISA
dan MasterCard (dengan keterlibatan perusahaan lain seperti GTE, IBM,
Microsoft, Netscape, RSA, Safelayer, VeriSign, dan VeriFone) mulai tahun 1996.
SET berdasarkan pada sertifikat X.509 dengan beberapa ekstensi. Versi pertama
selesai Mei 1997 dan uji coba diumumkan pada Juli 1998. SET sendiri bukan
merupakan sistem pembayaran, tetapi berupa satu set protokol keamanan dan
format yang memungkinkan pengguna untuk menggunakan infrastruktur
pembayaran kartu kredit yang ada pada jaringan terbuka dalam mode aman.
Protokol ini gagal untuk mendapatkan daya tarik di pasar.
2.2.5. Komparasi Protokol E-Commerce
Tabel berikut ini adalah komparasi tingkat keamanan dari beberapa
protokol keamanan yang telah umum digunakan.
Tabel 2. 1. Komparasi Protokol E-Commerce
Protokol E-Commerce
Kerahasiaan Non-Repudiation
Integritas Serangan dari Replay Attack
Serangan dari Man-in-the-middle Attack
SSL Yes No Yes No No PGP Yes No Yes No No SET Yes No Yes No No
Sumber: http://cscjournals.org/csc/manuscript/Journals/IJCSS/volume5/Issue1/IJCSS-429.pdf
Tabel diatas memperlihatkan komparasi fitur keamanan dari protokol SSL,
PGP, dan SET dalam segi kerahasiaan, Non-Repudiation, Integritas, Serangan dari
Replay Attack, dan Serangan dari Man-in-the-middle Attack. Tabel di atas
menjelaskan bahwa ketiga protokol di atas memiliki karakteristik yang sama,
yaitu sama-sama bisa menjaga kerahasiaan dan integritas dari semua data yang
terkirim melalui protokol tersebut, namun ketiga protokol diatas sama-sama tidak
bisa memenuhi aspek non-repudiation, melindungi pengguna dari serangan replay
attack, dan serangan dari man-in-the-middle attack. Tingkat keamanan dari ketiga
protokol diatas masih perlu ditingkatkan kembali karena aplikasi atau sistem web
20
yang berjalan melalui Internet juga membutuhkan fitur keamanan non-
repudiation, serangan dari replay attack, dan serangan dari man-in-the-middle
attack.
2.2.6. Kekurangan dari sistem E-commerce Secara Umum
Beberapa kekurangan dari sistem e-commerce secara umum adalah:
1. Sistem e-commerce secara umum tidak memiliki sistem otentikasi pengesahan
dari pelanggan
2. Sistem e-commerce secara umum tidak memiliki enkripsi dari sistem
pengamanan saat ini sehingga memungkinkan data bisa disadap dari pihak
luar (serangan man-in-the-middle attack) jika hanya mengandalkan keamanan
enkripsi asimetris dari SSL yang merupakan server pihak ketiga.
3. Sistem enkripsi e-commerce secara umum hanya mengandalkan enkripsi atau
pengamanan dari sisi server saja dan tidak dari sisi client sehingga sulit untuk
mengamankan sistem keamanan
2.2.7. Solusi dari Kekurangan Sistem E-Commerce secara umum
Solusi dari beberapa masalah yang telah ditemukan oleh sistem e-
commerce saat ini adalah:
1. Menggunakan sistem otentikasi sederhana berbasis hashing yang ditanamkan
ke dalam sistem e-commerce untuk melakukan otentikasi pengesahan dari
pelanggan
2. Menggunakan sistem enkripsi simetris RC6 yang diperkuat dengan sistem
enkripsi RSA dan sistem encoding dari Base64
3. Menggunakan sistem enkripsi simetris RC6 hanya untuk mengamankan isi
data transaksi sedangkan untuk kunci enkripsi RC6-nya diamankan dengan
menggunakan RSA baik dari sisi server maupun dari sisi client
2.3. Algoritma Sistem Keamanan yang Dipakai pada Sistem
Pembahasan pada subbab ini menjelaskan ulasan tentang sistem keamanan
yang akan digunakan pada sistem e-commerce ini. Sistem keamanan yang
21
digunakan untuk mengamankan sistem e-commerce ini adalah sistem enkripsi
simetris dari RC6, sistem enkripsi asimetris dari RSA, serta sistem encode dan
decode dari Base64.
2.3.1. Algoritma RC6
Pembahasan pada subbab ini menjelaskan deskripsi dari algoritma enkripsi
RC6, yaitu pengertian algoritma RC6, sistem enkripsi dan dekripsi RC6, dan
sistem pembangkitan kunci untuk enkripsi RC6.
2.3.1.1. Pengertian algoritma RC6
Algoritma RC6 merupakan salah satu kandidat Advanced Encryption
Standard (AES) yang diajukan oleh RSA Laboratories kepada NIST. Dirancang
oleh Ronald L Rivest, M.J.B. Robshaw, R. Sidney dan Y.L. Yin, algoritma ini
merupakan pengembangan dari algoritma sebelumnya yaitu RC5 (Ronald L.
Rivest, 1998).
Menurut Ronald L. Rivest (1998), Algoritma RC6 adalah versi yang
dilengkapi dengan beberapa parameter, sehingga dituliskan sebagai RC6-w/r/b,
dimana parameter w merupakan ukuran kata dalam satuan bit, r adalah bilangan
bulat bukan negatif yang menunjukkan banyaknya iterasi selam proses enkripsi,
dan b menunjukkan ukuran kunci enkripsi dalam byte. Ketika algoritma ini masuk
sebagai kandidat AES, maka ditetapkan nilai parameter w = 32, r = 20 dan b
bervariasi antara 16, 24, dan 32 byte. RC6-w/r/b memecah blok 128 bit menjadi 4
buah blok 32 bit, dan mengikuti enam aturan operasi dasar sebagai berikut.
1. A + B: Operasi penjumlahan bilangan
2. A – B: Operasi pengurangan bilangan integer.
4. A ○+ B: Operasi exclusive-OR (XOR)
5. A x B: Operasi perkalian bilangan integer.
6. A<<<B: A dirotasikan ke kiri sebanyak variabel kedua (B)
7. A>>>B: A dirotasikan ke kanan sebanyak variabel kedua (B)
22
2.3.1.2. Enkripsi algoritma RC6
Algoritma ini bekerja dengan 4 buah register 32-bit A, B, C, D, karena
RC6 memecah blok 128 bit menjadi 4 buah blok 32 bit. Byte yang pertama dari
plaintext atau ciphertext ditempatkan pada byte A, sedangkan byte yang
terakhirnya ditempatkan pada byte D, sehingga akan didapatkan (A, B, C, D) = (B, C,
D, A) yang berarti nilai yang terletak pada sisi kanan berasal dari register di sisi
kiri. Berikut ini adalah algoritma enkripsi RC6:
B = B + S[ 0 ] D = D + S[ 1 ] for i = 1 to 20 do {
t = ( B x ( 2B + 1 ) ) <<< 5 u = ( D x ( 2D + 1 ) ) <<< 5 A = ( ( A ○+ t ) <<< u ) + S[ 2i ] C = ( ( C ○+ u ) <<< t ) + S[ 2i + 1 ] (A, B, C, D) = (B, C, D, A)
} A = A + S[ 42 ] C = C + S[ 43 ]
Kode Program 2. 1. Algoritma Enkripsi RC6
Algoritma RC6 menggunakan 44 buah sub kunci yang dibangkitkan dari
kunci dan dinamakan dengan S[0] hingga S[43], dan setiap sub kunci
panjangnya 32 bit. Kunci didapat dari password yang dimasukkan oleh pengguna,
setiap 4 karakter pada password dimasukkan ke dalam satu buah blok 128-bit.
Proses enkripsi pada algoritma RC6 dimulai dan diakhiri dengan proses whitening
yang bertujuan untuk menyamarkan iterasi yang pertama dan yang terakhir dari
proses enkripsi dan dekripsi. Proses whitening awal menjumlahkan nilai B dengan
S[0], dan nilai D dijumlahkan dengan S[1]. Setiap iterasi pada RC6
menggunakan 2 buah sub kunci. Sub kunci pada iterasi yang pertama
menggunakan S[2] dan S[3], sedangkan iterasi-iterasi berikutnya menggunakan
sub-sub kunci lanjutannya. Setelah iterasi ke-20 selesai, dilakukan proses
23
whitening akhir dimana nilai A dijumlahkan dengan S[42], dan nilai C
dijumlahkan dengan S[43].
Setiap iterasi pada algoritma RC6 mengikuti aturan sebagai berikut, nilai
B dimasukkan ke dalam fungsi f, yang didefinisikan sebagai f(x) =x(2x+1),
kemudian diputar ke kiri sejauh lg-w atau 5 bit. Hasil yang didapat pada proses
ini dimisalkan sebagai u. Nilai u kemudian di XOR dengan C dan hasilnya
menjadi nilai C. Nilai t digunakan sebagai acuan bagi C untuk memutar nilainya
ke kiri, dan nilai u juga digunakan sebagai acuan bagi nilai A untuk melakukan
proses pemutaran ke kiri. Sub kunci S[2i] pada iterasi dijumlahkan dengan A, dan
sub kunci S[2i+1] dijumlahkan dengan C. Keempat bagian dari blok kemudian
akan dipertukarkan dengan mengikuti aturan, nilai A ditempatkan pada D, nilai B
ditempatkan pada A, nilai C ditempatkan pada B, dan nilai (asli) D ditempatkan
pada C (A, B, C, D ditukar menjadi B, C, D, A). Iterasi ini akan terus berlangsung
hingga 20 kali.
2.3.1.3. Dekripsi algoritma RC6
Proses dekripsi ciphertext pada algoritma RC6 merupakan kebalikan dari
proses enkripsi. Proses whitening pada dekripsi adalah kebalikan dari proses
enkripsi yaitu menggunakan operasi pengurangan. Sub kunci yang digunakan
pada proses whitening setelah iterasi terakhir diterapkan sebelum iterasi pertama
dan sub kunci yang diterapkan pada proses whitening sebelum iterasi pertama
digunakan pada whitening setelah iterasi terakhir. Proses dekripsi menerapkan
kebalikan dari algoritma enkripsi secara keseluruhan. Setiap iterasi menggunakan
sub kunci yang sama dengan yang digunakan pada saat enkripsi, namun urutan
penggunaan sub kunci dibalik. Berikut ini adalah algoritma dekripsi RC6:
C = C - S[ 43 ] A = A - S[ 42 ] for i = 20 downto 1 do {
(A, B, C, D) = (D, A, B, C) u = ( D x ( 2D + 1 ) ) <<< 5 t = ( B x ( 2B + 1 ) ) <<< 5
24
C = ( ( C - S[ 2i + 1 ] ) >>> t ) ○+ u A = ( ( A - S[ 2i ] ) >>> u ) ○+ t
} D = D - S[ 1 ] B = B - S[ 0 ]
Kode Program 2. 2. Algoritma Dekripsi RC6
Algoritma dekripsi RC6 menggunakan 44 buah sub kunci yang
dibangkitkan dari kunci dan dinamakan dengan S[0] hingga S[43], dan setiap
sub kunci panjangnya 32 bit. Kunci didapat dari password yang dimasukkan oleh
pengguna, setiap 4 karakter pada password dimasukkan ke dalam satu buah blok
128-bit. Proses dekripsi dimulai dan diakhiri dengan kebalikan dari proses
whitening yang telah dilakukan dari proses enkripsi sebelumnya. Proses tersebut
mengurangi nilai C dengan S[43], dan nilai A dijumlahkan dengan S[42].
Keempat bagian dari blok ini ditukarkan terlebih dahulu sebelum menjalankan
iterasi dengan aturan nilai A ditempatkan pada B, nilai B ditempatkan pada C, nilai
C ditempatkan pada D, dan nilai (asli) D ditempatkan pada A (A, B, C, D ditukar
menjadi D, A, B, C). Setiap iterasi pada RC6 menggunakan 2 buah sub kunci. Sub
kunci pada iterasi yang pertama menggunakan S[40] dan S[41], sedangkan
iterasi-iterasi berikutnya menggunakan sub-sub kunci lanjutannya. Setelah iterasi
ke-20 selesai, dilakukan kebalikan dari proses whitening yang terakhir dimana
nilai D dikurangi dengan S[1], dan nilai B dijumlahkan dengan S[0]. Setiap iterasi
pada dekripsi algoritma RC6 mengikuti aturan sebagai berikut, nilai D dimasukkan
ke dalam fungsi f, yang didefinisikan sebagai f(x) =x(2x+1), kemudian diputar
ke kiri sejauh lg-w atau 5 bit. Hasil yang didapat pada proses ini dimasukkan
sebagai u. Nilai u kemudian di XOR dengan C dan hasilnya menjadi nilai C. Nilai
t digunakan sebagai acuan bagi C untuk memutar nilainya ke kanan, dan nilai u
juga digunakan sebagai acuan bagi nilai A untuk melakukan proses pemutaran ke
kanan. Sub kunci S[2i] pada iterasi dikurangi dengan A, dan sub kunci S[2i+1]
dikurangi dengan C. Iterasi ini akan terus berlangsung hingga 20 kali.
25
2.3.1.4. Pembangkitan kunci
Algoritma untuk membangkitkan kunci enkripsi pada RC6 dijelaskan
pada pseudocode di bawah ini.
S[ 0 ] = 0xB7E15163 for i = 1 to 43 do S[i] = S[i-1] + 0x9E3779B9 A = B = i = j = 0 for k = 1 to 132 do { A = S[ i ] = ( S[ i ] + A + B ) <<< 3 B = L[ j ] = ( L[ j ] + A + B ) <<< ( A + B ) i = ( i + 1 ) mod 44 j = ( j + 1 ) mod c
Kode Program 2. 3. Pembangkitan kunci pada RC6
Pengguna memasukkan sebuah kunci yang besarnya b byte, dengan
ketentuan 0 ≤ b ≤ 255. Byte kunci ini kemudian ditempatkan dalam array c w-
bit words L[0]…L[c-1]. Byte pertama kunci akan ditempatkan sebagai pada L[0],
byte kedua pada L[1], hingga byte terakhir diletakkan pada L[c-1]. (Catatan, bila
b=0 maka c=1 dan L[0]=0). Masing-masing nilai word w-bit akan dibangkitkan
pada penambahan kunci round 2r+4 dan akan ditempatkan pada array
S[0,…,2r+3].
Konstanta P32 = B7E15163 dan Q32 = 9E3779B9 (dalam satuan
heksadesimal) adalah “konstanta ajaib” yang digunakan dalam penjadwalan kunci
pada RC6. Nilai P32 diperoleh dari perluasan bilangan biner e-2, dengan e adalah
sebuah fungsi logaritma. Nilai Q32 diperoleh dari perluasan bilangan biner Ø – 1,
dengan Ø adalah "golden ratio" (rasio emas).
2.3.2. Algoritma base64
Pembahasan pada subbab ini menjelaskan deskripsi dari algoritma
encoding Base64, yaitu pengertian algoritma Base64, susunan alphabet dari
Base64, dan cara kerja pada algoritma encoding base64
26
2.3.2.1. Pengertian algoritma base64
Base64 adalah sekelompok pengkodean skema yang sama yang
merepresentasikan data biner dalam format string ASCII dengan cara
menerjemahkannya menjadi representasi radix-64. Istilah Base64 ini berasal dari
spesifik MIME encoding transfer konten
Skema encoding dari Base64 digunakan untuk encoding data biner yang
perlu disimpan dan ditransmisikan melalui media yang dirancang untuk
menangani data tekstual. Sistem ini berguna untuk memastikan bahwa data tetap
utuh tanpa mengalami perubahan selama transmisi data. Base64 umumnya
digunakan di sejumlah aplikasi termasuk email melalui MIME, dan penyimpanan
data yang kompleks dalam XML.
2.3.2.2. Susunan alfabet encoding base64
Susunan alfabet pada Base64 ada dua macam, yaitu susunan alfabet pada
encoding Base64 biasa yang umum digunakan untuk transmisi data pada web dan
aplikasi lainnya dan susunan alfabet pada encoding Base64 URL and filename
safe yang dikhususkan untuk encoding pada nama file dan alamat URL pada web.
1. Susunan alfabet encoding Base64 biasa
Base 64 Encoding dirancang untuk merepresentasikan urutan acak pada
oktet dalam bentuk yang memungkinkan penggunaan huruf besar dan huruf kecil
tapi tidak harus dapat dibaca oleh manusia (Josefsson, 2006).
Base64 menggunakan subset 65-karakter pada US-ASCII, yang dapat
dilihat pada tabel di bawah ini.
27
Tabel 2. 2. Tabel susunan alfabet pada Base64
Nilai Encoding Nilai Encoding Nilai Encoding Nilai Encoding0 A 17 R 34 i 51 Z 1 B 18 S 35 j 52 0 2 C 19 T 36 k 53 1 3 D 20 U 37 l 54 2 4 E 21 V 38 m 55 3 5 F 22 W 39 n 56 4 6 G 23 X 40 o 57 5 7 H 24 Y 41 p 58 6 8 I 25 Z 42 q 59 7 9 J 26 a 43 r 60 8 10 K 27 b 44 s 61 9 11 L 28 c 45 t 62 + 12 M 29 d 46 u 63 / 13 N 30 e 47 v 14 O 31 f 48 w (pad) = 15 P 32 g 49 x 16 Q 33 h 50 y
Tabel di atas merepresentasikan susunan alfabet Base64 yang
menggunakan subset 65-karakter pada US-ASCII, merepresentasikan karakter
printable sebesar 6-bit. (Tambahan pada karakter ke-65, "=", digunakan untuk
menandakan fungsi pengolahan khusus). Proses encoding merepresentasikan
kelompok karakter sebesar 24-bit pada input bit sebagai output string dari 4
karakter yang dikodekan. Diproses dari kiri ke kanan, sebuah 24-bit input group
dibentuk dengan menggabungkan 3 kelompok 8-bit input. 24-bit tersebut
kemudian diperlakukan sebagai 4 kelompok 6-bit yang digabungkan, masing-
masing diterjemahkan menjadi karakter tunggal dalam format alphabet dengan
basis 64. Setiap kelompok 6-bit digunakan sebagai nilai indeks ke dalam array
dari 64 karakter printable. Karakter yang direferensikan oleh indeks ditempatkan
di string output.
Karakter pengolahan khusus (padding) ditambahkan jika jumlah nilai
biner kurang dari 24-bit (jumlah karakter input yang sebesar 8-bit kurang dari 3).
Bila terdapat kurang dari 24-bit input yang tersedia dalam input group, bit dengan
nilai nol ditambahkan di kanan untuk membentuk jumlah integral kelompok 6-bit.
Padding pada akhir data ditambahkan dengan menggunakan karakter "=". Berikut
28
ini adalah kasus yang dapat timbul karena semua karakter input berbasis 64
merupakan integral terhadap oktet:
a. Kuantum akhir pada input dari encoding adalah perkalian integral dari 24-bit,
unit akhir pada encoded output akan menjadi perkalian integral dari 4 karakter
tanpa padding "=".
b. Kuantum akhir input dari encoding adalah tepat 8-bit, unit terakhir dari output
encoding akan menjadi dua karakter yang diikuti dengan dua karakter padding
"=".
c. Kuantum akhir input dari encoding adalah tepat 16-bit, unit akhir pada
encoded output akan menjadi tiga karakter diikuti dengan satu karakter
padding "=".
2. Susunan alfabet encoding Base64 "URL and Filename safe"
Alfabet alternatif yang telah disarankan untuk menggunakan "~" sebagai
Karakter yang ke-63. Karakter "~" memiliki arti khusus dalam beberapa
lingkungan file system, sehingga karakter "~" tidak bisa dipakai untuk pengganti
karakter ke-63. Karakter yang tersisa pada URI yang tidak terpakai adalah ".",
tapi beberapa lingkungan file system tidak mengizinkan beberapa karakter "." di
dalam nama file yang mengakibatkan karakter "." juga tidak bisa dipakai.
Karakter pad "=" biasanya di-encoded dalam bentuk percent-encoded ketika
digunakan dalam URI, tetapi jika panjang data diketahui secara implisit,
kebutuhan percent-encoded ini bisa dihindari dengan cara melewati padding.
Encoding ini dapat disebut sebagai Base64 "URL and Filename safe".
Pengkodean ini berbeda dengan pengkodean Base64 yang sebelumnya karena ada
perbedaan pada karakter alfabet ke-62 dan ke-63. Algoritma yang digunakan
untuk encoding Base64url sama dengan Algoritma encoding untuk Base64.
29
Tabel 2. 3. Tabel susunan alfabet Base64 "URL and Filename Safe"
Nilai Encoding Nilai Encoding Nilai Encoding Nilai Encoding0 A 17 R 34 i 51 z 1 B 18 S 35 j 52 0 2 C 19 T 36 k 53 1 3 D 20 U 37 l 54 2 4 E 21 V 38 m 55 3 5 F 22 W 39 n 56 4 6 G 23 X 40 o 57 5 7 H 24 Y 41 p 58 6 8 I 25 Z 42 q 59 7 9 J 26 a 43 r 60 8 10 K 27 b 44 s 61 9 11 L 28 c 45 t 62 - 12 M 29 d 46 u 63 _ 13 N 30 e 47 v 14 O 31 F 48 w (pad) = 15 P 32 G 49 x 16 Q 33 H 50 y
Tabel diatas menunjukkan bahwa susunan alfabet pada Base64Url sama
dengan Base64 biasa kecuali pada karakter ke-62 dan ke-63 yang menggunakan
karakter "-" dan karakter "_" sebagai pengganti karakter "+" dan "/"
2.3.2.3. Cara kerja algoritma base64
Untuk mentranslasikan antara binary dan base encoding, input disimpan
di dalam structure, dan output di-ekstrak. Proses untuk encoding Base64 adalah
sebagai berikut.
Tabel 2. 4. Struktur Base64
Oktet pertama Oktet kedua Oktet ketiga
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
5 4 3 2 1 0 5 4 3 2 1 0 5 4 3 2 1 0 5 4 3 2 1 0
1.index 2.index 3.index 4.index
Tabel di atas menjelaskan proses encoding dari karakter byte menjadi
karakter Base64. Byte input dikonversi ke dalam bentuk biner dan dimasukkan ke
30
dalam structure sebanyak tiga buah, kemudian deretan angka biner hasil konversi
tersebut disusun beriringan sehingga berjumlah 24 angka biner. Angka biner yang
telah disusun tersebut diambil setiap enam buah dan dikonversi menjadi angka
desimal yang digunakan sebagai nilai indeks untuk mengambil karakter encoding
Base64. Setiap proses encoding dari tiga karakter byte yang dilakukan pada
Base64 selalu menghasilkan empat karakter encoding Base64.
Tabel di bawah ini adalah contoh proses encoding dari karakter byte
menjadi karakter Base64.
Tabel 2. 5. Konversi String ke Base64
Input (Char)
(DC4) û œ (ETX) Ù ~
Hex (Char)
1 4 f b 9 c 0 3 d 9 7 e
8-bit 0 0 0 1 0 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1 1 06-bit 0 0 0 1 0 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1 1 0Dec 5 1 5 4 6 2 8 0 6 1 3 7 6 2 Output (Base64)
F P u c A 9 l +
Tabel di atas menjelaskan proses konversi karakter byte menjadi karakter
encoding pada Base64. Pada karakter input yang pertama, terdapat karakter non-
printable yaitu DC4 (Device Control 4) dengan nomor hexadecimal 14. Karakter
DC4 dicari nilai hexadesimalnya dan kemudian dikonversi menjadi angka biner.
Angka biner hasil konversi digunakan untuk membentuk angka index dari
karakter Base64 dengan cara mengambil angka biner sebanyak 6 digit kemudian
mengubahnya menjadi angka desimal. Angka desimal hasil konversi tersebut
dicocokkan dengan tabel karakter encoding Base64 seperti yang telah dijelaskan
pada
31
Tabel 2. 2. Hasil konversi karakter byte menjadi karakter encoding Base64
tersebut digunakan untuk keperluan penyimpanan data atau transmisi data.
Pseudodoce di bawah ini adalah contoh dari tes vektor untuk Base64.
BASE64("") = ""
BASE64("f") = "Zg=="
BASE64("fo") = "Zm8="
BASE64("foo") = "Zm9v"
BASE64("foob") = "Zm9vYg=="
BASE64("fooba") = "Zm9vYmE="
BASE64("foobar") = "Zm9vYmFy"
Kode Program 2. 4. Contoh Vektor Konversi ke Base64
Pseudodoce diatas menjelaskan hasil dari tes vektor dalam konversi
karakter byte menjadi karakter Base64. Berikut adalah beberapa karakteristik dari
sistem konversi karakter byte ke dalam karakter encoding Base64:
1. Input sebanyak satu karakter byte menghasilkan empat karakter encoding
Base64 yaitu dua karakter Base64 dan dua karakter padding.
2. Input sebanyak dua karakter byte menghasilkan empat karakter encoding
Base64 yaitu tiga karakter Base64 dan satu karakter padding. Karakter Base64
di posisi kedua berubah karena perbedaan struktur input pada angka biner.
3. Input sebanyak tiga karakter byte menghasilkan empat karakter encoding
Base64 yaitu empat karakter Base64. Karakter Base64 di posisi ketiga berubah
karena perbedaan struktur input pada angka biner.
4. Input sebanyak tiga empat karakter byte menghasilkan delapan karakter
encoding Base64 yaitu enam karakter Base64 dan dua karakter padding.
Karakter Base64 di posisi pertama sampai keempat tetap seperti sebelumnya,
tetapi karakter di posisi kelima sampai kedelapan mengikuti karakteristik
seperti perubahan karakter di posisi pertama sampai keempat ketika terdapat
satu karakter byte sebagai input.
32
Karakteristik dari hasil konversi tersebut menyebabkan sistem encoding
pada Base64 harus mengambil karakter byte sebanyak tiga buah sebagai input
dalam setiap iterasi encoding. Jumlah padding pada hasil konversi selalu
ditentukan pada jumlah karakter byte input yang tersedia pada iterasi terakhir.
2.3.3. Algoritma RSA
Pembahasan pada subbab ini menjelaskan deskripsi dari algoritma enkripsi
RSA, yaitu pengertian algoritma RSA, sistem enkripsi dan dekripsi RSA, dan
sistem pembangkitan kunci untuk enkripsi RSA.
2.3.3.1. Pengertian RSA
Menurut Ronald L. Rivest dkk. (1978), RSA adalah salah satu sistem
kriptografi kunci publik yang pertama dan digunakan untuk transmisi data yang
aman. Sistem ini menggunakan dua buah kunci yang berbeda, yaitu kunci enkripsi
yang bersifat publik (yang biasa disebut public key) dan kunci dekripsi yang
dirahasiakan (yang biasa disebut dengan private key). Sistem kunci asimetris pada
sistem RSA ini berbasis pada kesulitan praktis dari pencarian dua bilangan prima
yang bernilai besar. Menurut Akronim RSA adalah singkatan dari Ron Rivest, Adi
Shamir dan Leonard Adleman yang pertama kali diperkenalkan pada tahun 1977.
Sistem RSA menciptakan dan menerbitkan kunci publik didasarkan pada
dua bilangan prima besar yang bersamaan dengan nilai tambahan lainnya. Kedua
bilangan prima yang digunakan harus dirahasiakan. Semua pengguna dapat
menggunakan kunci publik untuk mengenkripsi pesan, tetapi pesan tersebut hanya
dapat didekripsi dengan kunci privat yang dirahasiakan tersebut.
2.3.3.2. Sistem Pembangkitan Kunci RSA
Sistem pembangkitan kunci RSA melibatkan kunci publik dan kunci
privat. Kunci publik digunakan untuk mengenkripsi pesan dan dapat diketahui
oleh semua orang. Pesan yang dienkripsi dengan kunci publik hanya dapat
didekripsi dengan menggunakan kunci privat. Kunci untuk algoritma RSA
dihasilkan dengan cara sebagai berikut:
33
1. Tentukan dua bilangan bulat prima untuk p dan q. Bilangan prima p dan q
harus dipilih secara acak dan panjang bit harus sama.
2. Hitunglah nilai n = pq. Nilai n digunakan sebagai modulus untuk kunci
publik dan kunci privat. Panjang kunci biasanya dinyatakan dalam bit dan
disebut dengan key length.
3. Hitunglah φ(n) = φ(p)φ(q) = (p−1)(q−1) = n-(p+q-1), dengan m adalah
fungsi euler totient.
4. Pilih sebuah integer e sehingga 1<e<φ(n) dan gcd(e,φ(n)) = 1.
5. Tentukan d dengan rumus d = (1 + nm)/e.
Nilai hasil perhitungan yang dijadikan kunci publik dalam sistem enkripsi
RSA adalah e dan n, sedangkan nilai yang dijadikan sebagai private key adalah d
dan n.
2.3.3.3. Sistem Enkripsi RSA
Sebuah server mengirimkan kunci publik-nya (e dan n) untuk seorang
pelanggan dan merahasiakan kunci privat d dan n. Seorang pelanggan tersebut
menggunakan kunci tersebut untuk mengirim pesan M ke server.
Pelanggan tersebut pertama kali mengubah pesan M menjadi integer m,
sehingga 0 ≤ m < n dengan menggunakan protokol reversible yang dikenal
sebagai padding scheme. Pelanggan tersebut kemudian menghitung ciphertext c
dengan rumus sebagai berikut
( nmc e mod≡ ) (2.1)
Perhitungan ini dapat dilakukan secara efisien bahkan untuk nomor 500-
bit dengan menggunakan Modular exponentiation. Pelanggan kemudian
mengirimkan pesan terenkripsi c ke server.
34
2.3.3.4. Sistem Dekripsi RSA
Server yang menerima pesan terenkripsi c mampu melakukan dekripsi
dengan kunci d sehingga kembali menjadi pesan M. Rumus untuk melakukan
dekripsi pada pesan adalah sebagai berikut.
( ncm d mod≡ ) (2.2)
Server dapat mengembalikan pesan M aslinya dengan nilai m yang
diberikan oleh client dengan cara membalikkan skema padding.
2.3.3.5. Contoh Proses Enkripsi dan Dekripsi pada RSA
Contoh proses pembangkitan kunci, enkripsi, dan dekripsi RSA dapat
dilihat pada contoh dibawah ini.
1. Pilih dua bilangan prima yang berbeda, misalnya p = 61 dan q = 53
2. Hitunglah nilai n = pq. Jika p = 61 dan q = 53, maka n = 61 x 53 = 3233
3. Hitunglah totient φ(n) = (p-1)(q-1). Nilai totient φ(n) adalah (61 – 1)(53 –
1) = 60 x 52 = 3120
4. Pilih angka e dengan 1 < e < 3120 dan coprime dengan 3120. Angka yang
relatif prime dengan e adalah angka yang sama-sama memiliki faktor pembagi
terbesar adalah 1. Rumus secara matematis adalah gcd(e,m) = 1. Nilai e
adalah . 17=elet
5. Cari angka d sehingga e*d = 1 mod (m) atau d = (1+nm)/e. Nilai d adalah
17 x 2753 mod 3120 = 1
6. Hasil perhitungan sebelumnya akan menghasilkan kunci publik e = 17 dan n =
3233 dan kunci privat d = 2753 dan n = 3233
7. Pada bagian ini diberikan contoh pesan dengan karakter ASCII dengan isi
pesan m, fungsi enkripsinya adalah ( ) 3233mod17mmc = . Contoh enkripsi
untuk pesan dengan karakter ASCII bernilai 65 adalah
27903233mod6517 ==c
35
8. Proses dekripsi dari pesan ciphertext c adalah ( ) 3233mod2753ccm =
653233mod27902753 =
. Contoh
pesan dengan karakter ciphertext d adalah =m
Setiap pesan yang dienkripsi dengan algoritma RSA, pesan dienkripsi
setiap satu karakter pada pesan tersebut, kemudian hasilnya berupa angka yang
sangat besar dan harus dikonversi kembali ke dalam bentuk karakter ASCII untuk
memungkinkan transmisi data dengan ukuran yang lebih kecil sehingga untuk satu
karakter pesan plaintext m dapat menjadi beberapa karakter ciphertext c.
2.4. Pemrograman Berbasis Web
Pemrograman berbasis web adalah istilah yang luas untuk pekerjaan yang
terlibat dalam perancangan dan pengembangan situs web untuk Internet (World
Wide Web) atau intranet (jaringan pribadi). Pemrograman berbasis web mengacu
pada perancangan halaman web dalam aspek non-desain, yaitu menulis markup
dan coding dalam bahasa pemrograman web tertentu. Dalam lingkup perancangan
web berbasis bahasa pemrograman, berdasarkan tujuan penggunaan, terdapat 2
sisi yang digarap, yaitu Server-Side Web Programming dan Client-Side Web
Programming.
2.4.1. Server-side web programming
Server-side web programming adalah teknik yang digunakan dalam
perancangan website yang melibatkan embedding script ke dalam HTML source
code yang penanganan permintaan pengguna (client) ke situs web server oleh
script yang berjalan pada sisi server sebelum server merespon permintaan klien.
Server-side web programming menggunakan script yang dijalankan sepenuhnya
pada sisi web server.
Server-side web programming biasanya digunakan untuk menyediakan
sebuah antarmuka untuk client dan untuk membatasi akses client ke proprietary
database atau data source lainnya. Script ini dapat merakit karakteristik client
untuk digunakan dalam menyesuaikan respon berdasarkan karakteristik,
kebutuhan pengguna, hak akses, dan lain-lain. Server-side scripting juga
memungkinkan pemilik website untuk mengurangi akses pengguna ke source
36
code dari server-side script yang kemungkinan bersifat proprietary dan berharga
dalam script file tersebut. Sisi negatif untuk penggunaan server-side scripting
adalah bahwa komputer server dari sebuah situs harus menyediakan sebagian
besar sumber daya komputasi sebelum mengirim halaman ke komputer client
untuk ditampilkan melalui web browser pada client.
Server melayani data dalam cara yang umum digunakan, misalnya sesuai
dengan protokol HTTP atau FTP, dan pengguna dapat memiliki pilihan untuk
menggunakan program client (kebanyakan web browser modern dapat meminta
dan menerima data menggunakan kedua protokol tersebut). Developer dapat
merancang server, client, dan protokol komunikasi ciptaan mereka masing-
masing, yang hanya bisa digunakan dengan satu sama lain selama masih
dirancang oleh satu developer.
Bahasa pemrograman server-side programming yang umum dipakai
adalah PHP dan ASP. Laporan ini hanya membahas bahasa pemrograman PHP
karena sistem web yang dirancang menggunakan bahasa pemrograman PHP.
2.4.1.1. PHP
Pembahasan pada subbab ini menjelaskan pengertian dari PHP, sejarah
singkat dari PHP, dan kode program dengan bahasa PHP.
1. Pengertian PHP
Menurut situs PHP (www.php.net) PHP adalah bahasa pemrograman
server-side scripting yang dirancang untuk web development. PHP juga
digunakan sebagai general purpose programming language. PHP dibuat oleh
Rasmus Lerdorf pada tahun 1994, referensi implementasi pada PHP (didukung
oleh Zend Engine) kini diproduksi oleh The PHP Group. PHP awalnya didirikan
untuk Personal Home Page, sekarang berganti singkatan menjadi PHP: Hypertext
Preprocessor.
Kode PHP dapat digabungkan dengan kode HTML, atau dapat digunakan
dalam kombinasi dengan berbagai template engine dan web framework. Kode
PHP diproses oleh PHP interpreter, yang diimplementasikan sebagai modul web
37
server secara native atau Common Gateway Interface (CGI) executable. Web
server mengirimkan hasil output kepada client dalam bentuk bagian dari halaman
web yang dihasilkan karena kode PHP dapat menghasilkan kode HTML web
page, gambar, atau data dalam bentuk lainnya.
2. Sejarah PHP
Menurut Wikipedia (2014), pengembangan PHP dimulai pada tahun 1994
ketika Rasmus Lerdorf menulis serangkaian kode biner Common Gateway
Interface (CGI) pada C yang digunakan untuk mempertahankan personal
homepage miliknya. Rasmus Lerdorf memperluas kemampuan kode binernya
dengan menambahkan kemampuan untuk bekerja dengan bentuk web dan untuk
berkomunikasi dengan database, dan menyebutkan implementasi ini dengan nama
"Personal Home Page/Forms Interpreter" atau juga disebut PHP/FI.
PHP/FI dapat digunakan untuk membangun aplikasi web yang sederhana
dan dinamis. Lerdorf awalnya mengumumkan rilis PHP/FI sebagai "Personal
Home Page Tools (PHP Tools) version 1.0" secara publik ke dalam kelompok
diskusi Usenet di comp.infosystems.www.authoring.cgi pada tanggal 8 Juni 1995
untuk mempercepat penemuan bug dan meningkatkan kemampuan kode. Rilis
PHP 1.0 sudah memiliki fungsi dasar yang telah PHP miliki pada versi tahun
2013. Fungsi ini sudah termasuk variabel Perl-like, penanganan form, dan
kemampuan untuk menanamkan kode HTML. Kumpulan sintaks mirip dengan
sintaks dari Perl tapi lebih sederhana, lebih terbatas dan kurang konsisten.
PHP versi awal tidak dimaksudkan untuk menjadi bahasa pemrograman
baru dan tumbuh secara organik. Sebuah tim pengembangan mulai terbentuk dan
resmi merilis PHP/FI 2 pada November 1997 setelah berbulan-bulan bekerja dan
melakukan beta testing.
Salah satu kritik dari PHP adalah tidak konsistennya pada fungsi dan
penyusunan. Dalam beberapa kasus, nama function yang dipilih untuk
mencocokkan library dengan tingkat yang lebih rendah pada PHP disebut dengan
"wrapping". Beberapa versi yang sangat awal, panjang nama function pada PHP
38
digunakan secara internal sebagai fungsi hash, sehingga nama-nama tersebut telah
dipilih untuk meningkatkan distribusi nilai hash.
Zeev Suraski dan Andi Gutmans menulis ulang parser pada tahun 1997
dan membentuk dasar pada PHP 3, mengubah nama bahasa dari semula bernama
"Personal Home Page" menjadi nama berbentuk rekursif akronim yaitu "PHP:
Hypertext Preprocessor". Uji publik untuk PHP 3 dimulai dan peluncuran resmi
dilakukan pada bulan Juni 1998. Suraski dan Gutmans memulai penulisan ulang
baru dari inti PHP, memproduksi Zend Engine pada tahun 1999. Suraski dan
Gutmans juga mendirikan Zend Technologies di Ramat Gan, Israel.
PHP 4 yang didukung oleh Zend Engine 1.0 dirilis Pada tanggal 22 Mei
2000. Cabang dari versi ini telah mencapai versi 4.4.9 pada Agustus 2008. PHP 4
tidak dikembangkan lagi dan tidak ada lagi update keamanan yang akan dirilis.
PHP 5 dirilis pada tanggal 13 Juli 2004. PHP 5 didukung oleh engine baru
yaitu Zend Engine II. PHP 5 memasukkan fitur baru yaitu peningkatan dukungan
untuk pemrograman berorientasi objek, ekstensi PHP Data Objects (PDO) (yang
mendefinisikan interface yang ringan dan yang konsisten untuk mengakses
database), dan berbagai peningkatan kinerja. PHP 5 menjadi satu-satunya versi
stabil yang masih dalam pengembangan pada tahun 2008. Late static biding telah
hilang dari PHP dan telah ditambahkan pada versi 5.3.
Banyak profil proyek open-source tingkat tinggi tidak lagi mendukung
PHP 4 dalam kode baru mulai tanggal 5 Februari 2008, karena inisiatif GoPHP5,
yang disediakan oleh konsorsium pengembang PHP yang mempromosikan
transisi dari PHP 4 ke PHP 5.
Seiring dengan waktu, PHP interpreter tersedia pada kebanyakan sistem
operasi 32-bit dan 64-bit. PHP interpreter tersedia baik dengan cara membangun
ulang dari PHP source code atau dengan cara menggunakan pre-built binaries.
Untuk PHP versi 5.3 dan 5.4, distribusi biner yang hanya tersedia untuk Microsoft
Windows adalah 32-bit x86 builds. PHP versi 32-bit x86 builds membutuhkan
Windows 32-bit compatibility mode saat menggunakan Internet Information
Services (IIS) pada platform Windows 64-bit. PHP versi 5.5 menyediakan 64-bit
x86-64 build pada Microsoft Windows.
39
PHP menerima review yang beragam karena kekurangan dukungan native
Unicode pada tingkat bahasa inti. Tahun 2005, sebuah proyek yang dipimpin oleh
Andrei Zmievski dimulai untuk memasukkan dukungan Unicode asli pada seluruh
PHP, dengan cara menanamkan International Components for Unicode (ICU)
library, dan secara internal merepresentasikan text string sebagai UTF-16. Karena
perubahan ini akan menyebabkan perubahan besar untuk bahasa internal dan kode
dari pengguna, perubahan ini direncanakan untuk dirilis sebagai PHP versi 6.0,
bersama dengan pengembangan fitur utama lainnya.
Kurangnya jumlah developer yang memahami perubahan yang diperlukan,
dan masalah kinerja yang timbul akibat konversi ke dan dari UTF-16 yang jarang
digunakan dalam konteks web, menyebabkan keterlambatan dalam proyek ini.
PHP 5.3 rilis diciptakan pada tahun 2009, dengan banyak fitur non-Unicode di-
back-porting dari PHP 6 terutama fitur namespace. PHP 5.4 dirilis pada Maret
2010. PHP 5.4 dibuat berisi kebanyakan fitur non-Unicode yang tersisa dari PHP
6, seperti traits dan closure re-binding. Harapan awal pada rencana baru tersebut
akan dibentuk untuk integrasi Unicode, tetapi hingga tahun 2014 tidak ada
satupun dari rencana tersebut diadopsi.
Tahun 2014, pekerjaan sedang berlangsung pada versi PHP utama baru
yang bernama PHP 7. Beberapa sengketa terjadi dalam penentuan penggunaan
nama PHP 6 atau PHP 7 dalam rilis terbaru. Percobaan Unicode pada PHP 6
tidak pernah dirilis, sejumlah artikel dan judul buku mereferensikan nama lama
PHP 6 yang bisa berakibat kebingungan jika rilis baru menggunakan kembali
nama lama PHP 6. Setelah dilakukan voting, nama PHP 7 yang digunakan.
PHP 7 mendapat fondasinya dari cabang PHP eksperimental yang
awalnya bernama PHPNG (PHP Next Generation), yang bertujuan untuk
mengoptimalkan kinerja PHP dengan cara refactoring pada Zend Engine namun
tetap mempertahankan kompatibilitas bahasa pemrograman sedekat mungkin.
Tanggal 14 Juli 2014, benchmark berbasis WordPress, yang berfungsi sebagai
Benchmark Suite utama untuk proyek PHPNG, menunjukkan peningkatan hampir
100% dalam kinerja. Perubahan dari PHPNG juga diharapkan untuk membuatnya
lebih mudah untuk meningkatkan kinerja di masa depan, karena struktur data yang
40
lebih kompak dan perubahan lain yang dinilai lebih cocok untuk kesuksesan
migrasi menuju just-in-time (JIT) compiler.
PHP 7 juga akan berisi peningkatan sintaks variabel yang secara internal
konsisten dan lengkap, menyelesaikan masalah lama pada PHP. Hal ini
memungkinkan penggunaan operator ->, [], (), {}, dan :: dengan ekspresi
sebelah kiri yang lebih berarti secara acak.
3. Sintaks dalam PHP
Berikut ini adalah beberapa pembahasan sintaks PHP yang sering
digunakan secara umum
a. Sintaks secara umum
Berikut ini adalah program hello world yang ditulis dalam kode PHP yang
ditanamkan pada dokumen HTML
<!DOCTYPE html>
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>
Kode Program 2. 5. Sintaks program Hello World dalam kode PHP yang ditanamkan pada kode
HTML
Kode program di atas adalah coding dengan bahasa pemrograman HTML.
Coding PHP dapat diletakkan di mana saja di dalam halaman. Coding dengan
bahasa pemrograman PHP dimulai dengan tag pembuka <?php dan tag penutup
?>. Perintah untuk menampilkan teks ke dalam dokumen dengan bahasa PHP
tidak bisa diketik secara langsung tetapi harus melalui perintah echo atau printf
diikuti dengan teks yang ingin ditampilkan yang diapit dalam tanda petik satu atau
tanda petik dua.
41
Beberapa aturan dalam menulis kode pada PHP adalah:
1) Kode PHP dapat tulis di dalam dokumen HTML, tetapi harus di dalam apit tag
penanda kode PHP, yaitu tag <?php dan ?>
2) Setiap line pernyataan pada kode PHP harus ditutup dengan tanda titik koma
(;)
3) Nama function dan class pada PHP bersifat case insensitive
Semua kode program untuk bahasa PHP dapat ditulis pada halaman
HTML, tetapi semua kode PHP tersebut hanya terlihat pada server yang
menyimpan halaman tersebut.
b. Tag penanda pada PHP
PHP memiliki beberapa macam tag penanda, yaitu:
1) Tag <?php dan ?>. Tag ini adalah tag penanda yang paling umum digunakan
dalam pemrograman PHP.
2) Tag <? dan ?>. Tag ini adalah tag yang digunakan pada PHP versi lama,
karena pada PHP versi baru, support pada tag ini di-disable.
3) Tag <script language="php"> dan </script>. Tag ini adalah cara lain
untuk menandai script pada PHP. Tag ini juga jarang digunakan.
Kode program di bawah ini merupakan contoh penulisan tag penanda pada
dokumen PHP.
<?php
echo "Hello World";
?>
<?
echo "Hello World";
?>
<script language="php">
42
echo "Hello World";
</script>
Kode Program 2. 6. Sintaks contoh tag pembatas pada PHP
Coding diatas adalah contoh untuk membuat tag penanda untuk tempat
bahasa pemrograman PHP. Semua coding dengan bahasa PHP diletakkan di
dalam tag tersebut.
c. Komentar pada PHP
Penulisan komentar di dalam bahasa pemrograman PHP dapat dilakukan
dengan cara sebagai berikut:
1) Komentar yang diawali dengan tag #, tag ini digunakan untuk menulis
komentar 1 baris
2) Komentar yang diawali dengan tag //, tag ini digunakan untuk menulis
komentar 1 baris
3) Komentar yang diawali dengan tag <!- dan tag penutup --> , tag ini
digunakan untuk menulis komentar lebih dari 1 baris
4) Komentar yang diawali dengan tag pembuka /* dan tag penutup */ , tag ini
digunakan untuk menulis komentar lebih dari 1 baris
Berikut ini adalah contoh penulisan komentar pada bahasa PHP.
#Ini komentar ke-1
//Ini komentar ke-2
<!- Ini komentar ke-3a
Ini komentar ke-3b
Ini komentar ke-3c -->;
/* Ini komentar ke-4a
Ini komentar ke-4b
Ini komentar ke-4c */
Kode Program 2. 7. Contoh penulisan komentar pada PHP
43
Coding diatas adalah contoh untuk menulis komentar di dalam bahasa
pemrograman PHP. Komentar yang diawali dengan tag # atau // hanya bisa
dituliskan komentar sebanyak satu baris sehingga setiap komentar yang berada di
baris berikutnya harus ikut diawali dengan # atau //. Komentar yang diapit
dengan tag <!- dan --> atau dengan tag /* dan */ dapat dituliskan komentar
lebih dari satu baris.
d. Variable
Variable pada PHP berfungsi untuk menyimpan nilai atau data sementara.
Beberapa aturan dalam membuat variable pada PHP adalah:
1) Variable pada PHP ditulis dalam bentuk diawali dengan lambang dollar ($)
dan diikuti dengan nama variable
2) Nama variable pada PHP bersifat case sensitive
3) Datatype pada variable tidak perlu dideklarasikan
4) Nama variable harus berupa kombinasi huruf, angka, dan underscore
5) Nama variable tidak boleh diawali dengan angka
6) Variable bisa diberi nilai dengan menggunakan operator assignment (=)
Berikut ini adalah contoh penggunaan variable pada bahasa PHP
$x = 1;
$y = 2;
$X = 3;
$Y = 4;
Kode Program 2. 8. Sintaks penggunaan variable pada PHP
Coding di atas adalah contoh penulisan variable dalam bahasa PHP.
Variable pada PHP bersifat case sensitive sehingga variable $x tidak sama dengan
variable $X.
44
e. Datatype
PHP mampu menyimpan data ke dalam variable dengan beberapa tipe
data, yaitu teks, angka, maupun array. PHP memiliki dukungan datatype sebagai
berikut:
1) Boolean (TRUE atau FALSE),
2) Integer
3) Float
4) String
5) Array
6) Object
7) NULL (nama umum dari "tidak ada nilai")
PHP menyimpan nilai integer dengan range sesuai dengan platform
sistem operasi yang digunakan (32-bit atau 64-bit) dalam bentuk bilangan
bertanda (signed). Assignment nilai atau operasi aritmatika yang melebihi range
nilai maksimum pada variable yang memiliki tipe data signed integer akan
mengubah tipe data pada variable tersebut menjadi float.
Tipe data float dapat dideklarasikan dalam bentuk notasi floating point
(12,3456) atau bentuk notasi scientific (5.01E+01).
Konversi tipe data dari tipe data integer atau float menjadi Boolean
menggunakan nilai apapun yang tidak bernilai 0 sebagai nilai true dan nilai 0
sebagai bernilai false.
Tipe data null hanya mengizinkan nilai null pada variable. Variable
dengan tipe data null tidak dapat diberikan nilai apapun.
Penggunaan tipe data array pada PHP membutuhkan deklarasi tipe data
pada variable dengan tipe data array. Tipe data dideklarasikan dengan cara meng-
assign variable dengan nilai new Array() (jika ingin mendeklarasikan array
kosong) atau new Array("sejumlah", "data", "predefined") (jika ingin
mendeklarasikan array dengan beberapa data didalamnya). Array dapat berisi
elemen dengan datatype apapun yang bisa ditangani dengan PHP. PHP juga
memungkinkan untuk menyimpan sekumpulan data dengan bentuk nested array
(array di dalam array).
45
Berikut adalah beberapa contoh assignment beberapa variable dalam
bahasa pemrograman PHP.
$bool = TRUE; //Tipe data Boolean
$int = 2147483647; // Tipe data Integer
$float = 9223372036854775807; //Tipe data Float
$string = "Hello World"; //Tipe data String
$array = newArray("1", "2", "3"); //Tipe data Array
$kosong = NULL; //Tipe data NULL
Kode Program 2. 9. Sintaks assignment variable dan penentuan datatype pada PHP
Coding di atas merupakan contoh untuk meng-assign variable dengan
nilai tertentu. Proses deklarasi tipe data pada PHP dilakukan secara otomatis saat
melakukan assignment nilai pada variable PHP kecuali pada tipe data array.
f. Operasi aritmatika
Beberapa operasi aritmatika yang didukung oleh PHP adalah sebagai
berikut
46
Tabel 2. 6. Daftar operasi aritmatika yang didukung PHP
Operasi aritmatika Arti + Penjumlahan - Pengurangan * Perkalian / Pembagian = Operasi assignment == Sama dengan (nilai saja) != Tidak sama dengan (nilai saja) === Sama dengan (nilai dan tipe data) !== Tidak sama dengan (nilai dan tipe data) < Lebih kecil dari <= Lebih kecil atau sama dengan dari > Lebih besar dari >= Lebih besar atau sama dengan dari && Operasi AND pada nilai dalam bentuk
biner || Operasi OR pada nilai dalam bentuk
biner << Pergeseran nilai dalam bentuk angka
biner ke kiri sebanyak nilai di sebelah kanan operator
>> Pergeseran nilai dalam bentuk angka biner ke kanan sebanyak nilai di sebelah kanan operator
Tanda kurung ((...)) Operasi precedence. Apapun operasi aritmatika yang diapit oleh tanda kurung selalu dikerjakan terlebih dahulu.
Tabel di atas adalah daftar operator aritmatika yang didukung oleh PHP.
Operasi aritmatika dapat dilakukan antara 2 nilai eksak, antara 2 variable, dan
antara nilai eksak dengan variable atau sebaliknya. Hasil operasi aritmatika dari
PHP dapat disimpan ke dalam variable baru atau langsung ditampilkan ke layar
dengan sintaks echo atau printf.
Berikut adalah contoh operasi aritmatika dalam PHP.
$a = 2;
$b = 3;
echo $a + $b; //Menghasilkan nilai 5 ke dalam layar
47
$c = $a + $b; //Menyimpan nilai 5 ke dalam variable $c
Kode Program 2. 10. Sintaks operasi aritmatika dalam PHP
Coding di atas merupakan contoh operasi aritmatika Penjumlahan pada
PHP. PHP dapat menghasilkan hasil dari operasi aritmatika melalui 2 cara, yaitu
dengan cara langsung menampilkannya ke layar dan dengan menyimpan hasilnya
ke dalam variable baru.
g. Function
PHP memiliki kemampuan untuk mendefinisikan dan menjalankan
function yang ditulis oleh developer itu sendiri. Beberapa aturan dalam definisi
function pada PHP adalah sebagai berikut:
1) Function hanya bisa direferensikan dengan nama function itu sendiri secara
langsung atau secara dinamis melalui variable yang berisi nama pada function
tersebut (disebut sebagai variable functions)
2) Function dalam PHP dapat dibuat tanpa harus di-prototype-kan (diturunkan
dari function lainnya)
3) Function dapat didefinisikan di dalam blok kode, memungkinkan run-time
decision untuk menentukan apakah function tersebut perlu didefinisikan atau
tidak
4) Pemanggilan function harus menggunakan tanda kurung (), kecuali pada class
constructor yang bersifat zero argument, function dibuat dan dipanggil dengan
operator new, tanda kurung () bersifat opsional
Berikut ini adalah contoh penulisan function pada PHP.
function myAge($birthYear){
$yearsOld = date('Y') - $birthYear;
return $yearsOld . ' year' . ($yearsOld != 1 ? 's' : '');
}
echo 'I am currently ' . myAge(1981) . ' old.';
48
//Output: 'I am currently 33 years old.'
Sumber: http://en.wikipedia.org/wiki/PHP
Kode Program 2. 11. Sintaks penulisan function pada PHP
Coding di atas adalah contoh dari deklarasi function pada PHP. Deklarasi
function dilakukan dengan cara mengetikkan keyword function yang diikuti
dengan nama function dan variable parameter yang dibutuhkan di dalam apit
tanda kurung. Perintah dalam function ditulis di dalam apit tanda kurung keriting.
Pemanggilan function pada PHP dilakukan dengan cara menyebutkan langsung
nama function-nya dengan menyertakan semua parameter yang dibutuhkan di
dalam tanda kurung.
h. Object Oriented Programming (OOP)
PHP memiliki kemampuan untuk membuat program web berdasarkan
Object Oriented Programming (OOP) yang mulai diperkenalkan pada PHP versi
3 dan disempurnakan pada PHP versi 4. Penanganan object sepenuhnya ditulis
ulang pada PHP versi 5, memperluas feature set dan meningkatkan perfoma. PHP
versi sebelumnya memperlakukan object sebagai value type (tipe nilai).
Konsekuensi dari metode ini adalah keseluruhan object tersebut harus di-copy
ketika variable di-assigned (diberikan nilai) atau di-passing (dilewatkan) ke dalam
method. Oleh karena itu, PHP menggunakan cara baru, yaitu mereferensikan
object melalui handle, bukan melalui value (nilai).
PHP 5 memperkenalkan mode private dan protected pada member
variables dan method, bersamaan dengan fitur abstract classes, final classes,
abstract method, dan final methods. PHP 5 juga memperkenalkan cara baku untuk
mendeklarasikan constructor dan destructor, dan model baku dalam exception
handling. PHP 5 juga menambahkan fitur interface dan memungkinkan beberapa
interface diimplementasikan dalam waktu bersamaan. Pada PHP 5, terdapat
interface khusus yang memungkinkan object berinteraksi dengan sistem runtime.
Objects yang mengimplementasikan ArrayAccess dapat digunakan dengan sintaks
array dan Objects yang mengimplementasikan iterator atau iterator aggregate
49
bisa digunakan untuk language construct foreach. Pada PHP 5 tidak ada fitur
virtual table, sehingga static variables bukan terikat pada reference namun
dengan nama object saat melakukan compile.
Developer yang membuat copy dari object menggunakan reserved word
clone memicu Zend Engine pada PHP untuk memeriksa apakah method
__clone() sudah digunakan. Jika method __clone() belum dipakai, maka PHP
akan memanggil method default __clone() yang akan menyalin properties dari
object. Jika method __clone() sudah dipakai, maka developer harus mengatur
properties yang dibutuhkan di dalam object yang telah dibuat. Untuk kenyamanan
developer, engine dari PHP menawarkan function yang mampu untuk meng-
import properties dari object sumber, sehingga developer bisa memulai dengan
replika by-value pada object sumber dan hanya meng-override properties yang
perlu diubah.
Berikut adalah contoh dasar dari penulisan kode object oriented
programming pada PHP.
class Person
{
public $firstName;
public $lastName;
public function __construct($firstName, $lastName = '') { //
optional second argument
$this->firstName = $firstName;
$this->lastName = $lastName;
}
public function greet() {
return 'Hello, my name is ' . $this->firstName .
(($this->lastName != '') ? (' ' . $this->lastName)
: '') . '.';
}
public static function staticGreet($firstName, $lastName) {
50
return 'Hello, my name is ' . $firstName . ' ' . $lastName
. '.';
}
}
$he = new Person('John', 'Smith');
$she = new Person('Sally', 'Davis');
$other = new Person('iAmine');
echo $he->greet(); // prints "Hello, my name is John Smith."
echo '<br />';
echo $she->greet(); // prints "Hello, my name is Sally Davis."
echo '<br />';
echo $other->greet(); // prints "Hello, my name is iAmine."
echo '<br />';
echo Person::staticGreet('Jane', 'Doe'); // prints "Hello, my name
is Jane Doe."
Sumber: http://en.wikipedia.org/wiki/PHP
Kode Program 2. 12. Sintaks Object Oriented Programming (OOP) pada PHP
Coding di atas adalah contoh untuk mendefinisikan object lengkap dengan
class beserta method pada object tersebut. Class person memiliki properties
$firstname dan $lastname, method __construct dan greet(), dan method
static staticGreet.
Tingkat visibilitas pada properties dan methods pada PHP ditentukan oleh
keyword public, private, dan protected. Pengaturan default pada tingkat
visibilitas adalah public. Berikut adalah definisi dari ketiga keyword pada tingkat
visibilitas PHP:
1) Public bisa diakses di mana saja
2) Protected hanya bisa diakses oleh class yang mendefinisikan item tersebut
dan class turunannya.
51
3) Private hanya bisa diakses oleh class yang mendefinisikan item tersebut.
Object yang memiliki tipe yang sama memiliki akses pada item yang
memiliki tingkat visibilitas protected dan private antara satu dengan lainnya
walaupun dijalankan pada instance yang berbeda.
2.4.2. Client-side web programming
Client-Side Web Programming (yang juga disebut sebagai Client-Side
Scripting) adalah pemrograman web yang ditujukan untuk dijalankan pada sisi
client dan script-nya dieksekusi oleh web browser pada client. Pada Client-Side
Web Programming, semua perubahan langsung tampak pada pengguna karena
semua perintah atau coding dieksekusi oleh browser tanpa menunggu respon dari
server, oleh karena itu, umumnya Client-Side Web Programming digunakan untuk
mengembangkan halaman web dinamis. Client-Side Web Programming adalah
komponen penting untuk konsep Dynamic HTML (DHTML), memungkinkan
halaman web untuk ditanamkan script, dan memungkinkan untuk mengubah
konten berdasarkan pada masukan dari pengguna, kondisi-kondisi tertentu (seperti
jam), dan variabel-variabel lainnya.
Beberapa bahasa pemrograman client-side programming yang umum
dipakai adalah HTML, JavaScript, dan JQuery.
2.4.2.1. HTML
Pembahasan pada subbab ini menjelaskan pengertian dari HTML, sejarah
HTML, sintaks dalam HTML, dan semua hal lainnya yang berhubungan dengan
HTML.
1. Pengertian HTML
HTML atau HyperText Markup Language merupakan standar bahasa
markup yang digunakan untuk membuat halaman web (Wikipedia, 2014).
Web browser bisa membaca file HTML dan menulisnya ke dalam halaman
web yang dapat dilihat atau didengar oleh manusia. Web browser tidak
menampilkan HTML tag, tetapi digunakan untuk menginterpretasikan isi halaman.
52
HTML mendeskripsikan struktur dari sebuah situs web secara semantik bersama
dengan isyarat untuk presentasi, sehingga menjadikan HTML menjadi bahasa
markup daripada bahasa pemrograman.
Elemen HTML membentuk building blocks dari semua situs. HTML
memungkinkan gambar dan objek untuk ditanam dan dapat digunakan untuk
membuat bentuk-bentuk interaktif. HTML menyediakan sarana untuk membuat
dokumen terstruktur dengan cara menunjukkan struktur semantik untuk teks
seperti judul, paragraf, daftar, link, kutipan dan item lainnya. Hal ini dapat
dilakukan dengan cara menanamkan script yang ditulis dalam bahasa seperti
JavaScript yang mengatur perilaku dari halaman web HTML.
Web browser juga dapat merujuk kepada Cascading Style Sheets (CSS)
untuk menentukan tampilan dan tata letak teks dan materi lain. The W3C,
maintainer untuk HTML dan CSS, mendorong penggunaan CSS melalui HTML
presentasional yang eksplisit.
2. Sejarah HTML
Menurut Wikipedia (2014), pada tahun 1980, tim fisikawan Berners-Lee,
yang merupakan seorang kontraktor di CERN, mengusulkan dan membuat
prototype ENQUIRE, sebuah sistem untuk penelitian CERN untuk menggunakan
dan berbagi dokumen. Pada tahun 1989, Berners-Lee menulis sebuah memo untuk
mengusulkan Internet berbasis sistem hypertext. Berners-Lee menentukan format
HTML dan menulis perangkat lunak browser dan server pada akhir tahun 1990.
Pada tahun tersebut, Berners-Lee dan insinyur sistem data CERN berkolaborasi
pada permintaan bersama untuk pendanaan, namun proyek ini diadopsi oleh
CERN secara tidak resmi. Dalam catatan pribadinya dari tahun 1990, dia mencatat
"beberapa dari banyak area yang menggunakan hypertext" dan meletakkannya
pada ensiklopedia untuk pertama kalinya.
Versi pertama dari deskripsi HTML yang tersedia untuk publik adalah
sebuah dokumen yang disebut "HTML tags", yang dipublikasikan pertama kali
pada Internet oleh Berners-Lee pada akhir 1991. Dokumen tersebut menjelaskan
18 elemen yang terdiri dari awal mula dan desain yang sederhana dari HTML.
53
kecuali untuk tag Hyperlink, tag tersebut secara kuat dipengaruhi oleh SGMLguid,
sebuah format dokumentasi berbasis SGML pada CERN. Sebelas dari elemen
tersebut tetap masih ada di dalam HTML 4.
HyperText Markup Language adalah bahasa markup yang digunakan web
browser untuk menginterpretasikan dan menulis teks, gambar dan material
lainnya ke dalam halaman web visual atau yang bisa didengar. Karakteristik
default untuk setiap item dari HTML markup didefinisikan dalam browser, dan
karakteristik ini dapat diubah atau ditingkatkan dengan penggunaan desainer
halaman web dari CSS. Banyak elemen teks ditemukan di 1988 ISO laporan teknis
TR 9537 Technique for using SGM004C, yang pada gilirannya meliputi fitur
format bahasa teks yang lebih awal seperti yang digunakan oleh RUNOFF
command yang dikembangkan pada awal 1960-an untuk sistem operasi CTSS
(Compatible Time-Sharing System): perintah dari format tersebut berasal dari
perintah yang digunakan oleh typesetters untuk memformat dokumen secara
manual. Namun, konsep SGML pada markup yang digeneralisasi tersebut
didasarkan pada element-element (rentang dijelaskan bersarang dengan atribut)
daripada hanya mencetak efek, dengan juga pemisahan struktur dan markup;
HTML telah semakin bergerak secara progresif ke arah ini dengan CSS.
Berners-Lee menilai HTML bisa menjadi aplikasi SGML. Hal ini secara
resmi didefinisikan seperti halnya oleh Internet Engineering Task Force (IETF)
dalam publikasi pada pertengahan 1993 dari proposal pertama untuk spesifikasi
HTML: "Hypertext Markup Language (HTML)" Internet-Draft oleh Berners-Lee
dan Dan Connolly, yang sudah termasuk dalam SGML Document Type Definition
untuk mendefinisikan tata bahasa (grammar). Draft tersebut berlaku selama enam
bulan, tapi draft tersebut terkenal dengan pernyataan resmi dari NCSA Mosaic
browser custom tag untuk menanamkan gambar in-line, mencerminkan filosofi
IETF berdasarkan standar pada prototipe yang sukses. Demikian pula, Dave
Raggett's bersaing dengan internet Draft, "HTML+ (Hypertext Markup Format)",
sejak akhir 1993, menyarankan untuk standardisasi fitur yang sudah
diimplementasikan seperti tabel dan fill-out forms.
54
Setelah draft dari HTML dan HTML+ berakhir pada awal tahun 1994,
IETF menciptakan Kelompok HTML Working, yang pada tahun 1995 telah
menyelesaikan "HTML 2.0", spesifikasi HTML pertama yang ditujukan untuk
diperlakukan sebagai standar yang ditujukan untuk basis implementasi di masa
mendatang.
Pengembangan lebih lanjut di bawah kendali IETF telah terhenti karena
kecenderungan bersaing. Sejak tahun 1996, spesifikasi HTML telah
dipertahankan, dengan masukan dari vendor perangkat lunak komersial, oleh
World Wide Web Consortium (W3C). Namun, pada tahun 2000, HTML juga
menjadi standar internasional (ISO/IEC 15445: 2000). HTML 4.01 dirilis pada
akhir tahun 1999, dengan perbaikan lebih lanjut dipublikasikan pada tahun 2001.
Pada tahun 2004, perkembangannya dimulai pada HTML5 dalam aplikasi Web
Hypertext Application Technology Working Group (WHATWG), yang telah
menjadi joint deliverable bersama dengan W3C pada tahun 2008.
3. Timeline perkembangan Versi HTML
Menurut Wikipedia (2014), timeline dari perkembangan HTML dapat
dilihat pada pembahasan berikut ini.
a. HTML 2.0, 24 November 1995
HTML 2.0 dipublikasikan sebagai IETF RFC 1866. Berikut adalah
kemampuan RFC supplemental yang telah ditambahkan:
1) November 25, 1995: RFC 1867. Spesifikasi ini membahas file upload melalui
form pada HTML.
2) Mei 1996: RFC 1942. Spesifikasi ini membahas HTML Tables pada HTML
3) Agustus 1996: RFC 1980. Spesifikasi ini membahas client-side image maps
pada HTML
4) Januari 1997: RFC 2070. Internationalization pada HTML
b. HTML 3.2, Januari 1997
HTML 3.2 dipublikasikan sesuai dengan Rekomendasi dari W3C. Versi ini
adalah versi pertama yang dikembangkan dan distandarisasi secara eksklusif oleh
55
W3C, sebagai dampak dari IETF telah menutup HTML Working Group miliknya
pada bulan September 1996.
HTML 3.2 memiliki codename "Wilbur", HTML 3.2 menghilangkan rumus
matematika sepenuhnya, hal ini dilakukan untuk mengatasi tumpang tindih dari
berbagai ekstensi proprietary dan mengadopsi sebagian besar dari visual markup
tags dari Netscape. Elemen berkedip (blink) dari Netscape dan elemen marquee
dari Microsoft dihilangkan karena kesepakatan bersama antara kedua perusahaan
tersebut. Markup untuk rumus matematika yang identik dengan di dalam HTML
tidak distandarisasi sampai 14 bulan kemudian distandarisasi kembali di MathML.
c. HTML 4.0, Desember 1997
HTML 4.0 dipublikasikan sesuai dengan Rekomendasi dari W3C. HTML
4.0 ini menawarkan tiga varian:
1) Strict, varian yang melarang elemen yang deprecated,
2) Transitional, varian yang mengizinkan elemen yang deprecated,
3) Frameset, varian yang kebanyakan hanya mengizinkan elemen yang
berhubungan dengan frame
Pada awalnya, HTML 4.0 memiliki codename bernama "Cougar", HTML
4.0 mengadopsi tipe dan atribut elemen yang browser-specific, tapi pada saat yang
sama juga berusaha untuk membuang fitur visual markup dari Netscape dengan
menandai mereka sebagai deprecated untuk mendukung style sheet. HTML 4
adalah sebuah aplikasi SGML yang memenuhi standar ISO 8879 – SGML.
d. HTML 4.0, April 1998
HTML 4.0 dipublikasikan kembali dengan perubahan skala minor tanpa
peningkatan pada nomor versi.
e. HTML 4.01, Desember 1999
HTML 4.01 dipublikasikan sesuai dengan rekomendasi W3C. HTML 4.01
menawarkan tiga varian yang sama sebagai HTML 4.0 dan versi ini merupakan
versi errata yang terakhir yang dipublikasikan pada 12 Mei 2001.
56
f. ISO/IEC 15445:2000, Mei 2000
ISO/IEC 15445:2000 ("ISO HTML", berdasarkan HTML 4.01 Strict)
dipublikasikan sebagai standar internasional IEC/ISO. Dalam ISO, standar ini
jatuh pada domain dari ISO/IEC JTC1/SC34 (ISO/IEC Joint Technical Committee
1, Subcommittee 34 – Document description and processing languages).
Pada pertengahan 2008, HTML 4.01 dan ISO/IEC 15445:2000 adalah versi
terbaru dari HTML. Pengembangan paralel, bahasa berbasis XML XHTML
menduduki Kelompok Kerja HTML W3C melalui awal dan pertengahan 2000-an.
4. Sintaks dalam HTML
a. Sintaks secara umum
HTML ditulis dalam bentuk elemen HTML yang biasanya terdiri dari tag
yang ditutup dalam kurung sudut (seperti <html>). Tag HTML yang paling sering
muncul umumnya berpasangan seperti <h1> dan </h1>, namun ada beberapa tag
yang berupa elemen kosong atau elemen yang tidak berpasangan, misalnya <img>.
Tag yang pertama dalam pasangan adalah tag awal, dan tag yang kedua adalah
tag akhir (mereka juga disebut tag pembuka dan tag penutup).
b. Markup
HTML markup terdiri dari beberapa komponen kunci, termasuk tag (dan
atributnya), tipe data berbasis karakter, karakter referensi dan referensi entitas.
Komponen penting lainnya adalah deklarasi jenis dokumen, yang men-trigger
standar jenis rendering.
<!DOCTYPE html>
<html>
<head>
<title>This is a title</title>
</head>
<body>
<p>Hello world!</p>
57
</body>
</html>
Sumber: http://en.wikipedia.org/wiki/HTML
Kode Program 2. 13. Contoh sintaks HTML Markup
c. Elements
Bentuk umum dari sebuah elemen HTML adalah: <tag
attribute1="value1" attribute2="value2"> content </tag>. Beberapa
elemen HTML didefinisikan sebagai elemen kosong dan memiliki bentuk <tag
attribute1="value1" attribute2="value2" >. Elemen kosong bisa
menyatakan tidak ada konten, misalnya, tag <br/> atau tag inline img. Nama
elemen HTML adalah nama yang digunakan di dalam tag. Perhatikan bahwa akhir
dari nama tag ini didahului oleh karakter slash, "/", dan oleh karena itu di dalam
elemen kosong, tag akhir tidak diharuskan atau diizinkan. Jika atribut tidak
disebutkan, nilai-nilai default yang digunakan dalam setiap kasus.
d. Header dokumen
Header pada halaman HTML ditandai dengan tag <head>...</head>
<head>
<title>The Title</title>
</head>
Sumber: http://en.wikipedia.org/wiki/HTML
Kode Program 2. 14. Sintaks header pada dokumen HTML
e. Heading (bab) pada HTML
Headings: HTML headings didefinisikan dengan tag dari <h1> sampai
dengan <h6>:
<h1>Heading level 1</h1>
<h2>Heading level 2</h2>
<h3>Heading level 3</h3>
<h4>Heading level 4</h4>
58
<h5>Heading level 5</h5>
<h6>Heading level 6</h6>
Sumber: http://en.wikipedia.org/wiki/HTML
Kode Program 2. 15. Sintaks Heading pada HTML
f. Paragraf
Paragraf pada halaman HTML ditandai dengan tag <p>...</p>
<p>Paragraph 1</p> <p>Paragraph 2</p>
Sumber: http://en.wikipedia.org/wiki/HTML
Kode Program 2. 16. Sintaks paragraf pada HTML
g. Line breaks
Line breaks juga disebut <br>. Perbedaan antara <br> dan <p> adalah
<br> membuat baris baru (line break) tanpa mengubah struktur semantik halaman,
sedangkan <p> adalah membagi halaman ke dalam beberapa paragraf. Perhatikan
juga bahwa <br> merupakan elemen kosong dan oleh karena itu, ketika tag <br>
memiliki atribut, tag tersebut tidak bisa menampilkan konten dan tidak boleh
memiliki tag akhir.
<p>This <br> is a paragraph <br> with <br> line breaks</p>
Sumber: http://en.wikipedia.org/wiki/HTML
Kode Program 2. 17. Sintaks line break pada HTML
h. Link
Untuk membuat link, developer harus menggunakan tag <a>. atribut href=
menyimpan alamat URL dari link.
<a href="http://www.google.com/">A Link to Google!</a>
Sumber: http://en.wikipedia.org/wiki/HTML
Kode Program 2. 18. Sintaks link pada HTML
59
i. Komentar
Komentar dapat membantu dalam memahami markup dan tidak
ditampilkan dalam halaman web.
<!-- This is a comment -->
Sumber: http://en.wikipedia.org/wiki/HTML
Kode Program 2. 19. Sintaks comment pada HTML
j. Atribut
Ada beberapa atribut umum yang mungkin muncul dalam banyak elemen:
1) Atribut id digunakan sebagai tanda pengenal unik dalam tingkat dokumen
untuk sebuah elemen. Atribut ini digunakan untuk mengidentifikasi elemen
sehingga stylesheet dapat mengubah properties yang bersifat presentasional,
dan memungkinkan script dapat mengubah, menganimasikan atau menghapus
konten atau presentasi. Ditambahkan ke dalam halaman URL, atribut id
menyediakan identifikasi unik secara global untuk elemen, umumnya pada
sub-bagian dalam halaman. Sebagai contoh, atribut id di pada halaman
http://en.wikipedia.org/wiki/HTML#Attributes
2) Atribut class menyediakan cara untuk mengklasifikasi elemen yang sama.
Hal ini dapat digunakan untuk penggunaan semantik atau presentasi. Sebagai
contoh, sebuah dokumen HTML mungkin secara semantis menggunakan
penunjukan class="notation" untuk menunjukkan bahwa semua elemen
dengan class value ini adalah subordinate dari teks utama dokumen. Dalam
presentasinya, unsur-unsur tersebut mungkin berkumpul dan disajikan sebagai
catatan kaki pada page bukannya muncul di tempat mereka dituliskan pada
HTML source. Atribut class digunakan secara semantis dalam microformats.
Nilai kelas dapat didefinisikan sebanyak lebih dari 1, misalnya
class="notation important" menempatkan elemen ke dalam kedua class
tersebut, yaitu class 'notation' dan class 'important'.
3) Developer dapat menggunakan atribut style untuk menetapkan properties
presentasional untuk elemen tertentu. Hal ini dianggap praktik yang lebih baik
60
untuk menggunakan elemen atribut id atau class untuk memilih elemen
dari dalam stylesheet, meskipun kadang-kadang ini bisa menjadi terlalu rumit
untuk styling secara sederhana, spesifik, atau ad hoc.
4) Atribut title digunakan untuk melampirkan penjelasan subtextual ke elemen.
Dalam kebanyakan browser, atribut ini ditampilkan sebagai tooltip.
5) Atribut lang mengidentifikasi bahasa default dari isi elemen, yang
kemungkinan berbeda dari dokumen lainnya. Misalnya, dalam dokumen
berbahasa Inggris:
<P> Oh well, <span lang = "fr"> c'est la vie </ div>, seperti yang
mereka katakan di Perancis. </ P>
Sumber: http://en.wikipedia.org/wiki/HTML
Kode Program 2. 20. Sintaks atribut dengan <span lang> pada HTML
6) Elemen abbreviation, abbr, dapat digunakan untuk menunjukkan beberapa
atribut seperti di bawah ini:
<Abbr id = "anId" class = "jargon" style = "color: purple;" title
= "Hypertext Markup Language"> HTML </ abbr>
Sumber: http://en.wikipedia.org/wiki/HTML
Kode Program 2. 21. Sintaks abbr pada HTML
Coding di atas adalah contoh dari penggunaan elemen abbr. Contoh ini
akan ditampilkan sebagai HTML di hampir semua browser, menaruh kursor di atas
teks tersebut akan menampilkan teks judul "Hypertext Markup Language".
5. Media Penyampaian
Dokumen HTML dapat disampaikan dengan cara yang sama seperti file
komputer lainnya. Namun, HTML paling sering disampaikan melalui perantara
HTTP dari aplikasi web server atau melalui perantara email.
61
a. Protokol HTTP
World Wide Web yang dikarang secara utama dari dokumen HTML
dikirimkan dari Web Server ke browser menggunakan protokol Hypertext
Transfer Protocol (HTTP). Namun, HTTP digunakan untuk melayani gambar,
suara, dan konten lainnya, selain file HTML. Untuk memungkinkan browser untuk
mengetahui bagaimana cara menangani setiap dokumen yang diterimanya,
informasi lainnya dikirim bersamaan dengan dokumen, contohnya metadata.
Metadata ini biasanya meliputi MIME type (misalnya text/html atau
application/xhtml+xml) dan character encoding (misalnya Windows-1252,
ISO/8859-1, atau UTF-8).
Pada browser modern, jenis MIME yang dikirim dengan dokumen HTML
dapat mempengaruhi bagaimana dokumen tersebut diinterpretasikan dari awal.
Dokumen dengan tipe MIME XHTML diinterpretasikan sebagai tipe well-formed
XML; kesalahan sintaks dapat menyebabkan browser gagal untuk me-render
dokumen tersebut. Dokumen yang sama dikirim dengan tipe HTML MIME
mungkin berhasil ditampilkan, karena beberapa browser dapat lebih lunak dengan
HTML.
Rekomendasi W3C menyatakan bahwa dokumen XHTML 1.0 yang
mengikuti pedoman yang ditetapkan dalam rekomendasi Lampiran C dapat
dilabeli dengan tipe MIME. XHTML 1.1 juga menyatakan bahwa dokumen
XHTML 1.1 harus dilabeli dengan tipe MIME yang sama.
b. HTML e-mail
Kebanyakan email client berbasis grafis memungkinkan penggunaan
subset dari HTML untuk memberikan format dan markup semantik yang tidak
tersedia pada plain text. Hal ini juga termasuk informasi tipografi seperti judul
berwarna, teks yang emphasis dan berisi tanda kutip, gambar dan diagram inline.
Banyak klien termasuk GUI editor untuk menulis pesan e-mail HTML dan
rendering engine untuk menampilkan HTML email. Penggunaan HTML dalam e-
mail ini bersifat kontroversial karena beberapa alasan, yaitu karena masalah
kompatibilitas, karena dapat membantu menyamarkan serangan phising, karena
62
masalah aksesibilitas bagi orang-orang buta atau tunanetra, karena dapat
membingungkan spam filter dan karena ukuran pesan email lebih besar daripada
plain text.
c. HTML Application
HTML Application (HTA, ekstensi file ".hta") adalah aplikasi berbasis
Microsoft Windows yang menggunakan HTML dan Dynamic HTML dalam
browser untuk menyediakan aplikasi dengan antarmuka berbasis grafis. Sebuah
file HTML biasa hanya terbatas pada model keamanan dari keamanan web
browser, berkomunikasi hanya untuk web server dan memanipulasi hanya objek-
objek dari halaman web dan cookie dari sebuah situs. HTML Applocation (HTA)
berjalan sebagai aplikasi yang sepenuhnya dipercaya dan oleh karena itu memiliki
lebih banyak keistimewaan, misalnya membuat/mengubah/menghapus file dan
entri Registry. HTML Application beroperasi di luar model keamanan browser,
sehingga HTA tidak dapat dijalankan melalui HTTP, tetapi harus di-download
(sama seperti file EXE) dan dijalankan dari sistem file lokal.
2.4.2.2. JavaScript
Pembahasan pada subbab ini menjelaskan pengertian dari JavaScript,
fitur-fitur pada JavaScript, dan sintaks dalam javaScript
1. Pengertian JavaScript
JavaScript adalah bahasa pemrograman komputer dinamis, dan umumnya
digunakan sebagai bagian dari web browser, yang implementasinya
memungkinkan client-side scripts berinteraksi dengan pengguna, mengendalikan
browser, berkomunikasi secara asynchronous, dan memanipulasi konten dokumen
yang bisa ditampilkan (David Flanagan, 2006).
JavaScript dikembangkan oleh Brendan Eich, saat bekerja di dalam
Netscape Communications Corporation. Sebelumnya, bahasa pemrograman ini
dikembangkan dengan nama mocha, bahasa tersebut memiliki nama resmi
LiveScript ketika dirilis pertama kali pada Netscape Navigator 2.0 pada
63
September 1995, dan kemudian namanya berubah menjadi JavaScript ketika
dirilis satu paket dengan Netscape Navigator 2.0B3
JavaScript sangat cepat menerima kesuksesan sebagai bahasa
pemrograman client-side scripting untuk halaman web, sehingga Microsoft
memasukkan dukungan JavaScript pada web browser andalannya, Internet
Explorer 3.0 yang dirilis pada Agustus 1996. Pada Juni 1997, ECMA
International menerbitkan edisi pertama dari spesifikasi ECMA-262. Pada Juni
1998, beberapa perubahan dilakukan untuk penyesuaian pada standar ISO/IEC-
16262, dan kemudian dirilis sebagai edisi kedua dari spesifikasi ECMA-262. Dan
kemudian edisi ketiga dirilis pada Desember 1999.
Pada November 1996, Netscape mengumukan bahwa mereka telah
mendaftarkan JavaScript ke dalam ECMA International dengan pertimbangan
sebagai standar industri, dan selanjutnya menghasilkan versi standar bernama
ECMAScript. Pengembangan untuk edisi keempat dari standar ECMAScript tidak
pernah dilakukan dan tidak ada perilisan untuk edisi keempat. Edisi kelima dirilis
pada Desember 2009. Standar ECMAScript saat ini adalah ECMAScript 5.1, dirilis
pada Juni 2011.
Meskipun JavaScript memiliki beberapa kesamaan dengan Java seperti
penamaan, sintaks, dan standard library, JavaScript tidak berhubungan sama
sekali dengan Java dan memiliki semantik yang sangat berbeda. Sintaks
JavaScript sebenarnya diturunkan dari bahasa C, namun semantik dan desainnya
dipengaruhi oleh bahasa pemrograman self dan scheme.
JavaScript diresmikan dalam standar bahasa ECMAScript dan digunakan
sebagai bagian dari web browser. Hal ini memungkinkan akses secara
programmatic menuju objek dalam lingkungan sumber.
64
2. Fitur-fitur dalam JavaScript
Menurut Wikipedia (2014), daftar berikut ini adalah beberapa fitur dari
bahasa pemrograman JavaScript:
a. Imperatif dan terstruktur
JavaScript mendukung banyak sintaks pemrograman terstruktur dari C
(misalnya pernyataan if, perulangan while, pernyataan switch, dll), kecuali pada
bagian scoping, JavaScript tidak mendukung block scoping bergaya bahasa C,
tetapi pada JavaScript versi 1.7, JavaScript menggunakan block scoping dengan
kata kunci let. Satu perbedaan sintaksis dari C adalah penyisipan titik koma
otomatis, yang memungkinkan titik koma yang biasanya mengakhiri statement
untuk diabaikan.
b. Dinamis
1) Pengetikan Dinamis
Seperti halnya kebanyakan bahasa scripting, tipe data terkait dengan nilai-
nilai, bukan dengan variabel. Misalnya, variabel x dapat berbentuk integer, namun
kemudian dapat berubah menjadi string. JavaScript mendukung berbagai cara
untuk menguji tipe objek, termasuk duck typing.
2) Berbasis Objek
JavaScript hampir seluruhnya berbasis objek. Objek pada JavaScript
berupa array asosiatif, ditambah dengan prototype. Nama properti objek berupa
string. Objek tersebut mendukung dua sintaks yang sama, yaitu notasi titik (obj.x
= 10) dan notasi braket (obj['x'] = 10). Properties dan nilai-nilai pada objek
dapat ditambahkan, diubah, atau dihapus pada run-time. Sebagian besar properties
pada objek (dan properties pada rantai turunan prototipe) bisa dihitung
menggunakan dalam perulangan for...in. JavaScript memiliki sejumlah kecil
pada objek built-in seperti Function dan Date.
65
3) Run-time evaluation
JavaScript memasukkan fungsi eval yang bisa mengeksekusi statement
yang dimasukkan dalam bentuk string pada run-time.
c. Fungsional
1) First-class function
Fungsi adalah kelas pertama, mereka adalah obyek itu sendiri. Dengan
demikian, mereka memiliki properti dan metode, seperti .call() dan .bind().
Nested function adalah fungsi yang didefinisikan di dalam fungsi yang lain. Hal
ini dibuat setiap kali fungsi luar dipanggil. Selain itu, masing-masing fungsi yang
dibuat membentuk lexical closure, yaitu lexical scope dari fungsi luar, termasuk
konstanta, variabel lokal dan nilai-nilai argumen, menjadi bagian dari pernyataan
internal dari setiap objek fungsi dalam, bahkan setelah eksekusi dari penutupan
fungsi luar.
d. Berbasis Prototype
1) Prototype
JavaScript menggunakan prototipe ketika banyak bahasa pemrograman
berorientasi objek lainnya menggunakan class untuk pewarisan. Hal ini
memungkinkan untuk mensimulasikan banyak fitur berbasis class dengan
prototype di dalam JavaScript.
2) Function sebagai object constructor
Function yang juga berfungsi sebagai sebagai object constructor bersama
dengan role khas mereka. Memulai pemanggilan function dengan new akan
membuat instance baru dari sebuah prototipe, mewarisi properties dan method
dari constructor (termasuk properties dari prototype object). ECMAScript 5
menawarkan method Object.create, yang memungkinkan penciptaan eksplisit
dari sebuah instance tanpa otomatis mewarisi dari prototipe Object (pada
lingkungan yang lebih tua dapat meng-assign prototype ke null ). Constructor
dari properti prototype menentukan objek yang digunakan untuk prototipe internal
66
objek baru. Method baru dapat ditambahkan dengan cara mengubah prototype dari
object yang digunakan sebagai constructor. Constructor bawaan JavaScript,
seperti array atau object, juga memiliki prototipe yang dapat diubah. Walaupun
dimungkinkan untuk mengubah prototype object, biasanya dianggap tindakan
yang buruk karena sebagian besar object dalam JavaScript akan mewarisi method
dan properties dari prototype object dan object tersebut tidak dapat menggunakan
prototype yang diubah.
3) Functions sebagai method
Tidak seperti kebanyakan bahasa pemrograman berbasis objek, di dalam
JavaScript tidak ada perbedaan antara definisi function dan definisi method.
Namun sebaliknya, perbedaan terjadi ketika pemanggilan function, ketika function
tersebut dipanggil sebagai method atau object, keyword this pada fungsi lokal
adalah penanda untuk objek yang bersangkutan untuk Pemanggilan tersebut.
e. Delegasi implisit dan eksplisit
1) Function sebagai role
JavaScript secara native mendukung berbagai implementasi function
berbasis pola role seperti traits dan mixins. Fungsi tersebut mendefinisikan
perilaku tambahan dengan setidaknya satu method yang terikat dengan kata kunci
this dengan function body miliknya. Sebuah role kemudian telah didelegasikan
secara eksplisit melalui call atau apply untuk objek yang perlu memiliki
perilaku yang tidak di-share melalui rantai prototype
2) Komposisi object dan pewarisan
Delegasi eksplisit berbasis function telah mencakup object composition
dalam JavaScript. Delegasi implisit sudah terjadi setiap kali rantai prototype
berjalan misalnya untuk mencari method yang mungkin terkait dengan object
tersebut tetapi tidak dimiliki secara langsung. Setelah method ini ditemukan,
method tersebut dipanggil dalam konteks object ini. Dengan demikian, pewarisan
67
di JavaScript mencakup Otomatisasi delegasi yang kerkait pada properti prototype
pada constructor function.
f. Lain-lain
1) Lingkungan run-time
JavaScript umumnya bergantung pada lingkungan run-time (misalnya web
browser) untuk menawarkan object dan method yang memungkinkan script dapat
berinteraksi dengan lingkungan (misalnya DOM pada halaman web). Hal ini juga
bergantung pada lingkungan run-time untuk memberikan kemampuan untuk
menyertakan/mengimport script (misalnya elemen HTML <script>). Hal ini
bukan merupakan fitur bahasa per se, tapi hal itu adalah hal umum di sebagian
besar implementasi JavaScript.
2) Variadic function
Jumlah parameter yang tak terbatas dapat dimasukkan ke dalam function.
Function dapat mengaksesnya melalui parameter formal dan juga melalui object
lokal arguments. Variadic function juga dapat dibuat dengan menggunakan
method apply.
3) Literal array dan object
Seperti kebanyakan bahasa pemrograman, arrays dan objects (associative
arrays pada bahasa lainnya) masing-masing bisa dibuat dengan sintaks shortcut
yang ringkas. Bahkan, literal tersebut membentuk basis format data JSON.
4) Regular expression
JavaScript mendukung regular expression dengan cara yang mirip dengan
Perl, yang menyediakan sintaks yang ringkas dan kuat untuk manipulasi teks yang
lebih canggih daripada fungsi string built-in.
68
g. Extension dari vendor tertentu
JavaScript secara resmi dikelola oleh Mozilla Foundation, dan fitur bahasa
baru ditambahkan secara berkala. Namun, hanya beberapa JavaScript engine
mendukung fitur baru seperti berikut:
1) Functions untuk getter and setter pada property (didukung oleh WebKit,
Opera, ActionScript, and Rhino)
2) Klausa kondisional catch
3) Protokol iterator (diadopsi dari Python)
4) Sub-rutin shallow generator (diadopsi dari Python)
5) Array comprehensions dan generator expressions (diadopsi dari Python)
6) Blok scope yang benar melalui kata kunci let
7) Penghancuran array and object (bentuk yang terbatas dari pencocokan pola)
8) Ekspresi fungsi singkat (function(args) expr)
9) ECMAScript for XML (E4X), sebuah extension yang menambahkan dukungan
XML murni untuk ECMAScript (tidak didukung oleh Firefox sejak versi 21)
3. Sintaks dalam JavaScript
Berikut ini adalah beberapa contoh sintaks penulisan dalam bahasa
pemrograman JavaScript:
a. Menentukan variabel dan nilainya
Var x = 1;
Var y = 2;
Var z = 3;
Kode Program 2. 22. Contoh deklarasi variabel dan nilai dalam JavaScript
b. Menghasilkan teks output ke dalam console
console.log("hello world");
Kode Program 2. 23. Contoh sintaks untuk menampilkan teks output ke dalam console
69
c. Contoh sintaks rekursif
function factorial(n) {
if (n === 0) {
return 1;
}
return n * factorial(n - 1);
}
Sumber: http://en.wikipedia.org/wiki/JavaScript
Kode Program 2. 24. Contoh sintaks rekursif dalam JavaScript
d. Contoh sintaks fungsi anonymous
var displayClosure = function() {
var count = 0;
return function () {
return ++count;
};
}
var inc = displayClosure();
inc(); // returns 1
inc(); // returns 2
inc(); // returns 3
Sumber: http://en.wikipedia.org/wiki/JavaScript
Kode Program 2. 25. Contoh sintaks fungsi anonymous dalam JavaScript
70
e. Contoh sintaks fungsi variadic
var sum = function() {
var i, x = 0;
for (i = 0; i < arguments.length; ++i) {
x += arguments[i];
}
return x;
}
sum(1, 2, 3); // returns 6
Sumber: http://en.wikipedia.org/wiki/JavaScript
Kode Program 2. 26. Contoh sintaks fungsi variadic dalam JavaScript
2.4.2.3. JQuery
Pembahasan pada subbab ini menjelaskan pengertian dari JQuery, fitur-
fitur pada JQuery, dan sintaks dalam JQuery
1. Pengertian JQuery
Menurut situs jQuery (www.jquery.com), jQuery adalah JavaScript
library yang bersifat cross-platform yang dirancang untuk menyederhanakan
client-side scripting dari HTML (Anonim, 2014). jQuery digunakan oleh lebih
dari 60% dari 10.000 website yang paling banyak dikunjungi (Berdasarkan analisa
dari SimilarTech tahun 2014), jQuery bersifat gratis, open source , dan berlisensi
di bawah Lisensi MIT.
jQuery, pada intinya, adalah DOM manipulation library. DOM adalah
representasi secara struktur pohon dari semua elemen dari web-page dan jQuery
melakukan pencarian, pemilihan, dan pemanipulasian elemen DOM tersebut
dengan sangat sederhana dan nyaman. Misalnya, jQuery dapat digunakan untuk
menemukan elemen dalam dokumen dengan properti tertentu (misalnya semua
elemen dengan tag <h1>), mengubah satu atau lebih atribut (misalnya warna,
visibilitas), atau me-respond suatu event tertentu (misalnya klik mouse).
Di luar masalah pemilihan dan manipulasi DOM secara dasar, jQuery
menyediakan paradigma baru untuk penulisan event handling pada Javascript.
71
Assignment dari event dan fungsi callback dari event dapat dilakukan dalam satu
langkah dalam satu lokasi di dalam kode. jQuery juga bertujuan untuk
menggabungkan fungsi Javascript lainnya yang sangat sering digunakan
(misalnya fade in dan fade out saat menyembunyikan elemen, animasi dengan
memanipulasi property dari CSS).
Keuntungan menggunakan jQuery adalah:
a. Memisahkan Javascript dan HTML
Developer menggunakan kode HTML untuk memanggil fungsi Javascript
untuk event-handling pada umumnya. jQuery memungkinkan semua fungsi event-
handling dilakukan murni seluruhnya di Javascript. Dengan demikian, HTML tag
dan Javascript bisa dipisahkan sepenuhnya.
b. Sederhana dan Jelas
jQuery menyediakan berbagai sintaks yang membuat sintaks Javascript
semakin sederhana dan jelas, misalnya effect dan action secara berantai, dan
method yang semakin ringkas.
c. Menghilangkan inkompatibilitas pada cross-browser
Javascript Engine dari browser yang berbeda memiliki sedikit perbedaan,
sehingga kode Javascript yang bekerja untuk satu browser kemungkinan tidak
bekerja di browser yang lain. jQuery menangani semua inkonsistensi dari cross-
browser tersebut dan menyediakan antarmuka yang konsisten yang bekerja di
browser yang berbeda.
d. Extensible
jQuery memungkinkan extending pada framework yang sangat sederhana.
New event, element dan method bisa dengan mudah ditambahkan dan kemudian
digunakan kembali sebagai plugin.
72
2. Fitur-fitur dalam JQuery adalah sebagai berikut:
Menurut Wikipedia (2014), fitur-fitur dalam JQuery adalah sebagai
berikut:
a. Pemilihan elemen DOM menggunakan multi-browser open source selector
engine yaitu Sizzle, sebuah proyek spin-off dari jQuery.
b. Modifikasi dan transversal DOM (termasuk dukungan untuk CSS versi 1
hingga 3)
c. Manipulasi DOM berbasis CSS selector yang menggunakan node element
name dan node element attribute (id dan class) sebagai kriteria untuk
membangun selector.
d. Events
e. Efek dan animasi.
f. AJAX
g. JSON parsing
h. Dapat di-extend melalui plug-in
i. Utilities - seperti informasi user agent, deteksi fitur
j. Metode kompatibilitas yang tersedia secara native pada browser modern tetapi
membutuhkan fall back untuk browser yang lebih tua - Misalnya function
inArray() dan each().
k. Dukungan multi-browser
Kedua versi jQuery yaitu versi 1.x dan versi 2.x mendukung versi stabil
browser saat ini dan versi pendahulunya (1 tingkatan versi) dari Firefox, Google
Chrome, Safari, dan Opera. jQuery versi 1.x juga mendukung Internet Explorer 6
atau lebih tinggi. Namun, jQuery versi 2.x menghilangkan dukungan untuk
Internet Explorer 6-8 (karena pangsa pasarnya kurang dari 28% dari semua
browser yang digunakan) dan dapat berjalan hanya dengan Internet Explorer 9
atau lebih tinggi.
3. Cara Penggunaan
Pada pembahasan berikut ini dijelaskan cara menggunakan library jQuery
a. Meng-include library jQuery
73
Library jQuery adalah file JavaScript tunggal, yang berisi semua dari
komponen DOM secara umum, event, efek, dan fungsi Ajax. Library jQuery dapat
dimasukkan dalam halaman web dengan menghubungkan ke salinan lokal (local
copy), atau salah satu dari banyak salinan yang tersedia dari server publik.
<Script src = "jquery.js"> </ script>
Sumber: http://en.wikipedia.org/wiki/jQuery
Kode Program 2. 27. Sintaks untuk meng-include library jQuery
Cara ini juga memungkinkan untuk meng-include library jQuery langsung
dari jaringan pengiriman konten.
<Script src = "//code.jquery.com/jquery-1.11.1.min.js"> </
script>
Sumber: http://en.wikipedia.org/wiki/jQuery
Kode Program 2. 28. Sintaks untuk meng-include library jQuery dari jaringan luar
b. Mode Penggunaan
jQuery memiliki dua mode penggunaan, yaitu:
1) Melalui fungsi $, yang merupakan metode default untuk objek jQuery. Fungsi-
fungsi ini, yang sering disebut commands, bersifat chainable karena fungsi-
fungsi tersebut menghasilkan keluaran objek jQuery.
2) Via prefixed fungsi $.. Fungsi ini adalah fungsi utilitas, yang tidak bertindak
dengan objek jQuery secara langsung.
Pada jQuery, akses menuju dan manipulasi beberapa node DOM dimulai
dengan fungsi $ yang dipanggil dengan string CSS selector. Fungsi ini
mengembalikan sebuah objek jQuery yang mereferensikan semua elemen yang
sesuai di halaman HTML beserta semua method-nya. Misalnya, $("div.test")
menghasilkan keluaran sebuah objek jQuery dengan semua elemen div class
test beserta semua method yang terkandung di dalamnya. Node set ini dapat
dimanipulasi dengan memanggil method dari instance pada keluaran objek
jQuery, atau pada node-nya sendiri.
74
c. Mode noconflict
jQuery juga memasukkan mode .noConflict(), yang menggantikan
kontrol dari fungsi $. Mode .noConflict() berguna jika jQuery digunakan
dengan library lain yang sama-sama menggunakan $ (termasuk dengan jQuery
sendiri dengan versi yang berbeda). Dalam mode .noConflict(), developer
dapat menggunakan jQuery (atau string apapun sesuai selera developer) sebagai
pengganti fungsi $ , tanpa kehilangan fungsionalitasnya.
d. Typical Start Point
Typical dari penggunaan library jQuery adalah peletakan kode inisialisasi
dan fungsi event handling dalam .ready(). Fungsi ini dapat dipicu ketika
browser telah membangun DOM dan mengirim event load.
<script type="text/javascript">
$(document).ready(function(){
// jQuery code, event handling callbacks here
});
</script>
Sumber: http://en.wikipedia.org/wiki/jQuery
Kode Program 2. 29. Sintaks untuk memulai sintaks jQuery
Fungsi callback untuk event handling juga disertakan dalam .ready()
sebagai fungsi anonymous tapi dipanggil ketika event untuk callback telah dipicu.
Misalnya, kode jQuery berikut menambahkan sebuah event handler untuk klik
mouse pada elemen gambar img.
75
$(document).ready(function(){
$('img').click ( function() {
// handle the click event on any img element in the page
});
});
Sumber: http://en.wikipedia.org/wiki/jQuery
Kode Program 2. 30. Sintaks untuk event handler pada jQuery
e. Chaining
Setiap perintah jQuery menghasilkan keluaran berupa sebuah objek jQuery
juga dan oleh karena itu, kita bisa memanggil fungsi pada obyek yang dihasilkan
lebih mendalam yang menghasilkan rantai perintah yang disebut chaining.
Sebagai contoh,
$("div.test").add("p.quote").addClass("blue").slideDown("slow")
;
Sumber: http://en.wikipedia.org/wiki/jQuery
Kode Program 2. 31. Sintaks untuk event handler pada jQuery
Baris ini mencari gabungan dari semua tag div dengan atribut class test
dan semua tag p dengan atribut CSS class quote, menambahkan atribut class
blue untuk setiap elemen yang cocok, dan kemudian meningkatkan tinggi objek
masing-masing dengan animasi. Fungsi $ dan add mempengaruhi set yang sesuai,
sedangkan addClass dan slideDown mempengaruhi node yang dirujuk.
f. Membuat elemen DOM baru
Selain mengakses node DOM melalui hirarki objek jQuery, jQuery juga
memungkinkan untuk menciptakan elemen DOM baru jika sebuah string yang
dilewatkan sebagai argumen menjadi $() terlihat seperti HTML. Misalnya, baris
ini mencari elemen select dari HTML dengan id bernama carmakes, dan
menambahkan elemen option dengan nilai "VAG" dan teks "Volkswagen":
76
$('select#carmakes').append($('<option
/>').attr({value:"VAG"}).append("Volkswagen"));
Sumber: http://en.wikipedia.org/wiki/jQuery
Kode Program 2. 32. Sintaks untuk membuat element DOM baru pada jQuery
g. Penggunaan function
Method yang diawali dengan $. adalah method yang mempengaruhi
properties dan behaviour secara global. Sebagai contoh, berikut ini adalah contoh
dari fungsi iterasi yang disebut each di jQuery
$.each([1,2,3], function() {
console.log(this + 1);
});
Sumber: http://en.wikipedia.org/wiki/jQuery
Kode Program 2. 33. Sintaks untuk menulis function pada jQuery
Sintaks dari coding diatas menghasilkan "2", "3", "4" pada console.
h. AJAX
jQuery memungkinkan untuk melakukan Ajax query secara browser
independent menggunakan $.ajax dan method terkait untuk memuat dan
memanipulasi data secara jarak jauh.
$.ajax({
type: "POST",
url: "example.php",
data: "name=John&location=Boston"
}).success( function(msg) {
alert( "Data Saved: " + msg );
}).fail( function( xmlHttpRequest, statusText, errorThrown ) {
alert(
"Your form submission failed.\n\n"
+ "XML Http Request: " + JSON.stringify( xmlHttpRequest )
+ ",\nStatus Text: " + statusText
77
+ ",\nError Thrown: " + errorThrown );
});
Sumber: http://en.wikipedia.org/wiki/jQuery
Kode Program 2. 34. Sintaks Ajax pada jQuery
Pada contoh ini, script akan mem-post data dengan parameter name=John
dan location=Boston kepada file example.php pada server. Ketika permintaan
ini dapat dilakukan dengan sukses, fungsi success dipanggil untuk memberi
peringatan kepada pengguna. Jika permintaan gagal, ia akan mengingatkan
pengguna dengan pesan kegagalan, status request, dan kesalahan secara spesifik.
2.5. Database Server
Database Server adalah program komputer yang menyediakan layanan
database untuk komputer dan program lainnya, seperti yang telah didefinisikan
pada client server modelf. Database Management System (DBMS) sering
menyediakan fungsionalitas database server, dan beberapa aplikasi DBMS
bergantung secara eksklusif kepada client server model untuk akses database.
Untuk membuat sistem web, kita memerlukan aplikasi database server
untuk menyimpan semua data yang dibutuhkan, baik untuk sisi pengguna, sisi
aplikasi web itu sendiri, sisi webmaster, maupun untuk sisi pengembang
(developer) web itu sendiri, karena keterbatasan bahasa pemrograman web yang
tidak mampu menampung seluruh data dalam jumlah besar dan tidak mampu
menyimpan data secara non-volatile. Aplikasi database server yang umum
dipakai oleh developer ada beberapa macam, yaitu MySQL, Oracle Database,
Microsoft SQL Server, dan lain-lain. Namun diantara beberapa aplikasi database
server diatas, sistem web ini menggunakan aplikasi MySQL untuk database
server-nya, sehingga disini hanya membahas lebih lanjut tentang MySQL.
2.5.1. MySQL
MySQL adalah aplikasi yang sering digunakan untuk relational database
management system (RDBMS) (Oracle, 2015). MySQL adalah aplikasi relational
78
database management system (RDBMS) yang dipakai terbanyak kedua di dunia
terhitung sejak Maret 2014. MySQL bersifat open source di bawah lisensi GNU
General Public License, sehingga penggunaan dan pengembangannya bisa
dilakukan secara bebas tanpa dipungut biaya, selama masih menggunakan nama
asli dari aplikasi tersebut. Beberapa aplikasi yang menggunakan database MySQL
meliputi: TYPO3, MODx, Joomla, WordPress, phpBB, MyBB, Drupal dan
perangkat lunak lain. MySQL juga banyak digunakan pada situs skala besar,
termasuk Google (meskipun tidak untuk pencarian), Facebook, Twitter, Flickr,
dan YouTube.
2.5.1.1. Tampilan Antarmuka
MySQL adalah relational database management system (RDBMS), dan
dirilis tanpa tools GUI untuk mengelola database MySQL atau mengelola data
yang ada di database. Pengguna dapat menggunakan command line tools yang
ada sudah di-include, atau menggunakan perangkat lunak desktop MySQL "front-
end", dan aplikasi web yang membuat dan mengelola database MySQL,
membangun struktur database, backup data, memeriksa status, dan bekerja
dengan data records. Salah satu tools resmi dari MySQL front-end tools adalah
MySQL Workbench, dan aplikasi ini secara aktif dikembangkan oleh Oracle, dan
tersedia secara bebas dan gratis untuk digunakan.
79
sumber:
http://www.mysql.com/common/images/products/MySQL_Workbench_Mainscreen_Windows.gif
Gambar 2. 1. Tampilan MySQL Workbench dari Oracle
1. Tampilan Graphical User Interface (GUI)
MySQL Workbench resmi adalah lingkungan terintegrasi bebas yang
dikembangkan oleh MySQL AB, yang memungkinkan pengguna untuk mengelola
MySQL database dan struktur desain database secara visual dengan bantuan
antarmuka grafis. MySQL Workbench menggantikan paket sebelumnya dari
perangkat lunak, MySQL GUI Tools. Mirip dengan paket pihak ketiga lainnya,
namun masih dianggap sebagai MySQL front end yang otoritatif, MySQL
Workbench memungkinkan pengguna mengelola desain database & modeling,
pengembangan SQL (menggantikan MySQL Query Browser) dan administrasi
database (menggantikan MySQL Administrator).
MySQL Workbench tersedia dalam dua edisi, yaitu edisi regular
Community Edition yang yang bersifat free dan open source dapat di-download
dari situs MySQL, dan tipe proprietary Standard Edition dengan set feature yang
diperluas dan ditingkatkan dari feature set pada Community Edition.
Aplikasi Proprietary dan administrasi berbasis grafis yang free (bebas dan
gratis) dari pihak ketiga (atau "front-end") telah tersedia yang terintegrasi dengan
80
MySQL dan memungkinkan pengguna untuk bekerja dengan struktur database
dan data secara visual. Daftar aplikasi MySQL front-end yang terkenal adalah
Navicat, SQLYog, dan phpMyAdmin (phpMyAdmin di-bundle bersamaan dengan
paket AppServ dan XAMPP)
2. Tampilan Command-Line
MySQL mendukung banyak command line tools, dengan antarmuka utama
adalah mysql klien. Pihak ketiga juga telah mengembangkan tools untuk
mengelola MySQL server. Beberapa aplikasi command line tools untuk MySQL
adalah:
a. MySQL Utilities adalah satu paket utilitas yang dirancang untuk melakukan
maintenance dan tugas-tugas administratif secara umum. MySQL Utilities
pada awalnya dimasukkan sebagai bagian dari MySQL Workbench, namun
sekarang utilitas ini bersifat standalone dan dapat di-download dari Oracle.
b. Percona Toolkit adalah toolkit yang bersifat cross-platform untuk MySQL,
dikembangkan di dalam Perl. Percona Toolkit dapat digunakan untuk
membuktikan bahwa replikasi bekerja dengan benar, memperbaiki data yang
rusak, mengotomatisasi tugas yang berulang, dan mempercepat server.
Percona Toolkit disertakan pada beberapa distribusi Linux seperti CentOS dan
Debian, Fedora dan Ubuntu. Percona Toolkit pada awalnya dikembangkan
sebagai Maatkit, tetapi pada akhir 2011, Maatkit tidak lagi dikembangkan.
Secara umum, MySQL dengan antarmuka command line lebih jarang
dipakai, dan sebagai gantinya, MySQL dengan tampilan antarmuka GUI lebih
sering digunakan karena developer dapat merancang flowchart untuk desain table
dan banyak fitur lainnya yang lebih membantu developer dalam mengelola
database.
2.5.1.2. Fitur-fitur yang tersedia pada MySQL
MySQL ditawarkan ke dalam dua edisi yang berbeda, yaitu edisi MySQL
Community Server yang bersifat open source dan MySQL Enterprise Server yang
bersifat propietary. MySQL Enterprise Server dibedakan oleh serangkaian
81
extension yang bersifat proprietary yang ter-install sebagai server plugin, tetapi
menggunakan sistem penomoran versi yang sama dan dibangun dari basis kode
yang sama.
Beberapa fitur dari MySQL 5.6 adalah:
1. Subset yang luas pada ANSI SQL 99, beserta extension-nya
2. Dukungan Cross-platform
3. Stored Procedure, dengan menggunakan bahasa prosedural yang secara erat
melekat pada SQL/PSM
4. Trigger
5. Cursor
6. Views yang bisa di-update
7. Data Definition Language (DDL) secara online saat menggunakan InnoDB
Storage Engine.
8. Information Schema
9. Perfomance Schema
10. Satu set dari SQL Mode Options untuk mengontrol runtime behavior,
termasuk strict mode untuk lebih mematuhi standar SQL.
11. Dukungan X/Open XA distributed transaction processing (DTP); dua fase
komit sebagai bagian dari ini, menggunakan InnoDB storage engine yang
tersedia secara default
12. Transaksi dengan savepoint ketika menggunakan default InnoDB Storage
Engine. NDB Cluster Storage Engine juga mendukung transaksi.
13. Memenuhi standar ACID ketika menggunakan InnoDB dan NDB Cluster
Storage Engine
14. Dukungan SSL
15. Query caching
16. Sub SELECT (Contohnya adalah perintah SELECT secara bersarang)
17. Dukungan repikasi secara built-in (yaitu Replikasi Master-Master & Replikasi
Master-Slave) dengan satu master per slave, banyak slave per master.
Replikasi Multi-master disediakan di MySQL Cluster, dan dukungan multi-
82
master bisa ditambahkan ke konfigurasi unclustered menggunakan Galera
Cluster.
18. Full-text Indexing dan searching
19. Embedded Database Library
20. Dukungan Unicode
21. Partisi Tabel dengan pemangkasan partisi pada optimizer
22. Shared-nothing clustering melalui MySQL Cluster
23. Multiple storage engine, yang memungkinkan seseorang untuk memilih salah
satu yang paling efektif untuk setiap table dalam aplikasi.
24. Dukungan pada Native storage engine seperti InnoDB, MyISAM, Merge,
Memory (heap), Federated, Archive, CSV, Blackhole, dan NDB Cluster.
25. Commit grouping , pengumpulan beberapa transaksi dari beberapa sambungan
secara bersamaan untuk meningkatkan jumlah commit per detik.
2.6. Aplikasi Web Server
Web Server adalah sebuah sistem komputer yang memproses request
melalui HTTP, yang merupakan protokol jaringan dasar yang digunakan untuk
mendistribusikan informasi pada World Wide Web. Istilah ini dapat merujuk baik
ke seluruh sistem, atau secara khusus untuk perangkat lunak yang menerima dan
mengawasi HTTP request.
Fungsi utama dari web server adalah untuk menyimpan, mengolah dan
menyampaikan halaman web ke client. Komunikasi antara client dan server
berlangsung dengan menggunakan Hypertext Transfer Protocol (HTTP). Halaman
yang disampaikan paling sering adalah dokumen HTML, yang biasanya sudah
termasuk gambar, style sheet dan script bersamaan dengan halaman teks utama
yang dikirim.
Sebuah user agent, biasanya sebuah web browser atau web crawler,
memulai komunikasi dengan meminta request untuk resource spesifik
menggunakan HTTP dan server merespon dengan konten pada resource tersebut
atau pesan kesalahan jika tidak mampu melakukannya. Sementara fungsi utama
dari sebuah web server adalah untuk melayani konten, implementasi penuh pada
83
protokol HTTP juga mencakup cara untuk menerima konten dari client. Fitur ini
digunakan untuk mengirimkan formulir web, termasuk melakukan file upload.
Banyak web server generik juga mendukung server-side scripting
menggunakan Active Server Pages (ASP), PHP, atau bahasa scripting lainnya.
server-side scripting memungkinkan perilaku dari web server dapat ditulis dalam
file terpisah, sementara perangkat lunak server yang sebenarnya tetap tidak
berubah. Fungsi ini digunakan untuk membuat dokumen HTML secara dinamis
sebagai perkembangan dari dokumen HTML statis. Penggunaan umum pada
server-side scripting digunakan untuk mengambil dan/atau memodifikasi
informasi dari database.
Untuk memungkinkan pengguna untuk membuat web server beserta
dengan fitur server-side scripting, ada beberapa aplikasi yang tersedia untuk
membuat web server tersebut, yaitu Apache, Microsoft Internet Information
Services (IIS), nginx, dan Google Web Server (GWS). Diantara banyaknya aplikasi
web server yang tersedia, kali ini hanya membahas Apache karena aplikasi web
server ini digunakan untuk membuat sistem web e-commerce ini.
2.6.1. Apache HTTP Server
Menurut situs Apache (www.httpd.com), Apache HTTP Server adalah
aplikasi web server yang digunakan untuk melayani request client melalui
protokol HTTP beserta dengan dukungan server-side scripting via PHP. Apache
dikembangkan dan dipelihara oleh komunitas terbuka dari para pengembang di
bawah naungan Apache Software Foundation. Apache paling sering digunakan
pada sistem Unix-like. Apache tersedia untuk berbagai sistem operasi, termasuk
Unix, FreeBSD, Linux, Solaris, Novell NetWare, OS X, Microsoft Windows, OS/2,
TPF, OpenVMS dan eComStation. Apache dirilis di bawah lisensi Apache
License, Apache adalah perangkat lunak open-source.
Apache HTTP Server project adalah upaya pengembangan perangkat
lunak secara kolaboratif yang bertujuan untuk menciptakan implementasi source
code dari HTTP web server yang kuat, tingkat setara komersial, kaya fitur dan
tersedia secara bebas. Proyek ini dikelola bersama oleh sekelompok sukarelawan
84
yang terletak di seluruh dunia, dengan menggunakan Internet dan web untuk
berkomunikasi, merencanakan, dan mengembangkan server dan dokumentasi
terkait. Proyek ini merupakan bagian dari Apache Software Foundation. Selain
itu, ratusan pengguna telah memberikan kontribusi ide, kode, dan dokumentasi
untuk proyek pengembangan Apache ini.
2.6.1.1. Perkembangan Apache HTTP Server
Apache adalah aplikasi penting yang memainkan peran kunci dalam
pertumbuhan awal World Wide Web. Awalnya berdasarkan pada NCSA HTTPd
Server, pengembangan Apache dimulai pada awal tahun 1995 setelah pekerjaan
pada kode NCSA terhenti. Apache dengan cepat menyalip NCSA HTTPd sebagai
server HTTP yang dominan, dan mulai menjadi HTTP server yang paling populer
digunakan sejak April 1996. Pada tahun 2009, Apache menjadi perangkat lunak
web server pertama untuk melayani lebih dari 100 juta situs web. Pada Juni 2013,
Apache diperkirakan telah melayani 54,2% dari semua situs web yang aktif dan
53,3% dari top server dari semua domain.
2.6.1.2. Fitur dalam Apache
Apache mendukung berbagai fitur, kebanyakan fitur tersebut
diimplementasikan sebagai modul yang dikompilasi yang berfungsi untuk
memperluas fungsionalitas dasar. Fitur tersebut dapat mencakup dukungan server-
side programming language untuk skema otentikasi. Beberapa interface bahasa
pemrograman yang umum mendukung Perl, Python, Tcl, dan PHP. Apache
mendukung modul otentikasi populer seperti mod_access, mod_auth,
mod_digest, dan mod_auth_digest, sebagai penerus mod_digest. Contoh fitur
lainnya termasuk dukungan Secure Socket Layer (SSL) dan Transport Layer
Security (mod_ssl), modul proxy (mod_proxy), URL rewriter (mod_rewrite),
custom file log (mod_log_config), dan dukungan filtering (mod_include dan
mod_ext_filter).
Metode kompresi populer pada Apache meliputi modul extension
eksternal, mod_gzip, diimplementasikan untuk membantu pengurangan ukuran
85
(berat) dari halaman web yang dikirim melalui HTTP. Apache logs dapat
dianalisis melalui web browser menggunakan script gratis, seperti
AWStats/W3Perl atau Visitors.
Virtual hosting memungkinkan satu instalasi Apache untuk melayani
banyak situs web yang berbeda. Sebagai contoh, satu komputer dengan satu
instalasi Apache secara bersamaan bisa melayani www.example.com,
www.example.org, test47.test-server.example.edu, dan lain-lain.
Apache memiliki fitur pesan kesalahan yang dapat dikonfigurasi,
otentikasi database berbasis DBMS, dan content negoitation. Hal ini juga
didukung oleh beberapa GUI.
Apache mendukung otentikasi password dan otentikasi digital certificate.
Source code untuk Apache tersedia secara bebas, sehingga siapapun dapat
menyesuaikan server untuk kebutuhan khusus, dan ada public library untuk
Apache add-ons yang berukuran besar.
2.7. Aplikasi Web Programming
Aplikasi web programming adalah aplikasi yang digunakan untuk
merancang halaman web. Menurut lingkup pemrogramannya, aplikasi web
programming dibagi menjadi 2, yaitu server-side web programming dan client-
side web programming, namun akhir-akhir ini aplikasi web programming
memiliki dukungan untuk banyak bahasa pemrograman web, seperti PHP, ASP,
HTML, dan JavaScript. Salah satu contoh aplikasi web programming yang
memiliki banyak dukungan bahasa pemrograman beserta mampu menguasai 2
lingkup pemrograman yang berbeda tersebut adalah Adobe Dreamweaver CS3.
2.7.1. Adobe Dreamweaver CS3
Adobe Dreamweaver CS3 adalah tools untuk membuat atau
mengembangkan halaman web yang bersifat proprietary yang dikembangkan oleh
Adobe Systems. Dreamweaver diciptakan oleh Macromedia pada tahun 1997, dan
dikelola oleh Macromedia sampai Macromedia diakuisisi oleh Adobe Systems
86
pada tahun 2005. Adobe Dreamweaver tersedia untuk Mac OS X dan untuk
Windows.
Gambar 2. 2. Screenshot dari Adobe Dreamweaver CS3
2.7.1.1. Fitur pada Adobe Dreamweaver CS3
Adobe Dreamweaver CS3 adalah aplikasi untuk desain dan
pengembangan web yang menyediakan fitur WYSIWYG Editor (What You See is
What You Get Editor) secara visual (yang juga disebut sebagai design view) dan
code editor dengan fitur standar seperti syntax highlighting, code completion, dan
code collapsing serta fitur lebih canggih seperti real-time syntax checking dan
code instropection untuk menghasilkan petunjuk dari kode untuk membantu
pengguna dalam menulis kode. Design view memfasilitasi pembuatan desain dan
kode tata letak yang cepat dan seperti memungkinkan pengguna untuk membuat
dan memanipulasi tata letak pada elemen HTML. Dreamweaver memiliki browser
yang terintegrasi untuk melihat preview dari halaman web yang dikerjakan di
dalam preview pane sebagai tambahan dari kemampuan untuk membuka konten
di dalam web browser yang ter-install. Dreamweaver menyediakan fitur transfer
dan sinkronisasi, kemampuan untuk mencari dan mengganti baris teks atau kode
melalui search terms atau regular expression pada keseluruhan situs, dan fitur
template yang memungkinkan update pada satu source code sumber untuk meng-
87
update keseluruhan situs tanpa harus melakukan scripting ulang pada halaman
lainnya. Behaviour panels memungkinkan penggunaan JavaScript tingkat dasar
tanpa memerlukan pengetahuan coding, dan integrasi dengan Adobe Spry Ajax
framework memungkinkan akses ke konten dan interface yang dihasilkan secara
dinamis.
Dreamweaver dapat menggunakan extensions pihak ketiga untuk
memperluas fungsi inti dari aplikasi dari bahasa yang developer dapat tulis
(sebagian besar dalam HTML dan JavaScript). Dreamweaver didukung oleh
pengembang extensions yang membuat extension komersial dan gratis tersedia.
Dreamweaver, seperti editor HTML lainnya, melakukan edit file secara
lokal kemudian melakukan upload menuju remote web server menggunakan FTP,
SFTP, atau WebDAV. Pada versi berikutnya, Dreamweaver CS4, mendukung
sistem kendali Subversion (SVN).
2.7.1.2. Fitur Syntax Highlighting
Adobe Dreamweaver mendukung sintaks pemrograman berikut ini:
1. ActionScript
2. Active Server Pages (ASP).
3. C#
4. Cascading Style Sheets (CSS)
5. ColdFusion
6. EDML
7. Extensible HyperText Markup Language (XHTML)
8. Extensible Markup Language (XML)
9. Extensible Stylesheet Language Transformations (XSLT)
10. HyperText Markup Language (HTML)
11. Java
12. JavaScript
13. PHP: Hypertext Preprocessor (PHP)
14. Visual Basic (VB)
15. Visual Basic Script Edition (VBScript)
88
16. Wireless Markup Language (WML)
Dukungan dengan bahasa pemrograman tersebut tetap dipertahankan
hingga sekarang kecuali dukungan pada bahasa pemrograman ASP.NET dan
JavaServer Pages (JSP) yang dihilangkan pada Adobe Dreamweaver CS5.