BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

84
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.

Transcript of BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

Page 1: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 2: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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)

Page 3: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 4: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 5: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 6: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 7: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 8: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 9: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 10: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 11: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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)

Page 12: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 13: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 14: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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,

Page 15: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 16: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 17: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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)

Page 18: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 19: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 20: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 21: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 22: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 23: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 24: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 25: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 26: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 27: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 28: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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:

Page 29: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 30: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 31: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 32: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 33: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 34: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 35: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 36: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 37: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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">

Page 38: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 39: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 40: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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).

Page 41: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 42: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 43: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.';

Page 44: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 45: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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) {

Page 46: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 47: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 48: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 49: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 50: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 51: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 52: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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>

Page 53: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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>

Page 54: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 55: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 56: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 57: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 58: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 59: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 60: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 61: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 62: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 63: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 64: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 65: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 66: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 67: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 68: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 69: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 70: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 71: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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":

Page 72: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 73: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 74: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.

Page 75: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 76: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 77: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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-

Page 78: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 79: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 80: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 81: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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

Page 82: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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-

Page 83: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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)

Page 84: BAB II TINJAUAN PUSTAKA 2.1. E-commerce - UNUD

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.