skripsi full - UIN Repository

advertisement
APLIKASI PEMESANAN SPARE PART MOTOR
BERBASIS WEB
ERRY HANDOYO
104091002869
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS ISLAM NEGERI (UIN)
SYARIF HIDAYATULLAH
JAKARTA
2011 M / 1432 H
ii
iii
PERNYATAAN
DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENARBENAR HASIL KARYA SENDIRI YANG BELUM PERNAH DIAJUKAN
SEBAGAI SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI
ATAU LEMBAGA MANAPUN.
Jakarta, Agustus 2011
Erry Handoyo
104091002869
iv
HALAMAN PERSEMBAHAN
Penulis dapat menyelesaikan skripsi ini tak lepas dari doa dan dukungan
dari banyak pihak. Maka perkenankanlah penulis untuk mengucapkan terima
kasih yang sebesar-besarnya kepada :
1.
Ibunda Tercinta Siti Kasiyati dan Ayahanda Rijadi yang tidak pernah
berhenti merawat, mendoakan, dan mendukung penulis dengan penuh
kasih sayang. Terima kasih atas semua pengorbanan, usaha dan jerih
payah Ayah dan Bunda untuk selalu membuat penulis merasa bahagia.
2.
Saudariku, Desi Setiyani yang selalu penulis banggakan dan sayangi
sepenuh hati.
3.
Fitriyanti, atas semua bentuk dukungan, motivasi dan kasih sayang yang
selalu menemani hari-hari penulis.
4.
Sahabat-sahabatku yang selalu setia menemani saat suka dan duka :
Makhsus, Toni, Sigit, Danang, Umi, Nita, yang selalu bersama-sama
berjuang menyelesaikan skripsi. Zahruddin, Taufiq, Arie Syuryadi,
Rahmat Hidayat dan Robby Darmawan, terima kasih atas persahabatan
indah yang kita miliki.
5.
Teman-teman TI C 2004 : Alvin, Wahyuni, Syukrina, Hani, Endah, Desi,
Ziah, Sarah, Eni, Rizal, Razka, Budi, Asep, Malik, Sidiq, Fajar, Dwi,
Rahmat Ruhyat, Agil, Rendy, Ariefati, Hirzi, Kaut, Anton dan Egi. Terima
kasih atas keceriaan, dukungan dan motivasi yang selalu kalian tunjukkan,
v
terutama pada saat-saat sulit yang penulis alami, sehingga menumbuhkan
semangat baru untuk penulis.
6.
Teman-teman TI dan SI seluruh angkatan.
7.
Teman-temanku di Agribisnis dan MIPA.
Semoga Allah selalu melimpahkan rahmat dan karunia-Nya kepada kalian
semua dan melindungi kalian di setiap langkah.
Jakarta, Agustus 2011
Erry Handoyo
vi
ABSTRAK
ERRY HANDOYO. Aplikasi Pemesanan Spare Part Motor Berbasis Web.
dibimbing oleh HERLINO NANANG dan FENTY EKA MUZAYYANA.
Perkembangan teknologi internet yang sangat cepat dari tahun ke tahun.
Internet saat ini sangat dibutuhkan misalnya untuk media promosi suatu produk.
Untuk menjual suatu produk, penjual masih menggunakan cara biasa yaitu dengan
menjualnya di toko-toko. Dengan sistem penjualaan seperti itu, maka hanya
terbatas saja pembeli yang mengetahui tentang produk yang dijual. Dengan
adanya internet, penjual dapat mempromosikan sekaligus menjual produknya
melalui website. Penelitian ini membahas mengenai proses pemesanan produk
secara online yang akan diimplementasikan pada pemesanan produk spare part
motor. Dalam pembuatan website aplikasi pemesanan ini nantinya akan menjadi
acuan untuk dapat merancang proses pemesanan melalui media elektronik dan
sebagai promosi produksi itu sendiri. Tools yang digunakan dalam pembuatan
website penjualan spare part motor ini yaitu komponen virtue mart untuk sistem
pemesanannya, joomla untuk template website dan content manajemen sistem
(CMS), MySQL untuk databasenya, dan script PHP sebagai dasar bahasa
pemrograman yang digunakan. Penelitian ini bertujuan untuk merancang suatu
apliksasi pemesanan yang dapat membantu para pembeli spare part motor untuk
melakukan pemesanan barang dengan mudah. Namun, transaksi pembayarannya
dilakukan secara manual dan tidak terintegrasi dengan aplikasi.
Kata Kunci : pemesanan, virtue mart, website, spare part motor.
vii
KATA PENGANTAR
Assalaamu’alaikum Wr. Wb.
Alhamdulillah, rasa syukur tiada terkira penulis panjatkan kepada Allah
Subhanahu Wata’ala. Rahmat dan salam semoga tercurahkan selalu kepada
Rasulullah Muhammad SAW beserta keluarga, sahabat, dan pengikut-pengikut
beliau (amin). Hanya berkat petunjuk dan pertolongan Allah-lah penulis dapat
menyelesaikan skripsi yang berjudul : Aplikasi Pemesanan Spare Part Motor
Berbasis Web.
Terwujudnya tulisan dalam bentuk skripsi ini, tentunya tidak terlepas dari
bantuan dan bimbingan dari berbagai pihak. Rasa terima kasih penulis ucapkan
kepada :
1.
Bapak DR. Syopiansyah Jaya Putra, M.SIS, selaku Dekan Fakultas Sains
dan Teknologi.
2.
Bapak Yusuf Durrachman, M.Sc, M.IT, selaku Ketua Program Studi Teknik
Informatika.
3.
Bapak Herlino Nanang, MT, selaku dosen pembimbing I, dan
4.
Ibu Fenty Eka Muzayyana, M.Kom, selaku dosen pembimbing II, yang
telah memberikan bimbingan, waktu, dan perhatiannya dalam penyusunan
skripsi ini.
viii
5.
Seluruh Dosen dan staf karyawan Program Studi Teknik Informatika,
Fakultas Sains dan Teknologi, Universitas Islam Negeri Syarif Hidayatullah
Jakarta yang telah mengajar atau membantu penulis selama kuliah.
6.
Ibunda dan Ayahanda tercinta Siti Kasiyati dan Rijadi atas kasih sayang
tulusnya sepanjang masa.
Dalam penyusunan skripsi ini, penulis juga tidak luput dari berbagai
masalah dan menyadari sepenuhnya bahwa penulisan ini masih jauh dari
sempurna dan tidak lepas dari kesalahan dan kekurangan, oleh karena itu dengan
senang hati penulis akan menerima semua saran dan kritik maupun ide-ide yang
membangun dari rekan-rekan pembaca. Akhir kata semoga Allah membalas
kebaikan mereka yang telah membimbing penulis dalam membuat skripsi ini.
Semoga skripsi ini berguna bagi penulis dan pada pembaca umumnya.
Wassalaamu’alaikum Wr. Wb.
Jakarta, Agustus 2011
Penulis
Erry Handoyo
NIM. 104091002869
ix
DAFTAR ISI
PENGESAHAN UJIAN ..................................................................................... iii
PERNYATAAN.................................................................................................. iv
HALAMAN PERSEMBAHAN ......................................................................... v
ABSTRAK .......................................................................................................... vii
KATA PENGANTAR ........................................................................................viii
DAFTAR ISI ....................................................................................................... x
DAFTAR GAMBAR .......................................................................................... xii
DAFTAR TABEL ...............................................................................................xiii
BAB I PENDAHULUAN ................................................................................ 1
1.1 Latar Belakang Masalah ................................................................ 1
1.2 Rumusan Masalah .......................................................................... 2
1.3 Batasan Masalah ............................................................................ 3
1.4 Tujuan Penelitian ........................................................................... 3
1.5 Manfaat Penelitian ......................................................................... 4
1.6 Metodologi Penelitian .................................................................... 5
1.7 Sistematika Penulisan .................................................................... 6
BAB II LANDASAN TEORI .......................................................................... 8
2.1 Definisi Informasi .......................................................................... 8
2.2 Internet ........................................................................................... 8
2.3 Aplikasi Web ................................................................................. 9
2.4 Metode Pengembangan Perangkat Lunak ...................................... 9
2.4.1 Model RAD.......................................................................... 10
2.4.2 Data Flow Diagram (DFD) ................................................. 13
2.4.2.1 Tahapan Data Flow Diagram.................................. 15
2.4.3 Entity Relationship Diagram (ERD).................................... 16
2.5 Content Management System ......................................................... 18
2.5.1 Joomla ................................................................................... 19
2.6 Tools Pengembangan Aplikasi ...................................................... 21
x
2.6.1 Adobe Photoshop .................................................................. 21
2.6.2 Macromedia Dreamweaver 8 ................................................ 21
2.6.3 Xampp ................................................................................... 23
2.6.4 PHP ....................................................................................... 24
2.6.5 MySQL ................................................................................. 27
2.7 Web Browser ................................................................................. 27
BAB III METODOLOGI PENELITIAN ....................................................... 29
3.1 Metode Pengumpulan Data ............................................................ 29
3.2 Metode Pengembangan Sistem ...................................................... 30
3.3 Kerangka Berfikir Penelitian ......................................................... 34
BAB IV PEMBAHASAN DAN IMPLEMENTASI ....................................... 35
4.1 Metodologi Pengumpulan Data .................................................... 35
4.1.1 Studi Pustaka ...................................................................... 35
4.1.2 Studi Lapangan ................................................................... 35
4.1.2.1 Wawancara ............................................................ 35
4.1.2.2 Observasi ............................................................... 36
4.1.3 Studi Literatur .................................................................... 38
4.2 Metode Pengembangan Sistem ..................................................... 39
4.2.1 Fase Perencanaan Syarat-syarat ........................................ 39
4.2.2 Fase Perancangan .............................................................. 46
4.2.3 Fase Konstruksi ................................................................. 62
4.2.4 Fase Pelaksanaan ............................................................... 63
BAB V PENUTUP ............................................................................................ 65
5.1 Kesimpulan .................................................................................... 65
5.2 Saran .............................................................................................. 65
DAFTAR PUSTAKA ........................................................................................ 67
xi
DAFTAR GAMBAR
Gambar 2.1 Fase RAD Martin .......................................................................... 11
Gambar 2.2 Workshop Desain RAD................................................................. 12
Gambar 2.3 Tampilan Adobe Photoshop CS3 .................................................. 21
Gambar 2.4 Tampilan Dreamweaver 8 ............................................................. 23
Gambar 2.5 Skema PHP.................................................................................... 26
Gambar 3.1 Model Membangun Sistem RAD .................................................. 31
Gambar 3.2 Kerangka Berfikir Penelitian ......................................................... 34
Gambar 4.1 Diagram Sistem yang Berjalan ...................................................... 40
Gambar 4.2 Diagram Sistem Usulan ................................................................ 42
Gambar 4.3 Diagram Konteks ........................................................................... 46
Gambar 4.4 Diagram Zero Sistem yang Diusulkan .......................................... 47
Gambar 4.5 Diagram Level 2 Proses Ke-1 ....................................................... 48
Gambar 4.6 Diagram Level 2 Proses Ke-2 ....................................................... 49
Gambar 4.7 Diagram Level 2 Proses Ke-3 ........................................................ 50
Gambar 4.8 Entity Relationship Diagram ......................................................... 51
Gambar 4.9. Rancangan Halaman Index ............................................................ 54
Gambar 4.10 Rancangan Halaman Pooling ........................................................ 55
Gambar 4.11 Rancangan Halaman Produk ......................................................... 56
Gambar 4.12 Rancangan Halaman Shopping Cart ............................................. 57
Gambar 4.13 Rancangan Halaman Registrasi .................................................... 58
Gambar 4.14 Rancangan Halaman Guest Book ................................................. 59
Gambar 4.15 Rancangan Halaman Contact Us .................................................. 60
Gambar 4.16 Rancangan Halaman List Order ................................................... 61
Gambar 4.17 Rancangan Halaman Order Detail ................................................ 62
xii
DAFTAR TABEL
Tabel 2.1 Simbol DFD ....................................................................................... 14
Tabel 4.1 Perbandingan Sistem Berjalan Dengan Sistem Usulan ..................... 42
Tabel 4.2 Tabel Produk ..................................................................................... 52
Table 4.3 Tabel User ......................................................................................... 52
Tabel 4.4 Tabel Order ......................................................................................... 53
Table 4.5 Hasil Pengujian Aplikasi ................................................................... 64
xiii
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Perkembangan teknologi dibidang informasi mendorong setiap
instansi atau perusahaan untuk tetap mengikuti perkembangannya, terutama
berkenaan dengan perkembangan teknologi informasi yang ada hubungannya
dengan kegiatan perusahaan tersebut. Perkembangan teknologi informasi
telah memberikan kontribusi yang cukup berarti dalam meningkatkan
kegiatan usaha khususnya dalam hal pengolahan data yang memberi
dukungan
terhadap
pengambilan
keputusan-keputusan
bisnis
serta
Perkembangan teknologi informasi telah memberikan kontribusi yang cukup
berarti dalam meningkatkan kegiatan pelayanan.
Berdasarkan pada uraian diatas, pemanfaatan teknologi informasi
dalam suatu aktivitas bisnis merupakan hal yang cukup penting.
Begitu
pentingnya sehingga hampir setiap perusahaan yang serupa menggunakan
sistem pelayanan bisnis secara online, apalagi di zaman sekarang ini bukan
hanya perusahaan -perusahaan yang sudah mempunyai tempat dan nama di
dunia bisnis, perusahaan atau usaha rumahan pun bisa dijadikan lahan bisnis
dengan sentuhan teknologi informasi sekarang ini. Setiap orang tidak
diharuskan lagi dan diwajibkan lagi mempunyai tempat untuk usaha, letak
strategis untuk usaha kemudian modal yang besar untuk sewa tempat dan lain
sebagainya. Cukup dengan mempunyai suatu produk dan usaha rumahan pun
1
2
bisa dilakukan yaitu dengan cara mempromosikan dan memperkenalkan
produknya melalui internet. Karena di era globalisasi sekarang ini setiap
orang dalam mencari informasi hal pertama yang dilakukan cenderung
mencari sesuatu melalui dunia maya, baik itu hanya sekedar referensi ataupun
melakukan pemesanan online.
Berkaitan dengan tugas akhir ini penelitian difokuskan pada masalah
pemanfaatan tujuan teknologi informasi yang dapat memberi dukungan aktif
kelancaran usaha penjualan barang yang dilakukan oleh suatu perusahaan
atau usaha rumahan yang diberi judul “Aplikasi Pemesanan Spare Part
Motor Berbasis Web” .
1.2 Rumusan Masalah
Berdasarkan observasi yang dilakukan di suatu Perusahaan terhadap
sistem informasi pemesanan barang dikemukakan hal-hal yang menjadi
permasalahan antara lain:
1. Bagaimana cara penyampaian informasi barang yang terdapat pada usaha
pemesanan spare part motor berbasis web?
2. Bagaimana merancang sebuah aplikasi pemesanan barang yang sifatnya
online?
3
1.3 Batasan Masalah
Masalah yang ada dalam sistem informasi penjualan barang ini
dibatasi pada ruang lingkup seperti :
1.
Sistem hanya memberikan informasi barang yang tersedia dan proses
pemesanan barang tersebut.
2.
Data yang diolah hanya data barang dan data Pengguna Sistem
Informasi.
3.
Sistem ini tidak membahas mengenai masalah persediaan barang.
4.
Pembayaran transaksi dilakukan secara offline, dimana pembeli
melakukan transfer uang secara manual pada rekening yang
ditetapkan.
5.
Desain web menggunakan CMS (Content Management System)
Joomla dan komponen Virtue Mart.
6.
Web server menggunakan Xampp dan database menggunakan
MySQL.
1.4 Tujuan Penelitian
Tujuan yang ingin dicapai dari tugas akhir ini adalah :
1. Mempermudah pihak CMR untuk mengelola pemesanan spare part motor
dan memperluas jangkauan konsumen.
2. Mempermudah bagi masyarakat atau dunia luar untuk mendapatkan
informasi mengenai spare part motor dan melakukan pemesanan spare
part motor secara langsung.
4
1.5 Manfaat Penelitian
Manfaat yang didapat dalam menulis skripsi ini adalah :
1.
Bagi Peneliti
a.
Dapat mempelajari lebih jauh mengenai aplikasi berbasis web.
b.
Mengetahui secara langsung penggunaan atau peranan teknologi
informasi dan komunikasi di tempat penelitian.
c.
Mengenal lebih jauh teknologi- teknologi informasi yang sedang
berkembang saat ini.
2.
Bagi Pengguna
a.
Memudahkan akses terhadap informasi produk, karena dapat
diakses melalui jaringan internet.
b.
Memiliki sebuah aplikasi berbasis web yang mudah digunakan oleh
masyarakat umum.
c.
Menjadikan bengkel lebih maju sesuai dengan perkembangan
teknologi.
3.
Bagi Universitas
a.
Memberikan kemajuan ilmu pengetahuan dalam bidang aplikasi
berbasis web di lingkungan UIN Syarif Hidayatullah Jakarta.
b.
Memberi sumbangan ilmiah bagi perkembangan aplikasi berbasis
web.
c.
Sebagai bahan referensi dan masukan yang mungkin berguna.
5
1.6 Metodologi Penelitian
1. Metode pengumpulan data
Dalam pengumpulan data dan pencarian fakta untuk penelitian skripsi ini,
peneliti menggunakan metode fact finding technique. Fact Finding
Technique dilakukan untuk proses pengembangan system, di dalam Fact
Finding Technique dilakukan proses pencarian dan penemuan fakta serta
pencarian data dari suatu kasus yang akan membantu proses
pengembangan system suatu organisasi. Fact Finding Technique yang
digunakan dalam penelitian ini adalah
a.
Studi Pustaka
b.
Observasi
c.
Wawancara
d.
Studi Literatur
2. Metode Pengembangan Sistem
Sistem pengembangan perangkat lunak yang penulis gunakan adalah
sistem RAD (Rapid Application Development) yang dikembangkan oleh
James Martin. Tahap-tahap sistem RAD meliputi (Kendall & Kendall,
2003:239):
1.
Fase Menentukan Syarat-Syarat
Pada tahap ini dilakukan penentuan tujuan dan syarat-syarat
informasi, yaitu dengan melakukan analisa kebutuhan masalah
untuk pembuatan aplikasi pemesanan berbasis web, menentukan
6
tujuan dibuatnya aplikasi, lalu menentukan syarat-syarat yang
diperlukan untuk membuat aplikasi.
2.
Fase Perancangan
Pada tahap ini dilakukan perancangan proses-proses yang akan
terjadi dalam sistem dan perancangan antar muka. Pada
perancangan proses digunakan alat bantu DFD untuk memudahkan
peneliti dalam merancang aplikasi pemesanan yang akan dibuat
3.
Fase Konstruksi
Pada tahap ini dilakukan pengkodean terhadap rancanganrancangan yang telah didefinisikan. Peneliti menggunakan PHP
untuk bahasa pemrograman dan Joomla untuk template. Web
Server Apache sebagai platform untuk menjalankan aplikasi,
kemudian menggunakan MySQL sebagai database.
4.
Fase Pelaksanaan
Pada tahap ini dilakukan pengujian terhadap sistem. Untuk uji
aplikasi dilakukan dengan menggunakan metode blackbox.
1.7 Sistematika Penulisan
Pada dasarnya, penyusunan sistematika penulisan bertujuan untuk
memudahkan para pembaca dalam mengikuti apa yang dipaparkan dalam laporan
tugas akhir ini. Sistematika penulisan tugas akhir ini disusun sebagai berikut :
7
BAB I
PENDAHULUAN
Dalam bab ini berisikan latar belakang masalah, identifikasi
masalah, tujuan penelitian, batasan masalah, metodologi penelitian,
dan sistematika penulisan.
BAB II
LANDASAN TEORI
Bab ini menjelaskan tentang teori-teori yang berkaitan dengan isi
laporan tugas akhir dan aplikasi web yang dibuat, diantaranya
tentang internet, konsep aplikasi web yang interaktif, bahasa web
scripting PHP dan database server MySQL.
BAB III
METODOLOGI PENELITIAN
Bab ini menguraikan metode penelitian yang digunakan penulis,baik
itu metode pengumpulan data maupun metode pengembangan
sistem.
BAB lV
PEMBAHASAN DAN IMPLEMENTASI
Dalam bab ini menganalisis objek penelitian, anlisis kebutuhan
sistem, serta perancangan sistem yang akan dibuat. Dalam
implementasi diuraikan tentang pemilihan bahasa pemrograman yang
digunakan, perangkat keras yang diperlukan, pemrograman dan
pengujian aplikasi.
BAB V
PENUTUP
Berisikan tentang kesimpulan dari seluruh pembahasan yang telah
dikerjakan dari bab I sampai dengan bab IV serta saran–saran.
BAB II
LANDASAN TEORI
2.1
Definisi Informasi
Sumber Informasi adalah data. Data adalah fakta mentah mengenai
orang, tempat, kejadian, dan hal-hal yang penting dalam organisasi
(Whitten, 2004).
Menurut Davis (1999), Informasi adalah data yang sudah diolah
menjadi bentuk yang berarti bagi penerimanya yang bermanfaat dalam
pengambilan keputusan saat ini atau saat mendatang (Kadir, 2003).
2.2
Internet
Sebagai gambaran umum, internet adalah suatu jaringan komputer
global terbentuk dari jaringan-jaringan komputer lokal dan regional,
memungkinkan komunikasi data antar komputer-komputer yang terhubung
ke jaringan tersebut. Asal usul Internet berasal dari jaringan komputer yang
dibentuk pada tahun 1970an. Jaringan komputer tersebut disebut dengan
Arpanet, yaitu jaringan komputer yang dibentuk oleh departemen
pertahanan Amerika Serikat. Selanjutnya jaringan komputer tersebut
diperbarui dan dikembangkan, dan sekarang penerusnya menjadi tulang
punggung global untuk sumber daya informasi yang disebut dengan
internet. Namun demikian membayangkan Internet sebagai sekedar jaringan
Komputer adalah tidak tepat. Jaringan komputer hanyalah medium yang
membawa informasi. Daya guna Internet terletak pada informasi itu sendiri,
8
9
bukan pada jaringan komputer. Sebaiknya memperhatikan Internet sebagai
sumber daya informasi, bukan sebagai jaringan komputer.
2.3
Aplikasi Web
Aplikasi web dapat dibagi menjadi 2 kategori, yaitu web statis dan web
dinamis (Kadir, 2003).
a. Web Statis
Web statis adalah aplikasi web yang berisi atau menampilkan
informasi-informasi yang sifatnya statis (tetap). Disebut tetap karena
pengunjung tidak dapat berinteraksi dengan web tersebut. Pada web
statis pengunjung hanya dapat melihat isi dokumen pada halaman web.
Web statis biasanya menggunakan pemrograman web HTML dan tidak
memiliki database.
b. Web Dinamis
Web Dinamis adalah aplikasi web yang menampilkan informasi
serta dapat berinteraksi dengan pengunjung dengan menggunakan form
sehingga dapat mengolah informasi yang ditampilkan. Web dinamis
biasanya menggunakan pemrograman web PHP dan memiliki database
untuk menyimpan informasi, seperti MySQL.
2.4
Metode Pengembangan Perangkat Lunak
Ada beberapa model proses pengembangan perangkat lunak, namun
pada skripsi ini hanya akan dibahas tentang RAD (Rapid Aplication
Development) sebagai metode yang penulis pakai.
10
Beberapa alasan mengapa digunakan metode Rapid Application
Development (RAD) adalah :
1.
Aplikasi yang dikembangkan ini, merupakan aplikasi yang sederhana
dan tidak memerlukan waktu yang lama dalam pengembangannya.
Metode RAD mendukung untuk merancang aplikasi dalam jangka
waktu yang pendek.
2.
Aplikasi simulasi ini dalam implementasinya tidak memerlukan
pemeliharaan, sehingga sangat cocok apabila digunakan metode RAD,
karena metode ini tidak memiliki fase pemeliharaan.
3.
Alasan utama penggunaan model pengembangan RAD adalah model
pengembangan ini akan bekerja dengan baik bila diterapkan pada
aplikasi berskala kecil.
2.4.1
Model RAD
Menurut Martin (Pressman, 2002: 42), Rapid Aplication
Development (RAD) adalah sebuah model proses perkembangan
perangkat lunak sekuensial linier yang menekankan pada siklus
perkembangan cepat dengan menggunakan pendekatan konstruksi
berbasis komponen. Sehingga apabila kebutuhan dipahami dengan
baik, maka sistem fungsional yang utuh dapat diselesaikan dalam
waktu kira-kira 60 – 90 hari. Menurut Martin (Kendall & Kendall,
2003:239), fase dalam RAD dibagi menjadi empat, yaitu :
11
1. Fase Perencanaan Syarat-syarat
Pada fase ini pengguna tingkat tinggi memutuskan fungsi apa
saja yang harus difiturkan oleh aplikasi tersebut.
2. Fase Desain Pengguna
Pada fase ini pengguna diminta membahas aspek-aspek desain
non-teknis dari sistem dengan bimbingan penganalisis. Kerena
tingginya sifat interaktif, fase ini sering digabungkan dengan
fase konstruksi pada workshop desain RAD.
3. Fase Konstruksi
Pada fase ini setiap desain yang diciptakan dalam fase
sebelumnya
selanjutnya
ditingkatkan
untuk
dilakukan
pengkodean sistem. Kemudian setelah tahap ini selesai
dilakukan uji kemampuan untuk mendapatkan komentar, dan
revisi dari pengguna tingkat tinggi.
4. Fase Pelaksanaan
Tahap terakhir adalah dimana aplikasi baru diuji coba dan
pengenalan terhadap aplikasi.
Gambar 2.1. Fase RAD Martin (Kendal & Kendal, 2003: 238)
12
Umpan balik
pengguna
Menggunakan masukan
dari pengguna
Gambar 2.2. Workshop Desain RAD
(Kendal & Kendal, 2003: 240)
Menurut Butler (Pressman 2002: 41), seperti semua model
proses yang lain, pendekatan RAD memiliki kekurangan :
1. Bagi proyek yang besar tetapi berskala, RAD memerlukan sumber
daya manusia yang memadai untuk menciptakan jumlah tim RAD
yang baik.
2. RAD menurut pengembang dan pelanggan memiliki komitmen di
dalam aktifitas rapid-fire yang diperlukan untuk melengkapi
sebuah
sistem,
di
dalam
kerangka
waktu
yang
sangat
13
diperpendek. Jika komitmen tersebut tidak ada dari tiap kontituen,
proyek RAD akan gagal.
2.4.2
Data Flow Diagram (DFD)
Pendekatan analisis terstruktur diperkenalkan oleh DeMarco
(1978) dan Gane Sarson (1979) melalui buku metodologi struktur
analisis dan desain sistem informasi. Mereka menyarankan untuk
menggunakan data flow diagram (DFD) dalam menggambarkan atau
membuat model sistem.
DFD (Data Flow Diagram) adalah sebuah teknik grafis yang
menggambarkan
aliran
informasi
dan
transformasi
yang
diaplikasikan pada saat data bergerak dari input menjadi output yang
digambarkan dalam bentuk diagram yang menggunakan notasinotasi yang berupa simbol-simbol tertentu yang menunjukkan proses
atau fungsi, aliran data, tempat penyimpanan data, dan entitas
eksternal (Pressman,2002: 364).
Terdapat dua bentuk DFD yang ada sekarang ini, yaitu DFD
Fisikal (Diagram Arus Data Fisik) dan DFD Logikal (Diagram Arus
Data Logika).
DFD fisikal lebih tepat digunakan untuk menggambarkan
sistem (sistem yang lama). Penekanannya yaitu bagaimana prosesproses dari sistem diterapkan (dengan cara apa, oleh siapa dan
dimana) termasuk proses-proses manual, dengan mempertimbangkan
lingkungan fisik dimana data tersebut mengealir (misanya lewat
14
telepon, surat, dan sebagainya) atau lingkungan fisik dimanadata
tersebut akan disimpan (misalnya file kartu, hardisk, tape disk, dan
sebagainya).
DFD
adalah
alat
yang
digunakan
pada
metodologi
pengembangan sistem yang terstruktur (Structur Analys and Design)
dan merupakan alat bantu yang cukup populer sekarang ini, karena
dapat menggambarkan arus data dalam sistem dengan struktur yang
jelas.
Beberapa simbol dalam DFD dapat dilihat pada tabel di bawah
ini :
Tabel 2.1 Simbol DFD
Nama Simbol
1. Kesatuan Luar
Keterangan
Merupakan
Gambar Simbol
kesatuan
(entity) dilingkungan luar
sistem yang dapat berupa
orang,
organisasi
atau
sistem lainnya yang berada
di
lingkungan
yang
luarnya
memberikan input
atau menerima output dari
luar.
2. Arus Data
Arus Data (Data Flow) di
DFD yang bersimbol suatu
panah,
arus
data
ini
mengalir diantara proses,
simpanan data (Data store)
dan
kesatuan
luar
15
(External
Entity).
Arus
data ini menunjukan arus
data yang berupa masukan
untuk sistem atau hasil
dari proses sistem.
3. Proses
Suatu kegiatan kerja yang
dilakukan
oleh
orang,
mesin atau komputer dari
hasil suatu arus data yang
akan keluar dari proses.
4. Simpanan
Data
Simpanan
Data
Store)
(Data
merupakan
simpanan dari data yang
dapat berupa :
A. Suatu file atau database
di sistem komputer
B. Suatu arsip atau catatan
manual
C. Suatu
kotak
tempat
data dimeja seseorang
D. Suatu
tabel
acuan
manual
E. Suatu agenda atau buku
2.4.2.1 Tahapan Data Flow Diagram
Langkah-langkah di dalam membuat data flow
diagram dibagi menjadi tiga tahap, yaitu sebagai berikut:
16
1. Context Diagram
Diagram ini dibuat untuk menggambarkan sumber serta
tujuan data yang akan diproses atau dengan kata lain
diagram tersebut digunakan untuk menggambarkan
sistem secara umum dari keseluruhan sistem sistem yang
ada.
2. Diagram Zero
Diagram ini dibuat untuk menggambarkan tahapan
proses yang ada
di dalam context diagram, yang
penjabarannya lebih terperinci.
3. Diagram Detail
Diagram ini dibuat untuk menggambarkan arus data
secara lebih mendetail lagi dari tahapan proses yang ada
didalam zero diagram.
2.4.3
Entity Relationship Diagram (ERD)
Entity Relationship Diagram merupakan suatu model untuk
menjelaskan hubungan antar data dalam basis data berdasarkan
objek-objek dasar data yang mempunyai hubungan antar relasi. ERD
untuk memodelkan struktur data dan hubungan antar data, untuk
menggambarkannya digunakan beberapa notasi dan simbol. Pada
dasarnya ada tiga simbol yang digunakan, yaitu:
a.
Entiti : Entiti merupakan objek yang mewakili sesuatu yang
nyata dan dapat dibedakan dari sesuatu yang lain (Fathansyah,
17
1999: 30). Simbol dari entiti ini biasanya digambarkan dengan
persegi panjang.
b.
Atribut : Setiap entitas pasti mempunyai elemen yang disebut
atribut yang berfungsi untuk mendeskripsikan karakteristik dari
entitas tersebut. Isi dari atribut mempunyai sesuatu yang dapat
mengidentifikasikan isi elemen satu dengan yang lain. Gambar
atribut diwakili oleh simbol elips.
c.
Hubungan / Relasi : Hubungan antara sejumlah entitas yang
berasal dari himpunan entitas yang berbeda. Relasi dapat
digambarkan sebagai berikut:
Relasi yang terjadi diantara dua himpunan entitas (misalnya
A dan B) dalam satu basis data yaitu (Kadir, 2002: 48) :
1). Satu ke satu (One to one)
Hubungan relasi satu ke satu yaitu setiap entitas pada himpunan
entitas A berhubungan paling banyak dengan satu entitas pada
himpunan entitas B.
2). Satu ke banyak (One to many)
Setiap entitas pada himpunan entitas A dapat berhubungan
dengan banyak entitas pada himpunan entitas B, tetapi setiap
entitas pada entitas B dapat berhubungan dengan satu entitas pada
himpunan entitas A.
18
3). Banyak ke banyak (Many to many)
Setiap entitas pada himpunan entitas A dapat berhubungan
dengan banyak entitas pada himpunan entitas B.
2.5
Content Management Sistem
CMS (Content Management System) adalah suatu sistem yang
digunakan
untuk
mengelola
dan
memfasilitasi
proses
pembuatan,
pembaharuan, dan publikasi content secara bersama (collaborative content
management). Content mengacu pada informasi dalam bentuk teks, grafik,
gambar maupun dalam format-format lain yang perlu dikelola dengan tujuan
memudahkan proses pembuatan, pembaharuan, distribusi, pencarian,
analisis, dan meningkatkan fleksibilitas untuk ditransformasikan ke dalam
bentuk lain. Terminologi CMS sendiri cukup luas, di antaranya mencakup
software aplikasi, database, arsip, workflow, dan alat bantu lainnya yang
dapat dikelola sebagai bagian dari mekanisme jaringan informasi suatu
perusahaan maupun global.
CMS (Content Management System) terbukti merupakan sebuah aset
penting bagi perusahaan untuk mengelola content situs web dan portal
secara efisien dan efektif. Saat ini, berbagai perusahaan mengkombinasikan
content tak berstruktur dengan transaksi tradisional dan application logic
untuk membangun aplikasi berbasis Web. Web application ini mewujudkan
interaksi yang lebih personal dengan para user-nya, dan meningkatkan
kinerja perusahaan dengan menyediakan layanan mandiri bagi para
karyawan, partner, penyedia barang dan pelanggan. Aplikasi berbasis Web
19
yang semakin berdaya, secara tidak langsung meningkatkan peranan dan
pentingnya CMS sebagai bagian dari infrastruktur aplikasi perusahaan.
Dengan adanya CMS yang terintegrasi dengan sebuah WebSite akan
memberikan suatu nilai lebih yang akan meningkatkan fungsionalitas dan
fleksibiltas dari Web Site tersebut, terlebih pada WebSite yang tujuan
pemanfaatannya sebagai media promosi dan membangun citra konsumen,
dimana kontinuitas dan inovasi dalam pemasaran produk-produk secara
berkala dan berkesinambungan sebagai suatu hal yang memegang peranan
penting dalam tercapainya target pemasaran.
2.5.1 Joomla
Joomla adalah Contant management system (cms) Sumber
terbuka yang bebas ditulis dengan bahasa pemograman php dan data
base
MySQL baik
untuk
internet
maupun
intranet
Joomla
menyertakan banyak fitur untuk meningkatkan kinerja termasuk page
caching , web indexing , RSS freed , halaman untuk dicetak , web side
searchingdan dukungan Internasionalisasi. Nama Joomla berasal dari
sebutan phonetic sebuah kata bahasa Swahili “Jomla”dengan arti
kebersamaan atau kesatuan pilihan nama mencerminkan komitmen
para pengembang dan komunitasnya saat membentuk Joomla ketika
terjadi perpecahan dari Mambo di bulan Agustus 2005. Joomla
dibangun sebagai fork dari mambo dengan rilis perdana Joomla 1.0.0
pada tanggal 16 september 2005 mengembangkan versi dari mambo.
20
Menurut roadmap Joomla 2.0 code base akan ditulis ulang
sekelompok dibangun mengadopsi GNU (General Publik Licence).
Untuk membuat suatu Informasi Electronik yang mulai
berkembang saat ini diperlukan suatu CMS Content Management
system / server php yang digunakan untuk pembuatan/desain grafis,
dan juga memiliki penulis yang kreatif untuk mengisi halamanhalaman web site dengan Mambo ataupun Joomla, tidak menjadi
masalah karena seluruh tool memiliki fungsi yang sama. Meskipun
program ini menggunakan bahasa php, bukan berarti harus paham
seluruhnya tentang kode php. Bagi mereka tidak memahami kode
HTML, Javascript, ASP, CGI, , maupun php tidak perlu takut untuk
mempelajarinya karena meskipun tidak tahu tentang kode-kode
tersebut, orang bisa membuat sebuah web secara cepat dengan
beberapa fitur yang sangat kompleks yang dihubungkan dengan dalam
suatu jaringan local atau luas (internet).
CMS adalah software computer yang memfasilisasikan
pembuatan documen atau contant secara gotong royong dan
kolaboratif , CMS acap kali di artikan sebagai Aplikasi Web untuk
mengelola web site dan contant web , sementara untuk mengedit dan
membuat artikel disertakan software khusus client , ia juga dapat
digunakan untuk menyimpan documen perusahaan terutama seperti
operators manuals , tecnical manuals , sales guides dan sebagainya,
solusi cms banyak tersedia dalam bentuk open source yang bebas
21
pungli dengan teknik yang lebih luas portal system wiki system bared
group ware.
2.6 Tools Pengembangan Aplikasi
2.6.1
Adobe Photoshop
Adobe
Photoshop
adalah
merupakan
software
standar
profesional untuk pengolahan citra atau gambar (image) yang
memberikan lingkungan komprehensif bagi para desainer grafis
profesional untuk membuat desain grafis yang rumit untuk
kebutuhan percetakan, situs web, dan media lainnya (Sardi, 2004).
Gambar 2.3 Tampilan Adobe Photoshop CS3
2.6.2 Macromedia Dreamweaver 8
Macromedia dreamweaver 8 adalah sebuah aplikasi yang
digunakan untuk membuat web sites dibuat dengan kombinasi
22
tampilan visual tools, dikembangkan dengan banyak feature aplikasi
dan didukung dengan code editing, didesign untuk bisa disesuaikan
dengan setiap tingkatan kemampuan pemakai. Dreamweaver 8
dimasukkan banyak kemampuan baru untuk membantu membuat dan
mengatur website, baik dari pemula sampai dengan tingkat lanjut.
Aplikasi ini mendukung dengan sangat praktis dan dilengkapi dengan
teknologi terbaru. Dreamweaver 8 bisa dijalankan pada operation
system windows 2000, windows xp, dan Macintosh Mac OS® X 10.3
dan 10.4. dreamweaver 8 tidak bisa dijalankan pada windows 98,
windows 2000 server, windows 2003 server, atau Macintosh OS
10.2.x atau dibawah seri ini.
Fungsi coding Dreamweaver tidak hanya mendukung coding
HTML tetapi juga CSS (Cascading Style Sheet), Javascript,
Coldfusion, ASP (Active Server Pages), JSP (Java Server Pages), dan
Dreamweaver juga memungkinkan anda membangun website dengan
server berbahasa CFML (ColdFusion Markup Language), ASP.net,
ASP, JSP, dan PHP.
Dreamweaver
8
juga
mempunyai
kemampuan
untuk
mendukung pemrograman server side dan client side. Server side
digunakan untuk memproses data yang berhubungan dengan server,
misalnya pengolahan database. Client side merupakan bahasa
pemrograman tambahan sekaligus sebagai pelengkap dari bahasa
pemrograman lainnya
23
Gambar 2.4 Tampilan Dreamweaver 8
2.6.3 XAMPP
Xampp merupakan suatu paket yang terdiri dari Apache, MySQL,
PHP, dan Perl yang dapat digunakan untuk membantu proses instalasi
produk tersebut (Sukarno, 2006).
XAMPP merupakan pengembangan dari LAMP (Linux Apache,
MySQL, PHP and PERL), XAMPP merupakan project non profit
yang dikembangkan oleh Apache Friends yang didirikan Kai
’Oswalad’, Seidler dan Kay Vogelgesang pada tahun 2002, project
mereka ini bertujuan mempromosikan penggunaan Apache Web
Server. Xampp ditemukan pada musim semi tahun 2002.
Adapun keuntungan dari Xampp antara lain (Sukarno, 2006):
1. Xampp dapat berjalan pada operating system Linux dan Windows.
Dan kemungkinan juga akan berjalan di Machintosh.
2. Mudah bagi programmer apabila ingin berganti versi PHP, cukup
melakukan switch versi.
3. Mudah dan cepat dalam proses instalasi.
24
2.6.4 PHP
PHP adalah sebuah bahasa pemrograman yang diperintahnya
dilaksanakan pada server dan kemudian hasilnya ditampilkan pada
komputer klien. PHP juga merupakan HTML embedded, yaitu
perintah PHP dituliskan bersamaan dengan perintah-perintah HTML.
Dapat dikatakan tanpa HTML, maka PHP dapat digunakan
sebagaimana mestinya. HTML (HyperText Markup Language)
sendiri merupakan bahasa untuk membuat tampilan web. Jadi, disini
ada sinergi dari dua bahasa yang saling menguatkan, yaitu PHP dan
HTML (Arbai, 2004).
Menurut dokumen resmi PHP, PHP singkatan dari PHP
Hypertext Preprocessor yang merupakan bahasa berbentuk skrip
yang ditempatkan dalam server dan diproses di server. Hasilnyalah
yang dikirimkan ke klien, tempat pemakai menggunakan browser.
Secara khusus, PHP dirancang untuk membentuk web
dinamis. Artinya, dapat membentuk suatu tampilan berdasarkan
permintaan terkini. Misalnya, bisa menampilkan isi database ke
halaman Web. Pada prinsipnya, PHP mempunyai fungsi yang sama
dengan skrip-skrip seperti ASP(Active Server Page), Cold Fusion,
ataupun Perl.
Kelahiran PHP bermula saat Rasmus Lerdorf membuat
sejumlah skrip Perl yang dapat mengamati siapa saja yang melihatlihat daftar riwayat hidupnya, yakni pada tahun 1994. Skrip-skrip ini
25
selanjutnya dikemas menjadi tool yang disebut “personal home page”,
paket inilah yang menjadi cikal-bakal PHP. Pada tahun 1995, Rasmus
menciptakan PHP/FI versi 2. pada versi inilah pemrogram dapat
menempelkan kode terstruktur didalam tag HTML. Yang menarik,
kode PHP juga bisa berkomunikasi dengan database dan melakukan
perhitungan-perhitungan yang kompleks sambil jalan.
Pada saat ini, PHP cukup popular sebagai peranti
pemrograman Web, terutama di lingkungan Linux. Walaupun
demikian, PHP sebernarnya juga dapat berfungsi pada server-server
yang berbasis UNIX, Windows NT, dan Macintosh. Bahkan versi
untuk Windows 95/98 pun tersedia.
Script PHP menyatu dengan file HTML, dieksekusi dan
bekerja di komputer server (server side). PHP banyak digunakan
untuk membuat website yang dinamis. Dibawah ini adalah salah satu
contoh bagaimana script PHP menyatu dalam file HTML:
Sample.php
1 <html>
2
<head>
3
<title>sample php</title>
4
<head>
5
<body>
6
7
<?php
26
8
echo “uji sample php “;
9
?>
10
11
</body>
12
</html>
Baris ke-1 hingga ke-6 dan baris-10 hingga ke-12 adalah file
HTML. Script PHP disisipkan pada baris ke-7 yang diawali dengan
tag pembuka <?php pada baris ke-7. perintah untuk melakukan
operasi terdapat pada baris ke-8. akhir script PHP ditandai dengan tag
penutup ?> pada baris ke-9.
PHP pertama kali diperkenalkan oleh Ramus Lerdoft pada tahun
1995 untuk keperluan dinamisasi web site pribadinya. Saat ini PHP
telah berkembang seiring dengan sambutan komunitas open source di
Internet. PHP juga memenuhi
kebutuhan akan bahasa scripting server side yang sederhana,
kuat, dan memiliki konektivitas dengan beragam database server.
Salah satu database server yang paling populer adalah MySQL.
Web
Server
Skrip PHP
Mesin PHP
permintaan HTTP
Browser
Kode HTML
Gambar 2.5 Skema PHP
27
2.6.5 MySQL
MySQL adalah salah satu jenis database server yang sangat
terkenal, kepopulerannya disebabkan MySQL menggunakan SQL
sebagai bahasa dasar untuk mengakses databasenya. Selain itu, ia
bersifat free (tidak perlu membayar untuk menggunakannya) pada
berbagai platform (kecuali pada Windows, yang bersifat shareware
atau perlu membayar setelah melakukan evaluasi dan memutuskan
untuk digunakan untuk keperluan produksi). Perangkat lunak MySQL
sendiri
bisa
di-download
dari
http://www.mysql.org
atau
http://www.mysql.com.
2.7 Web Browser
Abdul Kadir mendefinisikan web browser sebagai perangkat lunak
yang berguna untuk mengakses informasi web ataupun untuk melakukan
transaksi via web. Beberapa contoh browser yang ada saat ini seperti:
Internet Explorer, Mozila Firefox, Opera, Netscape, Safari. Cara kerja
browser yaitu dengan membaca dokumen HTML yang diambil dari web
server melalui ISP sebagai koneksi internet, kemudian ditampilkan melalui
browser pada komputer (Kadir 2003).
Web browser berkomunikasi dengan web server lewat jaringan
komunikasi mengunakan protokol HTTP. Browser mengirim pesan
meminta dokumen atau layanan tertentu web server. Web server kemudian
menanggapi dengan mengirim dokumen atau menjalankan layanan tertentu
di server dan mengirim hasil menggunakan protokol HTTP. Kemudian
28
browser akan menerima dokumen (HTML) tanggapan dari web server dan
menampilkanya dilayar (Hariyanto, 2004). Protokol HTML dirancang untuk
dapat menggabung semua protokol internet seperti Goper, Telnet, WAIS,
dan sebagainya dalam satu protokol tunggal. Semua layanan protokol lain
dikemas sebagai layanan-layanan yang disediakan lewat interaksi web
browser dan web server.
BAB III
METODOLOGI PENELITAN
3.1. Metode Pengumpulan Data
Metode penelitian yang diterapkan dalam mendapatkan data dan
informasi yang mendukung dalam penelitian ini, sebagai berikut:
1. Studi Pustaka
Penelitian kepustakaan digunakan sebagai dasar pembahasan
secara teoritis dengan menggunakan data yang diperoleh dari lapangan
dan mengevaluasi hasil penelitian lapangan, teori-teori dan pandangan
dari buku-buku, bahan kuliah, pencarian melalui internet dan sumbersumber lainnya dalam penulisan karya tulis ini.
2. Studi Lapangan
Dalam melakukan penelitian di lapangan akan didapatkan data
yang terdapat dalam dokumen-dokumen instansi terkait, serta langsung
mengamati, mengevaluasi sistem informasi penjualan pada perusahaanperusahaan lain yang sudah mengimplementasikan sistem tersebut.
Pada penelitian ini juga akan dilakukan wawancara dengan narasumber
atau pihak-pihak yang berhubungan dengan masalah tersebut.
a. Teknik Wawancara, yaitu dengan langsung bertatap muka dengan
pihak-pihak terkait yaitu pembeli spare part motor.
b. Teknik Observasi, yakni dengan melakukan pengamatan langsung
terhadap hal-hal yang berhubungan dengan sistem informasi
29
30
pemesanan tersebut. Observasi dilakukan pada bengkel CBR Motor
Racing.
3. Studi Literatur
Studi literatur ini dilakukan dengan melihat penelitian dan skripsi
sejenis yang sudah ada. Merujuk pada penelitian yang telah dilakukan
oleh (Indah Sartika, Perancangan dan pembuatan sistem promosi dan
penjualan barang pada PT Papasamsu, 2004), dan (Denny Chandra
Haryanto, Pembuatan website untuk pemesanan barang di perusahaan
X, 2003).
3.2.
Metode Pengembangan Sistem
Metode membangun sistem adalah metode-metode, prosedurprosedur, konsep-konsep pekerjaan, aturan-aturan yang akan digunakan
untuk mengembangkan suatu sistem infomasi (Sutabri, 2004: 68).
Metode membangun sistem terdiri dari beberapa model dari proses
perangkat lunak yang umum digunakan, diantaranya: Model Sekuensial
Linear (Waterfall), Model Prototipe, Model RAD (Rapid Application
Development), dan Model Spiral (Pressman, 2002: 27).
Penulis memilih penelitian dengan menggunakan metode membangun
sistem model pendekatan RAD (Rapid Application Development). Penulis
menggunakan model RAD karena melihat dari aplikasi yang dikembangkan
adalah aplikasi yang sederhana dan tidak membutuhkan waktu yang lama,
metode RAD adalah metode yang diperuntukkan untuk jangka pendek
sesuai dengan aplikasi yang dikembangkan.
31
Model RAD yang pada awalnya diusulkan oleh James Martin (1991)
(http://en.wikipedia.org/wiki/Rapid_application_development), merupakan
suatu pendekatan berorientasi objek terhadap membangun sistem yang
mencakup suatu metode membangun perangkat-perangkat lunak.
Tujuannya adalah mempersingkat waktu pengerjaan aplikasi serta
proses yang dihasilkan didapat secara cepat dan tepat. Berikut merupakan
gambar dari model RAD, yang terlihat pada gambar 3.1 (Kendall &
Kendall, 2003: 237), di bawah ini :
Fase Perancangan syarat-syarat
Menentukan tujuan dan
syarat-syarat informasi
Umpan balik pengguna
Fase Perancangan
Fase Konstruksi
Bekerja dengan pengguna
untuk sistem perancangan
Membangun sistem
Menggunakan masukan dari pengguna
Memperkenalkan sistem
Fase Pelaksanaan
Gambar 3.1. Model membangun sistem RAD
Model RAD memiliki empat fase yaitu fase perencanaan syaratsyarat, fase perancangan, fase konstruksi, dan fase pelaksanaan (Kendall &
Kendall, 2003: 238). Berikut adalah penjelasan masing-masing fase dalam
penelitian ini.
32
1.
Fase Perencanaan Syarat-Syarat
Pada tahap ini dilakukan pengidentifikasian tujuan-tujuan
aplikasi atau sistem serta untuk mengidentifikasi syarat-syarat
informasi yang ditimbulkan dari tujuan-tujuan tersebut. Secara
terperinci yang penulis lakukan pada tahap Tujuan dan Syaratsyarat Informasi adalah:
a.
Menganalisa sistem yang berjalan.
b.
Mengidentifikasi permasalahan yang ada..
c.
Memberikan solusi permasalahan yang dihadapi.
Hasil yang penulis dapatkan dari tahap Tujuan dan Syarat-
syarat Informasi adalah:
a.
Memperoleh informasi mengenai sistem pemesanan spare
part motor yang berjalan.
b.
Memperoleh informasi dari permasalahan dalam melakukan
pencatatan secara manual.
c.
Dibutuhkan aplikasi yang dapat mencatat dan menyimpan
data pemesanan dan data pembeli dengan menerapkan sistem
pemesanan online.
2.
Fase Perancangan
Pada tahap ini dilakukan perancangan proses yaitu
perancangan proses-proses yang akan terjadi di dalam sistem.
33
a.
Perancangan Proses
Perancangan proses-proses yang akan dilakukan didalam
sistem menggunakan bagan alir DFD (Data Flow Diagram)
yakni dengan membuat diagram konteks, diagram level nol,
dan diagram level satu pada sistem yang akan diusulkan.
b.
Perancangan Basis Data
Pada aplikasi sistem pemesanan ini digunakan database
sebagai
pelengkap
program
seperti
registrasi,
proses
pemesanan, input data produk dan proses penyimpanan data
produk. Database yang digunakan adalah database MySQL.
c.
Perancangan Antarmuka (User Interface)
Pada perancangan antarmuka (user interace) dilakukan
langkah menganalisis atau merencanakan tampilan untuk tata
letak sesuai dengan fungsi aplikasi.
3.
Fase Konstruksi
Pada tahap ini dilakukan pembuatan program terhadap
rancangan-rancangan yang telah didefinisikan. Pembuatan program
yang dilakukan menggunakanbahasa pemrograman PHP, joomla
sebagai template CMS, dan adobe photoshop untuk mengedit
gambar-gambar pada website.
34
4.
Fase Pelaksanaan
Pada tahapan ini dilakukan pengujian terhadap aplikasi
sistem pemesanan yang telah dibuat, pada pengujian terhadap
aplikasi ini, penulis menggunakan pengujian black-box yaitu suatu
pengujian yang berfokus pada persyaratan fungsional perangkat
lunak (Pressman, 2002: 551). Sebagai akhir dari fase pelaksanaan
penulis juga meminta tanggapan user tentang aplikasi ini untuk
bahan evaluasi.
3.2. Kerangka Berfikir Penelitian
Studi Pustaka
Metode Pengumpulan
Data
Wawancara
Studi Lapangan
Observasi
Studi Literatur
Fase Perencanaan
Syarat-Syarat
Perancangan Proses
Fase Perancangan
Perancangan Basis
Data
Fase Konstruksi
Perancangan Antar
Muka
Metode Pengembangan
Sistem
Fase Pelaksanaan
Gambar 3.2 Kerangka Berfikir Penelitian
BAB IV
PEMBAHASAN DAN IMPLEMENTASI
4.1. Metodologi Pengumpulan Data
Penyusunan skripsi ini dilakukan dengan menggunakan beberapa
metode yang dapat mendukung penulisan, baik dalam pengumpulan data
maupun informasi yang diperlukan, untuk mendapatkan kebenaran materi
uraian pembahasan.
4.1.1. Studi Pustaka
Studi pustaka digunakan dengan membaca dan mempelajari
referensi yang ada, e-book, serta mencari referensi tambahan dari
internet. Buku utama yang digunakan peneliti yaitu : Super Market
Online (Dedik, 2010), Membangun Website Dengan CMS Joomla
(Hidayat, 2009), Membangun Website Dinamis Interaktif dengan
PHP-MySQL (Windows & Linux) (Muhammad, 2006) dan bukubuku selengkapnya yang digunakan dapat dilihat pada daftar
pustaka.
4.1.2. Studi Lapangan
Studi Lapangan dilakukan dengan mendatangi langsung tempat
penelitian, yaitu pada bengkel CBR Motor Racing.
4.1.2.1. Wawancara
Disini dilakukan tanya jawab oleh peneliti sambil
bertatap muka antara pewawancara dengan narasumber
35
36
yaitu Bapak Umar Aryo Seno (Pemilik CBR Motor Racing)
yang dilakukan pada tanggal 23 Juni 2011 di bengkel CMR
Jakarta.
4.1.2.2. Observasi
Pada
metode
Observasi,
peneliti
melakukan
pengamatan langsung di lapangan untuk mengetahui secara
langsung keadaan objek penelitian yang sebenarnya. Hal ini
bertujuan untuk memperoleh penjelasan mengenai data-data
dan informasi yang dibutuhkan dalam penelitian pada
bengkel CBR Motor Racing Jakarta.
1. Gambaran Umum Perusahaan
CMR (CBR Motor Racing) merupakan suatu
usaha rumahan yang sudah dirintis oleh pemiliknya
sejak tahun 2008. Bermula dari suatu komunitas forum
Motor Honda CBR dan pemiliknya hobi dalam hal
memodifikasi sekaligus service motor, lambat laun
pemilik CMR tersebut ingin memulai bisnisnya ke
penjualan suku cadang motor khususnya Honda CBR.
Dimulai dari aksesoris, service sampai ke suku cadang
yang susah dicari sekalipun dapat dicari di sini.
Memulai
dengan
memperkenalkan
produk-
produknya melalui jejaring sosial facebook ternyata
mendapatkan respon yang sangat baik dari masyarakat
37
yang mencari produk seperti aksesoris dan sparepart.
Dikarenakan penjual menjual produknya yang sifatnya
unik dan susah di cari di pasaran. Dengan pelanggan
yang semakin hari semakin bertambah memberikan
peluang pada usaha ini untuk dapat mengembangkan
lagi usahanya. Namun selain mendapat peluang usaha
yang besar tidak terlepas dari permasalahan yang
timbul seperti kompleksitas pemesanan yang tinggi
memungkinkan pihak CMR harus dapat memanajemen
dengan baik setiap pemesanan yang dilakukan oleh
pelangannya. Tidak hanya memperkenalkan suatu
produknya saja melalui media internet ini juga harus
bisa memberikan fasilitas kepada pelanggannya agar
dapat melakukan pemesanan secara online untuk
memberikan kenyamanan dalam melakukan pemesanan
produk.
Hal-hal diatas tersebut dapat dilakukan apabila
ada suatu sistem yang dapat memenuhi permasalahanpermasalahan diatas yaitu dengan dibuatkannya sistem
informasi pemesanan online berbasis website. Untuk itu
CMR ingin membuat sistem pemesanan dan penjualan
online berbasiskan website. Jadi setiap pelanggan yang
38
ingin memesan produk tinggal langsung memesannya
melalui situs yang akan dibuat tersebut.
2. Hasil Observasi
Observasi yang dilakukan pada bengkel CMR
memberikan kesimpulan bahwa promosi penjualan
spare part motor dengan menggunakan media brosur
dan promosi dari mulut ke mulut kurang efektif, karena
pelanggan yang datang tidak terlalu banyak. Selain itu,
pencatatan
pemesanan
spare
part
motor
masih
dilakukan secara manual. Hal ini memungkinkan
terjadinya kesalahan pencatatan ataupun hilangnya
data. Pembeli pun harus memesan barang secara
langsung dengan datang ke bengkel sehingga pelayanan
yang diberikan kurang. Oleh karena itu diperlukan
suatu aplikasi pemesanan online dengan sebuah
teknologi
masa
kini
yang
dapat
memberikan
kemudahan terhadap pembeli.
4.1.3 Studi Literatur
Studi literatur ini dilakukan dengan melihat penelitian dan
skripsi sejenis yang sudah ada. Merujuk pada penelitian yang telah
dilakukan oleh (Indah Sartika, Perancangan dan pembuatan sistem
promosi dan penjualan barang pada PT Papasamsu, 2004), dan
(Denny Chandra Haryanto, Pembuatan website untuk pemesanan
39
barang di perusahaan X, 2003). Kelebihan yang akan ditambahkan
pada aplikasi yang akan dibuat antara lain yaitu : menambahkan fitur
status order pada admin, dan form guest book agar konsumen selain
member, juga dapat berinteraksi.
4.2. Metode Pengembangan Sistem
4.2.1. Fase Perencanaan Syarat – Syarat
Pada tahap ini dilakukan analisa kebutuhan masalah untuk
pembuatan aplikasi, mengedintifikasi permasalahan, dan
memberikan solusi terhadap permasalahan yang dihadapi.
1. Analisa Kebutuhan Masalah
a. Analisa Sistem Yang Sedang Berjalan
Sistem yang berjalan pada bengkel CMR adalah sebagai
berikut :
1. Informasi tentang produk disebarkan melalui pembagian
selebaran atau brosur, promosi dari mulut ke mulut, dan
media massa lainnya kepada masyarakat umum.
2. Pemesanan dan pembelian oleh konsumen dilakukan
dengan cara datang langsung ke bengkel.
Bagan alir sistem yang sedang berjalan digambarkan
pada gambar 4.1 dibawah ini :
40
Gambar 4.1 Diagram Sistem yang Berjalan
b. Kelemahan Sistem yang Berjalan
Berdasarkan analisa sistem berjalan di atas, maka didapat
kelemahan sistem yang berjalan sebagai berikut:
1. Promosi produk yang dilakukan menggunakan media
konvensional seperti promosi dari mulut ke mulut dan
media cetak kurang efektif karena tidak menjangkau
pembeli secara luas.
2. Pembeli harus datang sendiri untuk membeli produk yang
diinginkannya sehingga pembeli hanya terbatas pada orang
yang mau datang ke tempat penjualan saja.
41
3. Data pembelian yang dicatat secara manual juga berpotensi
terjadi kesalahan atau human error.
c. Solusi Pemecahan Masalah
Pemecahan masalah yang penulis lakukan dalam
menyelesaikan masalah adalah dengan pembuatan aplikasi
pemesanan spare part secara online berbasis web. Website
yang dibuat akan dijadikan sebagai media promosi sekaligus
untuk memesan barang dimana penjual telah memasukkan data
barang-barang yang akan dijual.
d. Analisis Sistem Usulan
Dengan adanya website pemesanan barang, masyarakat
yang ingin mencari informasi produk mengenai spare part
kendaraan bermotor tidak perlu repot untuk datang langsung
ke bengkel-bengkel tertentu masyarakat bisa mengakses
website tersebut melalui komputer tanpa ada batasan waktu.
Konsumen juga dapat melakukan pemesanan langsung secara
online.
Bagan alir sistem yang sedang berjalan digambarkan
pada gambar 4.2 dibawah ini :
42
Gambar 4.2 Diagram Sistem Usulan
Tabel 4.1 Perbandingan sistem berjalan dengan sistem usulan
No
1
Sistem Berjalan
Sistem yang Diusulkan
Hasil yang Ingin Dicapai
Pembeli atau
Pembeli atau konsumen
Data transaksi melalui sistem
konsumen
bisa melakukan
pemesanan ini dapat
melakukan untuk
pemesanan di rumah
dilakukan dengan mudah dan
memesan harus
dengan menggunakan
cepat yang dapat dilakukan
datang langsung ke
fasilitas internet. Dengan
dimana saja dan kapan saja
toko
menggunakan aplikasi
tanpa batas waktu. Sehingga
pemesanan berbasis web.
menguntungkan kedua belah
pihak (penjual dan pembeli).
43
2
Untuk promosi
Produk dapat di
Setiap ada produk baru yang
produk mengunakan
promosikan melalui media
akan ditawarkan dapat diolah
media iklan seperti
internet seperti forum
melalui fasilitas admin.
brosur, majalah dan
forum sosial diantarnya
koran, hal tersebut
facebook, twitter, frienster
sangat banyak
dan media sosial lainnya.
mengeluarkan biaya
ketika ingin
melakukan promosi
secara terus menerus
setiap ada produk
baru.
3
Perhitungan dan
Pengecekan data stok
Stok barang bisa di
pengecekan stok
barang dilakukan secara
manajemen oleh admin
barang masih
komputerisasi dengan
melalu fasilitas stok barang
dilakukan secara
aplikasi sederhana
yang tersedia di website
manual dengan
misalnya exel dan access.
tersebut.
Media penyimpanan
Penyimpanan tersusun
Dengan adanya basis data ini,
masih bersifat
secara rapih dan terstruktur dapat memudahkan dalam
manual, dengan
dengan menggunakan
pengolahaan data,yaitu
media kertas dan
basis data dalam aplikasi
mencari maupun
dokumen atau data-
pemesanan berbasis web
mendapatkan data-data
data tidak tersusun
ini.
tersebut dan data tersebut
pencatatan melalui
kertas.
4
secra terstruktur dan
dapat tersimpan secra aman
rapih.
dan rapih di dalam basis data.
44
2. Tujuan
Peneliti bertujuan untuk membuat suatu aplikasi pemesanan
barang berbasis web yang dapat diakses kapanpun dimanapun
dengan menggunakan internet, sehingga proses promosi dan
pemesanan produk kepada konsumen menjadi mudah.
3. Syarat-syarat
Untuk mewujudkan tujuan tersebut dibutuhkan beberapa
syarat minimum dalam pembuatan aplikasi pemesanan spare part
motor berbasis web ini yaitu meliputi hal-hal sebagai berikut :
1. Web server
Web server merupakan syarat mutlak suatu aplikasi
berbasis web. Web server merupakan platform untuk
menjalankan
suatu
aplikasi
berbasis
web.
Untuk
pengembangan aplikasi ini dibutuhkan minimum Web Server
Apache 2.0
2. Bahasa Pemrograman
Bahasa
pemrograman
dibutuhkan
untuk
dapat
membangun sebuah aplikasi, agar komputer dapat melakukan
berbagai operasi dan fungsi sesuai dengan keinginan user.
Untuk itu dibutuhkan suatu bahasa pemrograman yang dapat
digunakan untuk membuat aplikasi client server. Bahasa
pemrograman yang dibutuhkan dalam pengembangan aplikasi
ini adalah Joomla versi 1.0 dan PHP 5.2.5.
45
3. Database
Pengelolaan database akan digunakan untuk pelengkap
program seperti proses login serta proses pemesanan dan
penyimpanan file produk. Database yang dibutuhkan adalah
database MySQL 5.0.5.1.
Spesifikasi perangkat lunak dan perangkat keras minimum
yang diperlukan dalam pembuatan aplikasi ini adalah sebagai
berikut :
2.
Perangkat Lunak :
a.
Paket web server Xampp versi 1.6.6a
(Apache 2.0., PHP 5.2.5.,, MySQL 5.0.5.1)
3.
b.
Macromedia Dreamweaver 8.
c.
Mozilla Firefox 3.0.
d.
Microsoft Windows XP.
Perangkat Keras :
a.
b.
Personal Computer
1)
Processor : Intel Pentium IV.
2)
RAM : Memory 256 MB
3)
Harddisk : 80 GB
4)
VGA : 128 MB
Monitor dengan resolusi 800x600 pixel.
46
4.2.2 Fase Perancangan
Tahapan selanjutnya dalam RAD setelah menganalisis masalah
pada sistem yang berjalan adalah tahap perancangan sistem yang
bertujuan untuk mengatasi permasalahan-permasalahan yang ada dan
memberikan usulan rancangan sistem.
1. Perancangan Data Flow Diagram (DFD)
DFD merupakan alat perancangan sistem yang berorientasi
pada alur data dengan konsep dekomposisi yang dapat digunakan
untuk penggambaran analisa maupun rancangan sistem yang
mudah dikomunikasikan oleh profesional sistem kepada pemakai
maupun pembuat program. Berikut merupakan gambaran umum
website Pemesanan barang Online dalam bentuk DFD.
a. Diagram Konteks
Diagram
konteks
merupakan
diagram
yang
memperlihatkan aplikasi sebagai bentuk satu proses yang
terjadi atau pemetaan yang terjadi.
Memesan Produk
Konsumen
Info Produk dan
Bukti Pembayaran
Aplikasi
Pemesanan
Spare Part
Motor Online
Data Pelanggan dan
Data Pemesanan Produk
Administrator
Olah data Pemesanan
dan Produk
Gambar 4.3 Diagram Kontex
47
Dalam konteks diagram pada gambar 4.3 terdapat dua
entity yang menunjang proses aplikasi ini yaitu konsumen dan
administrator
b. Diagram Zero
Diagram ini untuk mendetailkan setiap proses yang terjadi
pada diagram zero sistem yang diusulkan.
1.0
Konsumen
Username,Password
user
registrasi
User, status user
Admin
User, status user
user
User
User,,status
Username,
Password
Nama
konsumen,alamat,produk
bukti_pemesanan
username
Nama Produk,
jumlah produk
2.0
Transaksi,alamat
Pemesanan
produk
Stok produk
Username,
produk
Order status
order
Produk
Order status
Stok produk
3.0
Nama produk
Kategori
Stok produk
Mengelola
data
Gambar 4.4 Diagram Zero sistem yang diusulkan
48
Pada gambar 4.4 ini, terdapat entity yaitu konsumen dan
admin. Sistem ini memiliki tiga proses yaitu : proses 1.0 yakni
proses registrasi, proses 2,0 yakni proses pemesanan barang,
dan proses 3.0 yakni proses mengolah data.
c. Diagram Rinci
1) Diagram Rinci / Level 2 proses ke-1
Diagram Gambar 4.5 menjelaskan secara detail dari
proses 1 yaitu proses mengolah
data user
yakni
pendaftaran user dan proses mempebaharui data user yang
diperoleh dan disimpan di database user.
49
2) Diagram Rinci / Level 2 proses ke-2
Diagram Gambar 4.6 menjelaskan secara detail dari
proses 2 yaitu proses memilih produk, yaitu pemilihan
produk yang dilakukan oleh konsumen. Kemudian proses
menentukan produk, yakni konsumen telah menentukan
produk apa saja yang akan dibeli. Setelah itu proses
konfirmasi pemesanan,yaitu konsumen mengkonfirmasi
pemesanannya dan akan disimpan dalam database order.
Pada proses Melihat data pemesanan, admin dapat melihat
data pemesanan yang ada dalam database order.
50
3) Diagram Rinci / Level 2 proses ke-3
3.1
Mengedit status
pemesanan
admin
Order status
Order status
order
Nama konsumen
3.2
Nama konsumen
Menghapus data
pemesanan
Nama produk
Kategori
Stok produk
3.3
Nama produk
Kategori
Stok produk
produk
Menambah
produk
Nama produk
Kategori
Stok produk
3.4
Mengedit
produk
3.5
Nama produk
Nama produk
Kategori
Stok produk
Nama produk
Menghapus
produk
Gambar 4.7 Diagram Level 2 proses ke-3
Diagram pada gambar 4.7 menjelaskan secara detail
dari proses 3 yaitu proses mengedit status pemesanan,
menghapus data pemesanan, menambah produk, mengedit
produk yang tersimpan dalam database produk, dan
menghapus produk.
51
2. Perancangan Basis Data
Basis data dalam aplikasi absensi ini diimplementasikan
menggunakan Mysql yang terintegrasi dengan PHP.
a. Entity Relationship Diagram (ERD)
Perancangan basis data ini termasuk didalamnya meliputi
bentukan
ER
Diagram
diimplementasikan
dalam
yang
berikutnya
bentuk
tabel-tabel
akan
dengan
keterkaitan atau keterhubungannya diantara tabel tersebut.
Perancangan DFD yang telah digambarkan sebelumnya
kemudian dilanjutkan dengan perancangan database yang akan
digunakan pada aplikasi ini dengan penggambaran database
ER (Entity Relationship) Diagram sebagai berikut :
olah
Admin
Usernam
1
Passwor
idAdmin
M
idUser*
M
M
User
usernam
Stok
order
Produk
Gambar
password
Alamat
idProdk
Nama
Keterang
Telp
Kategori
Nama
Email
Harga
idorder
Jumlah order
IDUser*
Status
idProduk **
Gambar 4.8 Entity Relationship Diagram (ERD)
52
b. Spesifikasi Tabel
1. Nama Database : commercedb
Nama Tabel
: Produk
Primary Key
: idProduk
Foreign Key
:Tabel 4.2 Tabel Produk
No
Nama Field
Type
Size
Keterangan
1
Id_produk*
INT
4
ID Produk
2
Kategori
Varchar
55
Kategori Produk
3
Nm_prdk
Varchar
55
Nama Produk
4
Hrg_Prdk
INT
6
Harga Produk
5
Gambar
Varchar
55
Gambar Produk
6
Ket
Text
55
Keterangan Produk
2. Nama Tabel
: User
Primary Key
: idUser
Foreign Key
:Tabel 4.3 Tabel User
No
Nama Field
Type
Size
Keterangan
1
Id_user*
INT
4
ID User
2
Username
Varchar
55
Username
3
Password
Varchar
55
Password User
4
Nama
Text
55
Nama User
5
Email
Text
55
Email User
6
Alamat
Text
55
Alamat User
7
Status User
Text
55
Status User
53
3. Nama Tabel
: Order
Primary Key
: idOrder
Foreign Key
: idUser, idProduk
Tabel 4.4 Tabel Order
No
Nama Field
Type
Size
Keterangan
1
id_Order*
INT
4
ID Produk
2
Jumlah_Order
INT
55
Kategori Produk
3
Status_Order
Varchar
55
Nama Produk
4
id_User**
INT
4
Harga Produk
5
id_Produk**
INT
4
Gambar Produk
3. Rancangan Tampilan (User Interface)
1. Rancangan Tampilan Home
Halaman ini merupakan halaman depan dari semua halaman
yang ada pada website ini. Halaman ini juga dapat disebut
sebagai halaman pembuka, karena pada saat pertama website
dibuka maka halaman inilah yang akan tampil sebelum halaman
yang lainnya. Tampilan menu utama terdiri dari beberapa menu
yang dapat membuka halaman lain seperti tampilan Home, Store
Online, GuestBook, Contact dan Admin. Rancangan halaman
selanjutnya sama
rancangan tampilan Home hanya yang
membedakannya adalah isinya. Rancangan tampilan menu
utama dapat dilihat pada gambar 4.9
54
:: BANNER ::
:: BANNER::
Home | Store Online | GuestBook | Admin
Daftar Pengunjung
Text Selamat Datang
Main Menu
Time
Pools
Link
Link2
Link3
Link4
Login Form
UserName
Password
Password
LOGIN
Gambar 4.9 Rancangan Halaman Index
2. Rancangan Tampilan Pooling
Pada rancangan tampilan atau halaman pooling ini akan
menampilkan persentasi dari pertanyaan yang diajukan kepada
para pengunjung website. Apakah website tersebut bermanfaat
atau tidak bagi pengunjung website. Ketika di input pilihannya
maka akan mucul persentasi dari setiap jawaban yang ada.
Untuk rancangannya dapat dilihat pada gambar 4.10 berikut :
55
:: BANNER::
Home | Store Online | GuestBook | Admin
Daftar Pengunjung
Bagaimana pendapat anda tentang
fasilitas toko online pada website ini?
a. Sangat Baik
----------------------------- 90%
b. Baik
--------------- 45 %
c. Biasa Saja
----- 22 %
d. Tidak Baik
-- 10 %
Main Menu
Link1
Link2
Link3
Link4
Time
Pools
Login Form
UserName
Password
LOGIN
Gambar 4.10 Rancangan Halaman Pooling
3. Rancangan Tampilan Store Online
Pada rancangan halaman produk ini akan menjelaskan
mengenai produk - produk yang akan diperjualbelikan secara
online, dengan terlebih dahulu memilih kategori produk yang
akan dipesan kemudian pilih produk yang akan dipesan, tetapi
sebelumnya pengunjung website haruslah melakukan registrasi
terlebih dahulu apabilia ingin melakukan pemesanan produk.
56
Untuk rancangan halamn produk adalah seperti pada gambar
4.11.
:: BANNER::
Home | Store Online | GuestBook | Admin
Daftar Pengunjung
Time
Gambar
Produk
Quantity :
Main Menu
Ket …
xxxxxxxxxxxxx
xxxxxxxxxxxx
Gambar
Add To Chart
Pools
Link1
Link2
Link3
Link4
Gambar 4.11 Rancangan Halaman Produk
4. Rancangan Tampilan Shopping Cart
Dalam rancangan halaman shooping cart ini yang
merupakan halaman yang akan mengakumulasikan harga
pemesanan setiap produk yang telah dipesan oleh pengunjung
website ataupun konsumen. Dijelaskan dalam halaman ini
57
mengenai penambahan produk dan penambahan item per
produk. Untuk rancangannya dapat dilihat pada gambar 4.12.
:: BANNER::
Home | Store Online | GuestBook | Admin
Daftar Pengunjung
Main Menu
Link1
Link2
Link3
Link4
Time
Shooping Cart
Nama
Harga
xxxx
Rp. xxx
Quantity
Subtotal
Rp.xxx
Update
Hapus
Sub-Total: Rp. xxx
Total
: Rp. xxx
Pools
<< Lanjut Belanja | Check Out >>
Gambar 4.12 Rancangan Halaman Shopping Cart
5. Rancangan Tampilan Registrasi
Halaman registrasi ini dibuat untuk mengisi data – data
pengunjung, seperti nama, alamat, telp, email dan lain
sebagainya. Pada halaman registrasi ini nantinya akan menjadi
acuan untuk biodata pengunjung yang dapat dijadikan subjek
apabila pengunjung itu melakukan pemesanan produk ataupun
58
mengisi forum tanya jawab yang ada pada website tersebut.
Untuk rancangan halaman registrasi dapat dilhat pada gambar
4.13.
:: BANNER::
Home | Store Online | GuestBook | Admin
Daftar Pengunjung
Time
Main Menu
Pools
Link1
Link2
Link3
Link4
Gambar 4.13 Rancangan Halaman Registrasi
6. Rancangan Halaman GuestBook
Dalam halaman forum atau guest book ini dimaksudkan
untuk setiap pengunjung dapat mengisi forum tersebut. Untuk
forum itu bisa berisi komentar maupun saran ataupun
pertanyaan – pertanyan yang berhubungan dengan website ini.
Untuk rancangannya dilhat pada gambar 4.14.
59
:: BANNER::
Home | Store Online | GuestBook | Admin
Daftar Pengunjung
Nama
Subjek
Icon
Message
:
:
:
:
Image
File Attach
:
:
Main Menu
Link1
Link2
Link3
Link4
Login Form
Submit
UserName
Password
LOGIN
Gambar 4.14 Rancangan Halaman Guest Book
7. Rancangan Halaman Contact Us
Rancangan halaman kontak kami ini dimaksudkan untuk
mencantumkan alamat pemilik ata toko ini dengan alamatnya
sendiri dimana lokasi pemilik atau toko itu
rancangannnya dilhat pada gambar 4.15.
berada. Untuk
60
:: BANNER::
Home | Store Online | GuestBook | Admin
Daftar Pengunjung
::Contact Us::
Time
Jl. raya Pasar Lama No. 18 Lewiliang Bogor Indonesia Country 443212
Phone
0251-8647424
Main Menu
Email
[email protected]
Link1
Link2
Link3
Link4
Pools
Login Form
UserName
Password
LOGIN
Gambar 4.15 Rancangan Halaman Contact Us
8. Rancangan Halaman List Order
Halaman List Order berisi daftar order yang telah
dimasukkan oleh user. Pada daftar order, terdapat nama user,
order detail, tanggal order, status order, dan jumlah total harga
barang yang dipesan. Tampilan halaman List Order dilhat pada
gambar 4.16.
61
:: BANNER::
Admin Product Orders
Oder
Number
Name
Order
Detail
Order
Date
Status
Sub Total
Gambar 4.16 Rancangan Halaman List Order
9. Rancangan Order Detail
Pada halaman Order Detail, ditampilkan keterangan
lengkap dari pemesanan yang dilakukan oleh pembeli. Order
Detail mencakup informasi order, informasi pembeli,dan
informasi produk yang dibeli. Tampilannya dilhat pada gambar
4.17.
62
:: BANNER::
Admin Product Orders
Order Information
Costumer Information
Name :
Contact :
Email :
Order Items
Product Name :
Price
:
Quantity
:
Subtotal
:
Gambar 4.17 Rancangan Halaman Order Detail
4.2.3 Fase Konstruksi
Pada tahap ini penulis melakukan pembangunan sistem aplikasi
yang telah dirancang sebelumnya. Pembangunan aplikasi meliputi
pemenuhan kebutuhan hardware (perangkat keras) dan Software
(perangkat lunak) yang digunakan.
1. Pemrograman
Pada tahap ini penulis menggunakan bahasa pemrograman
dengan PHP, sedangkan software yang digunakan dalam
pembuatan aplikasi ini yaitu Joomla dan komponen Virtue Mart
sebagai template CMS, Adobe Photoshop CS2 untuk mengedit
gambar-gambar, Macromedia Dreamweaver 8, dan sebagai
software yang menunjang database, penulis menggunakan MySQL.
63
2. Spesifikasi Hardware dan Software
1.
Perangkat Keras (Hardware)
1. Processor Genuine Intel(R) Core(TM) 2 Duo CPU T6570
@ 2.1GHz.
2. Harddisk 320 GB.
3. Memory DDR 2 GB.
4. Monitor dengan resolusi 1280x800 pixel.
2. Perangkat Lunak (Software)
Spesifikasi perangkat lunak (software) yang penulis
gunakan dalam perancangan aplikasi ini dijelaskan sebagai
berikut :
1. Sistem Operasi : Windows XP Service Pack 2.
2. Webserver : Xampp v 1.6.6a (Apache 2.0, PHP 5.2.5,
MySQL 5.0.5.1)
3. Browser : Mozilla Firefox 3.5.2.
4. Adobe Photoshop CS3.
5. Macromedia Dreamweaver 8
4.2.4 Fase Pelaksananaan
Pada tahap ini dilakukan pengujian terhadap sistem dan
melakukan pengenalan terhadap sistem. Penulis menggunakan metode
pengujian dengan pendekatan blackbox testing. Metode blackbox
testing melakukan pengujian tanpa melihat source code program dan
64
dijalankan oleh tester atau user untuk mengamati program apakah
telah menerima input, memproses, dan menghasilkan output, dan
ternyata berjalan dengan benar. Hasil pengujian dapat dilihat pada
Tabel 4.5 Hasil Pengujian Aplikasi dengan Black Box Testing.
Tabel 4.5 Hasil Pengujian Aplikasi
No
1
Rancangan Proses Hasil yang Diharapkan
Klik menu Home
Masuk halaman home
Hasil
Keterangan
Ok Dapat dilihat pada
Lampiran B Gambar 1
2
Klik Register
Masuk halaman registrasi,
isi data registrasi
Ok
Dapat dilihat pada
Lampiran B Gambar 2
3
Klik menu Login
user
Masuk halaman Login, isi
nama dan password
Ok
Dapat dilihat pada
Lampiran B Gambar 1
4
Klik menu Store
Online
Masuk halaman Store
Online
Ok
Dapat dilihat pada
Lampiran B Gambar 3
5
Klik menu
Categories
Masuk halaman List
Produk
Ok
Dapat dilihat pada
Lampiran B Gambar 4
6
Klik tombol Add to
Chart
Menambahkan barang
pada keranjang belanja
Ok
Dapat dilihat pada
Lampiran B Gambar 6
7
Klik tombol
Checkout
Masuk halaman
Konfirmasi Order
Ok
Dapat dilihat pada
Lampiran B Gambar 8
8
Klik tombol
Confirm Order
Mengkonfirmasi
pemesanan dan isi biodata
Ok
Dapat dilihat pada
Lampiran B Gambar 7
9
Klik tombol Log
Out
Kembali ke halaman
Home
Ok
Dapat dilihat pada
Lampiran B Gambar 1
10
Klik menu Order
Melihat daftar pemesanan
OK
Dapat dilihat pada
Lampiran B Gambar
11
BAB V
PENUTUP
5.1 Kesimpulan
1. Dengan adanya website ini, akan lebih mempermudah pihak CMR untuk
melakukan pengelolaan pemesanan. Hal ini terlihat pada halaman order
list dimana admin dapat melihat dan menghapus pemesanan. Halaman
order list dapat dilihat pada lampiran B gambar 11.
2. Memepermudah konsumen mendapatkan informasi mengenai produkproduk yang akan dibelinya pada website ini. Hal ini dapat dilihat pada
lampiran B gambar 4 dan 5.
3. Pemesanan barang dapat dilakukan secara langsung melalui website ini.
Konsumen tidak harus datang ke bengkel untuk memesan barang. Hal ini
dapat dilihat pada lampiran B gambar 6-8.
4. Dengan mengguanakan CMS, yaitu Joomla dan virtuemart, proses
pembuatan website, akan menjadi lebih mudah karena pada tools tersebut
sudah disediakan banyak fitur-fitur yang berguna.
5.2 Saran
1. Disarankan agar kedepannya website ini bisa dikembangkan menjadi
website yang lebih menarik lagi dengan menambahkan animasi dalam
menyajikan produk.
65
66
2. Aspek keamanan website juga merupakan hal penting karena selain
sebagai acuan agar terpeliharanya sebuah website dengan lebih baik, aspek
ini juga berperan dalam menjaga intervensi pihak-pihak luar yang
mungkin mengganggu sebuah website.
3. Proses transaksi diharapkan dapat dikembangkan menjadi otomatis agar
lebih mempermudah pengguna dalam bertransaksi.
DAFTAR PUSTAKA
Anonim. 2010. Belajar Sendiri Membuat Homepage Dengan HTML. Jakarta :
Elex Media Komputindo.
Arbai. 2004. Manajemen Database dengan MySQL. Yogyakarta: Penerbit Andi
Firdaus. 2010. PHP & MySQL. Palembang : Maxikom.
Hartono, Jogiyanto. 1999. Pengenalan Komputer. Yogyakarta: Andi.
Kadir, Abdul. 2003. Pengenalan Sistem Informasi. Yogyakarta: Penerbit Andi.
Kenneth E. Kendall., Jullie E. Kendall. 2003. Sistems Analysis and Design. fifth
Edition. Dialihbahasakan oleh Thamir Abdul Hafed Al-Hamdany, B.Sc, M.Sc
dalam buku Analisa dan Perancangan Sistem Jilid 1. Jakarta : Prenhallindo.
Kurniawan, Dedik. 2010. Super Market Online. Jakarta : Elex Media Komputndo.
Ladjamudin, Al-Bahra. 2005 Analisis dan Desain Sistem Informasi. Yogyakarta:
Graha Ilmu.
Mac Bride. 2009. Internet. Bekasi : Megapoin.
Pressman, Roger S. 2002. Rekayasa Perangkat Lunak Pendekatan Praktisi (Buku
Satu). Yogyakarta : Andi.
Sardi, Irawan. 2004. Manajemen, Desain, dan Pengembangan Situs Web dengan
Macromedia Dreamweaver MX dan Adobe Photoshop 7. Jakarta: Elex
Media Komputindo.
Sarif, Hidayat. 2009. Membangun Website Dengan CMS Joomla. Bandung : Info
Media.
67
68
Sukarno, Muhammad. 2006. Membangun Website Dinamis Interaktif dengan
PHP-MySQL (Windows & Linux). Jakarta: Eska Media
Sutabri, Tata. 2004. Analisa Sistem Informasi. Yogyakarta : Andi.
Whitten, Bentley, Dittman. 2004. Metode Desain & Analisis Sistem. Yogyakarta:
Penerbit Andi.
http://en.wikipedia.org/wiki/Rapid_application_development
diakses
pada
5 Agustus 2011
http://id.wikipedia.org/wiki/Perdagangan_elektronik diakses pada 20 Juni 2011.
deris.unsri.ac.id/materi/deris/ecommerce_deris.pdf diakses pada 11 Juni 2011.
LAMPIRAN A
HASIL WAWANCARA
Narasumber
: Umar Aryo Seno
(Pemilk Bengkel CMR)
1.
Pewawancara
: Erry Handoyo
Waktu
: 23 Juni 2011
T : Bagaimana CMR melakukan promosi produk-produk yang akan dijual ?
J : Promosi dilakukan dengan cara membagi-bagikan brosur kepada
masyarakat. Selain itu juga CMR melakukan promosi melalui
Koran dan majalah otomotif.
2. T : Bagaimana proses pembelian produk oleh konsumen ?
J : Untuk membeli barang, konsumen datang langsung ke bengkel
CMR, kemudian akan langsung dilayani oleh sales kami.
3. T : Apakah data-data pembelian dicatat? Bagaimana pencatatannya ?
J
: Ya, pencatatan dilakukan dengan merujuk pada bon pembelian.
4. T : Masalah apa yang sering dihadapi dalam penjualan dengan sistem yang
sekarang?
J
: Pembeli kurang mengetahui produk-produk yang ditawarkan.
Pembeli cenderung berasal dari daerah sekitar bengkel, sehingga
pembeli yang datang agak kurang. Pembeli juga tidak dapat
memesan terlebih dahulu.
5. T : Apakah menurut bapak promosi yang telah dilakukan berjalan baik dan
efektif?
J
: Menurut kami masih kurang, karena promosi hanya mencakup
lingkup yang kecil, hanya pada daerah yang berdekatan dengan
bengkel CMR.
6. T : Menurut bapak bagaimana jika terdapat aplikasi pemesanan yang yang
menggunakan websitre?
J
: Jika memang hal itu dapat dilakukan saya rasa hal itu dapat
mengefektifkan masalah promosi dan pemesanan dapat dilakukan
secara langsung tanpa harus datang ke bengkel.
7. T
J
: Input dan output apa saja yang diharapkan dalam aplikasi ini?
: Saya menginginkan adanya pemesanan barang yang rapi yang bisa
dilihat setiap saat saya mengakses aplikasi tersebut. Kemudian saya
ingin agar konsumen yang sudah menjadi langganan dapat
disimpan datanya.
LAMPIRAN B
TAMPILAN APLIKASI
1. Halaman Home
2. Halaman Registrasi
3. Halaman Store Online
4. Halaman Produk
5. Halaman Produk Detail
6. Halaman Shopping Chart
7. Halaman Biodata Pemesan
8. Halaman Konfirmasi
9. Halaman GuestBook
10. Halaman Contact Us
11. Halaman Order List
12. Halaman Order Detail
LAMPIRAN C
SOURCE CODE APLIKASI
index.php
<?php
// Set flag that this is a parent file
define( '_VALID_MOS', 1 );
// checks for configuration file, if none found loads installation page
if (!file_exists( 'configuration.php' ) || filesize( 'configuration.php' ) < 10) {
$self = rtrim( dirname( $_SERVER['PHP_SELF'] ), '/\\' ) . '/';
header("Location: http://" . $_SERVER['HTTP_HOST'] . $self .
"installation/index.php" );
exit();
}
require( 'globals.php' );
require( 'configuration.php' );
// SSL check - $http_host returns <live site url>:<port number if it is 443>
$http_host = explode(':', $_SERVER['HTTP_HOST'] );
if( (!empty( $_SERVER['HTTPS'] ) && strtolower( $_SERVER['HTTPS'] ) != 'off' ||
isset( $http_host[1] ) && $http_host[1] == 443) && substr( $mosConfig_live_site,
0, 8 ) != 'https://' ) {
$mosConfig_live_site = 'https://'.substr( $mosConfig_live_site, 7 );
}
require_once( 'includes/joomla.php' );
//Installation sub folder check, removed for work with SVN
if (file_exists( 'installation/index.php' ) && $_VERSION->SVN == 0) {
define( '_INSTALL_CHECK', 1 );
include ( $mosConfig_absolute_path .'/offline.php');
exit();
}
// displays offline/maintanance page or bar
if ($mosConfig_offline == 1) {
require( $mosConfig_absolute_path .'/offline.php' );
}
// load system bot group
$_MAMBOTS->loadBotGroup( 'system' );
// trigger the onStart events
$_MAMBOTS->trigger( 'onStart' );
if (file_exists( $mosConfig_absolute_path .'/components/com_sef/sef.php' )) {
require_once( $mosConfig_absolute_path .'/components/com_sef/sef.php' );
} else {
require_once( $mosConfig_absolute_path .'/includes/sef.php' );
}
require_once( $mosConfig_absolute_path .'/includes/frontend.php' );
// retrieve some expected url (or form) arguments
$option = strval( strtolower( mosGetParam( $_REQUEST, 'option' ) ) );
$Itemid = intval( mosGetParam( $_REQUEST, 'Itemid', null ) );
if ($option == '') {
if ($Itemid) {
$query = "SELECT id, link"
. "\n FROM #__menu"
. "\n WHERE menutype = 'mainmenu'"
. "\n AND id = " . (int) $Itemid
. "\n AND published = 1"
;
$database->setQuery( $query );
} else {
$query = "SELECT id, link"
. "\n FROM #__menu"
. "\n WHERE menutype = 'mainmenu'"
. "\n AND published = 1"
. "\n ORDER BY parent, ordering"
;
$database->setQuery( $query, 0, 1 );
}
$menu = new mosMenu( $database );
if ($database->loadObject( $menu )) {
$Itemid = $menu->id;
}
$link = $menu->link;
if (($pos = strpos( $link, '?' )) !== false) {
$link = substr( $link, $pos+1 ). '&Itemid='.$Itemid;
}
parse_str( $link, $temp );
/** this is a patch, need to rework when globals are handled better */
foreach ($temp as $k=>$v) {
$GLOBALS[$k] = $v;
$_REQUEST[$k] = $v;
if ($k == 'option') {
$option = $v;
}
}
}
if ( !$Itemid ) {
// when no Itemid give a default value
$Itemid = 99999999;
}
// mainframe is an API workhorse, lots of 'core' interaction routines
$mainframe = new mosMainFrame( $database, $option, '.' );
$mainframe->initSession();
// trigger the onAfterStart events
$_MAMBOTS->trigger( 'onAfterStart' );
// checking if we can find the Itemid thru the content
if ( $option == 'com_content' && $Itemid === 0 ) {
$id
= intval( mosGetParam( $_REQUEST, 'id', 0 ) );
$Itemid = $mainframe->getItemid( $id );
}
/** do we have a valid Itemid yet?? */
if ( $Itemid === 0 ) {
/** Nope, just use the homepage then. */
$query = "SELECT id"
. "\n FROM #__menu"
. "\n WHERE menutype = 'mainmenu'"
. "\n AND published = 1"
. "\n ORDER BY parent, ordering"
;
$database->setQuery( $query, 0, 1 );
$Itemid = $database->loadResult();
}
// patch to lessen the impact on templates
if ($option == 'search') {
$option = 'com_search';
}
// loads english language file by default
if ($mosConfig_lang=='') {
$mosConfig_lang = 'english';
}
include_once( $mosConfig_absolute_path .'/language/' . $mosConfig_lang . '.php' );
// frontend login & logout controls
$return
= strval( mosGetParam( $_REQUEST, 'return', NULL ) );
$message
= intval( mosGetParam( $_POST, 'message', 0 ) );
// Get the information about the current user from the sessions table
$my = $mainframe->getUser();
if ($option == 'login') {
$mainframe->login();
// JS Popup message
if ( $message ) {
?>
<script language="javascript" type="text/javascript">
<!--//
alert( "<?php echo addslashes( _LOGIN_SUCCESS ); ?>" );
//-->
</script>
<?php
}
if ( $return && !( strpos( $return, 'com_registration' ) || strpos(
$return, 'com_login' ) ) ) {
// checks for the presence of a return url
// and ensures that this url is not the registration or login pages
// If a sessioncookie exists, redirect to the given page.
Otherwise, take an extra round for a cookiecheck
if (isset( $_COOKIE[mosMainFrame::sessionCookieName()] )) {
mosRedirect( $return );
} else {
mosRedirect( $mosConfig_live_site
.'/index.php?option=cookiecheck&return=' . urlencode( $return ) );
}
} else {
// If a sessioncookie exists, redirect to the start page.
Otherwise, take an extra round for a cookiecheck
if (isset( $_COOKIE[mosMainFrame::sessionCookieName()] )) {
mosRedirect( $mosConfig_live_site .'/index.php' );
} else {
mosRedirect( $mosConfig_live_site
.'/index.php?option=cookiecheck&return=' . urlencode( $mosConfig_live_site
.'/index.php' ) );
}
}
} else if ($option == 'logout') {
$mainframe->logout();
// JS Popup message
if ( $message ) {
?>
<script language="javascript" type="text/javascript">
<!--//
alert( "<?php echo addslashes( _LOGOUT_SUCCESS ); ?>" );
//-->
</script>
<?php
}
if ( $return && !( strpos( $return, 'com_registration' ) || strpos(
$return, 'com_login' ) ) ) {
// checks for the presence of a return url
// and ensures that this url is not the registration or logout pages
mosRedirect( $return );
} else {
mosRedirect( $mosConfig_live_site.'/index.php' );
}
} else if ($option == 'cookiecheck') {
// No cookie was set upon login. If it is set now, redirect to the given
page. Otherwise, show error message.
if (isset( $_COOKIE[mosMainFrame::sessionCookieName()] )) {
mosRedirect( $return );
} else {
mosErrorAlert( _ALERT_ENABLED );
}
}
// detect first visit
$mainframe->detect();
// set for overlib check
$mainframe->set( 'loadOverlib', false );
$gid = intval( $my->gid );
// gets template for page
$cur_template = $mainframe->getTemplate();
/** temp fix - this feature is currently disabled */
/** @global A places to store information from processing of the component */
$_MOS_OPTION = array();
// precapture the output of the component
require_once( $mosConfig_absolute_path . '/editor/editor.php' );
ob_start();
if ($path = $mainframe->getPath( 'front' )) {
$task = strval( mosGetParam( $_REQUEST, 'task', '' ) );
$ret
= mosMenuCheck( $Itemid, $option, $task, $gid );
if ($ret) {
require_once( $path );
} else {
mosNotAuth();
}
} else {
header( 'HTTP/1.0 404 Not Found' );
echo _NOT_EXIST;
}
$_MOS_OPTION['buffer'] = ob_get_contents();
ob_end_clean();
initGzip();
header(
header(
header(
header(
header(
'Expires: Mon, 26 Jul 1997 05:00:00 GMT' );
'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' );
'Cache-Control: no-store, no-cache, must-revalidate' );
'Cache-Control: post-check=0, pre-check=0', false );
'Pragma: no-cache' );
// display the offline alert if an admin is logged in
if (defined( '_ADMIN_OFFLINE' )) {
include( $mosConfig_absolute_path .'/offlinebar.php' );
}
// loads template file
if ( !file_exists( $mosConfig_absolute_path .'/templates/'. $cur_template
.'/index.php' ) ) {
echo _TEMPLATE_WARN . $cur_template;
} else {
require_once( $mosConfig_absolute_path .'/templates/'. $cur_template
.'/index.php' );
echo '<!-- '. time() .' -->';
}
// displays queries performed for page
if ($mosConfig_debug) {
echo $database->_ticker . ' queries executed';
echo '<pre>';
foreach ($database->_log as $k=>$sql) {
echo $k+1 . "\n" . $sql . '<hr />';
}
echo '</pre>';
}
doGzip();
?>
login.php
<?php
// no direct access
defined( '_VALID_MOS' ) or die( 'Restricted access' );
// load the html drawing class
require_once( $mainframe->getPath( 'front_html' ) );
global $database, $my, $mainframe;
global $mosConfig_live_site, $mosConfig_frontend_login, $mosConfig_db;
if ( $mosConfig_frontend_login != NULL && ($mosConfig_frontend_login === 0 ||
$mosConfig_frontend_login === '0')) {
header( "HTTP/1.0 403 Forbidden" );
echo _NOT_AUTH;
return;
}
$menu = $mainframe->get( 'menu' );
$params = new mosParameters( $menu->params );
$params->def(
$params->def(
$params->def(
$params->def(
$params->def(
$params->def(
$params->def(
$params->def(
$params->def(
$params->def(
$params->def(
$params->def(
$params->def(
$params->def(
$params->def(
$params->def(
$params->def(
$params->def(
'page_title', 1 );
'header_login', $menu->name );
'header_logout', $menu->name );
'pageclass_sfx', '' );
'back_button', $mainframe->getCfg( 'back_button' ) );
'login', $mosConfig_live_site );
'logout', $mosConfig_live_site );
'login_message', 0 );
'logout_message', 0 );
'description_login', 1 );
'description_logout', 1 );
'description_login_text', _LOGIN_DESCRIPTION );
'description_logout_text', _LOGOUT_DESCRIPTION );
'image_login', 'key.jpg' );
'image_logout', 'key.jpg' );
'image_login_align', 'right' );
'image_logout_align', 'right' );
'registration', $mainframe->getCfg( 'allowUserRegistration' ) );
$image_login = '';
$image_logout = '';
if ( $params->get( 'image_login' ) != -1 ) {
$image = $mosConfig_live_site .'/images/stories/'.
'image_login' );
$image_login = '<img src="'. $image .'" align="'.
'image_login_align' ) .'" hspace="10" alt="" />';
}
if ( $params->get( 'image_logout' ) != -1 ) {
$image = $mosConfig_live_site .'/images/stories/'.
'image_logout' );
$image_logout = '<img src="'. $image .'" align="'.
'image_logout_align' ) .'" hspace="10" alt="" />';
}
if ( $my->id ) {
loginHTML::logoutpage( $params, $image_logout );
} else {
loginHTML::loginpage( $params, $image_login );
}
$params->get(
$params->get(
$params->get(
$params->get(
?>
regristation.php
<?php
// no direct access
defined( '_VALID_MOS' ) or die( 'Restricted access' );
global $mosConfig_frontend_login;
require_once( $mainframe->getPath( 'front_html' ) );
if ( $mosConfig_frontend_login != NULL && ($mosConfig_frontend_login === 0 ||
$mosConfig_frontend_login === '0')) {
echo _NOT_AUTH;
return;
}
switch( $task ) {
case 'lostPassword':
lostPassForm( $option );
break;
case 'sendNewPass':
sendNewPass( $option );
break;
case 'register':
registerForm( $option, $mosConfig_useractivation );
break;
case 'saveRegistration':
saveRegistration();
break;
case 'activate':
activate( $option );
break;
}
function lostPassForm( $option ) {
global $mainframe;
$mainframe->SetPageTitle(_PROMPT_PASSWORD);
HTML_registration::lostPassForm($option);
}
function sendNewPass( $option ) {
global $database;
global $mosConfig_live_site, $mosConfig_sitename;
global $mosConfig_mailfrom, $mosConfig_fromname;
// simple spoof check security
josSpoofCheck();
$_live_site = $mosConfig_live_site;
$_sitename
= $mosConfig_sitename;
$checkusername = stripslashes( mosGetParam( $_POST, 'checkusername', '' )
);
$confirmEmail
= stripslashes( mosGetParam( $_POST, 'confirmEmail', '') );
$query = "SELECT id"
. "\n FROM #__users"
. "\n WHERE username = " . $database->Quote( $checkusername )
. "\n AND email = " . $database->Quote( $confirmEmail )
;
$database->setQuery( $query );
if (!($user_id = $database->loadResult()) || !$checkusername ||
!$confirmEmail) {
mosRedirect(
"index.php?option=$option&task=lostPassword&mosmsg="._ERROR_PASS );
}
$newpass = mosMakePassword();
$message = _NEWPASS_MSG;
eval ("\$message = \"$message\";");
$subject = _NEWPASS_SUB;
eval ("\$subject = \"$subject\";");
mosMail($mosConfig_mailfrom, $mosConfig_fromname, $confirmEmail, $subject,
$message);
$salt = mosMakePassword(16);
$crypt = md5($newpass.$salt);
$newpass = $crypt.':'.$salt;
$sql = "UPDATE #__users"
. "\n SET password = " . $database->Quote( $newpass )
. "\n WHERE id = " . (int) $user_id
;
$database->setQuery( $sql );
if (!$database->query()) {
die("SQL error" . $database->stderr(true));
}
mosRedirect( 'index.php?option=com_registration&mosmsg='. _NEWPASS_SENT );
}
function registerForm( $option, $useractivation ) {
global $mainframe;
if (!$mainframe->getCfg( 'allowUserRegistration' )) {
mosNotAuth();
return;
}
$mainframe->SetPageTitle(_REGISTER_TITLE);
HTML_registration::registerForm($option, $useractivation);
}
function saveRegistration() {
global $database, $acl;
global $mosConfig_sitename, $mosConfig_live_site,
$mosConfig_useractivation, $mosConfig_allowUserRegistration;
global $mosConfig_mailfrom, $mosConfig_fromname, $mosConfig_mailfrom,
$mosConfig_fromname;
if ( $mosConfig_allowUserRegistration == 0 ) {
mosNotAuth();
return;
}
// simple spoof check security
josSpoofCheck();
$row = new mosUser( $database );
if (!$row->bind( $_POST, 'usertype' )) {
mosErrorAlert( $row->getError() );
}
$row->name
= trim( $row->name );
$row->email
= trim( $row->email );
$row->username = trim( $row->username );
$row->password = trim( $row->password );
mosMakeHtmlSafe($row);
$row->id
$row->usertype
$row->gid
= 0;
= '';
= $acl->get_group_id( 'Registered', 'ARO' );
if ( $mosConfig_useractivation == 1 ) {
$row->activation = md5( mosMakePassword() );
$row->block = '1';
}
if (!$row->check()) {
echo "<script> alert('".html_entity_decode($row->getError())."');
window.history.go(-1); </script>\n";
exit();
}
$pwd
= $row->password;
$salt
$crypt
$row->password
= mosMakePassword(16);
= md5($row->password.$salt);
= $crypt.':'.$salt;
$row->registerDate
= date( 'Y-m-d H:i:s' );
if (!$row->store()) {
echo "<script> alert('".html_entity_decode($row->getError())."');
window.history.go(-1); </script>\n";
exit();
}
$row->checkin();
$name
$email
$username
= trim($row->name);
= trim($row->email);
= trim($row->username);
$subject
$subject
= sprintf (_SEND_SUB, $name, $mosConfig_sitename);
= html_entity_decode($subject, ENT_QUOTES);
if ($mosConfig_useractivation == 1){
$message = sprintf (_USEND_MSG_ACTIVATE, $name,
$mosConfig_sitename,
$mosConfig_live_site."/index.php?option=com_registration&task=activate&activation=
".$row->activation, $mosConfig_live_site, $username, $pwd);
} else {
$message = sprintf (_USEND_MSG, $name, $mosConfig_sitename,
$mosConfig_live_site);
}
$message = html_entity_decode($message, ENT_QUOTES);
// check if Global Config `mailfrom` and `fromname` values exist
if ($mosConfig_mailfrom != '' && $mosConfig_fromname != '') {
$adminName2
= $mosConfig_fromname;
$adminEmail2
= $mosConfig_mailfrom;
} else {
// use email address and name of first superadmin for use in email sent to
user
$query = "SELECT name, email"
. "\n FROM #__users"
. "\n WHERE LOWER( usertype ) = 'superadministrator'"
. "\n OR LOWER( usertype ) = 'super administrator'"
;
$database->setQuery( $query );
$rows = $database->loadObjectList();
$row2
= $rows[0];
$adminName2
$adminEmail2
= $row2->name;
= $row2->email;
}
// Send email to user
mosMail($adminEmail2, $adminName2, $email, $subject, $message);
// Send notification to all administrators
$subject2 = sprintf (_SEND_SUB, $name, $mosConfig_sitename);
$message2 = sprintf (_ASEND_MSG, $adminName2, $mosConfig_sitename, $row>name, $email, $username);
$subject2 = html_entity_decode($subject2, ENT_QUOTES);
$message2 = html_entity_decode($message2, ENT_QUOTES);
// get email addresses of all admins and superadmins set to recieve system
emails
$query = "SELECT email, sendEmail"
. "\n FROM #__users"
. "\n WHERE ( gid = 24 OR gid = 25 )"
. "\n AND sendEmail = 1"
. "\n AND block = 0"
;
$database->setQuery( $query );
$admins = $database->loadObjectList();
foreach ( $admins as $admin ) {
// send email to admin & super admin set to recieve system emails
mosMail($adminEmail2, $adminName2, $admin->email, $subject2,
$message2);
}
if ( $mosConfig_useractivation == 1 ){
echo _REG_COMPLETE_ACTIVATE;
} else {
echo _REG_COMPLETE;
}
}
function activate( $option ) {
global $database, $my;
global $mosConfig_useractivation, $mosConfig_allowUserRegistration;
if($my->id) {
// They're already logged in, so redirect them to the home page
mosRedirect( 'index.php' );
}
if ($mosConfig_allowUserRegistration == '0' || $mosConfig_useractivation ==
'0') {
mosNotAuth();
return;
}
$activation = stripslashes( mosGetParam( $_REQUEST, 'activation', '' ) );
if (empty( $activation )) {
echo _REG_ACTIVATE_NOT_FOUND;
return;
}
$query = "SELECT id"
. "\n FROM #__users"
. "\n WHERE activation = " . $database->Quote( $activation )
. "\n AND block = 1"
;
$database->setQuery( $query );
$result = $database->loadResult();
if ($result) {
$query = "UPDATE #__users"
. "\n SET block = 0, activation = ''"
. "\n WHERE activation = " . $database->Quote( $activation )
. "\n AND block = 1"
;
$database->setQuery( $query );
if (!$database->query()) {
if(!defined(_REG_ACTIVATE_FAILURE)) {
DEFINE('_REG_ACTIVATE_FAILURE', '<div
class="componentheading">Activation Failed!</div><br />The system was unable to
activate your account, please contact the site administrator.');
}
echo _REG_ACTIVATE_FAILURE;
} else {
echo _REG_ACTIVATE_COMPLETE;
}
} else {
echo _REG_ACTIVATE_NOT_FOUND;
}
}
?>
virtuemart.php
<?php
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.'
);
global $mosConfig_absolute_path, $product_id, $vmInputFilter;
/* Load the virtuemart main parse code */
require_once(
$mosConfig_absolute_path.'/components/'.$option.'/virtuemart_parser.php' );
include(
$mosConfig_absolute_path.'/administrator/components/'.$option.'/compat.joomla1.5.p
hp');
$my_page= explode ( '.', $page );
$modulename = $my_page[0];
$pagename = $my_page[1];
/* Page Navigation Parameters */
$mainframe->_userstate =& $_SESSION['session_userstate'];
$limit = intval( $mainframe->getUserStateFromRequest( "viewlistlimit", 'limit',
$mosConfig_list_limit ) );
$limitstart = intval( $mainframe->getUserStateFromRequest(
"view{$keyword}{$category_id}limitstart", 'limitstart', 0 )) ;
/* Get all the other paramters */
$manufacturer_id = intval( mosGetParam( $_REQUEST, 'manufacturer_id', null ) );
$search_category= intval( mosGetParam( $_REQUEST, 'search_category', null ) );
$product_type_id = intval( mosgetparam($_REQUEST, 'product_type_id', null) );
if( PSHOP_IS_OFFLINE == "1" ) {
echo PSHOP_OFFLINE_MESSAGE;
}
else {
// The Vendor ID is important
$ps_vendor_id = $_SESSION['ps_vendor_id'];
// The authentication array
$auth = $_SESSION['auth'];
$no_menu = mosGetParam( $_REQUEST, 'no_menu', 0 );
// Timer Start
if ( DEBUG == "1" ) {
$start = utime();
$GLOBALS["mosConfig_debug"] = 1;
}
// update the cart because something could have
// changed while running a function
$cart = $_SESSION["cart"];
if (( !$pagePermissionsOK || !$funcParams ) && $_REQUEST['page'] !=
'checkout.index') {
if( !$pagePermissionsOK && defined('_VM_PAGE_NOT_AUTH') ) {
$page = 'checkout.login_form';
echo '<br/><br/>'._DO_LOGIN.'<br/><br/>';
}
elseif( !$pagePermissionsOK && defined('_VM_PAGE_NOT_FOUND') ) {
$page = HOMEPAGE;
}
else {
$page = $_SESSION['last_page'];
}
}
$my_page= explode ( '.', $page );
$modulename = $my_page[0];
$pagename = $my_page[1];
// For there's no errorpage to display the error,
// we must echo it before the page is loaded
if (!empty($error) && $page != ERRORPAGE) {
echo "<span class=\"shop_error\">".$error."</span>";
}
/*****************************
** FRONTEND ADMIN - MOD
**/
$pshop_mode = mosgetparam($_REQUEST, 'pshop_mode', "");
if (($pshop_mode == "admin"
|| stristr($page,"form")
|| stristr($page, "list")
|| stristr($page, "cfg")
|| stristr($page, "print")
|| stristr($page, "display"))
&& ($perm->check("admin,storeadmin")
&& ((!stristr($my->usertype, "admin") ^
PSHOP_ALLOW_FRONTENDADMIN_FOR_NOBACKENDERS == '' )
|| stristr($my->usertype, "admin")
)
&& !stristr($page, "shop.")
)
&& $no_menu != "1"
) {
define( '_FRONTEND_ADMIN_LOADED', '1' );
$mainframe->loadEditor = 1;
if( file_exists( $mosConfig_absolute_path."/editor/editor.php" )) {
require_once( $mosConfig_absolute_path."/editor/editor.php"
);
initEditor();
}
$editor1_array = Array('product.product_form' => 'product_desc',
'product.product_category_form' => 'category_description',
'store.store_form' => 'vendor_store_desc',
'vendor.vendor_form' => 'vendor_store_desc');
$editor2_array = Array('store.store_form' =>
'vendor_terms_of_service',
'vendor.vendor_form' => 'vendor_terms_of_service');
editorScript(isset($editor1_array[$page]) ? $editor1_array[$page] :
'', isset($editor2_array[$page]) ? $editor2_array[$page] : '');
?>
<link type="text/css" rel="stylesheet" media="screen, projection"
href="components/<?php echo $option ?>/css/admin.css" />
<script type="text/javascript" src="<?php echo $mosConfig_live_site
?>/components/<?php echo $option ?>/js/functions.js"></script>
<?php
// The admin header with dropdown menu
include( ADMINPATH."header.php" );
include( ADMINPATH."toolbar.virtuemart.php" );
echo '<br style="clear:both;" />';
}
/**
** END: FRONTEND ADMIN - MOD
*****************************/
/*****************************
** BEGIN affiliate additions
** by nhyde <[email protected]> for virtuemart v0.6.1
*/
if (AFFILIATE_ENABLE == '1') {
$unset_affiliate = false;
if (!isset($ps_affiliate)) {
include_class ( 'affiliate' );
$unset_affiliate = true;
}
//keep tracking the affiliate
if(isset($_SESSION['afid'])){
$ps_affiliate->visit_update();
}
//register the affiliated visit but only if the
// aid is in our database and it is active.
else{
//set the affiliate_id = 0 to log any visitors that are not
affiliate visitors
$aff_details = $ps_affiliate>get_affiliate_details($auth['user_id']);
$affiliate_id = $aff_details['id'];
//the logout function may have wiped out the session so
search the database
//and re-register it.
$q = "SELECT visit_id FROM #__{vm}_visit WHERE visit_id =
'".session_id()."'";
$db->query($q);
if($db->next_record()){
$ps_affiliate->visit_update();
}
else {
$ps_affiliate->visit_register();
}
}
if (isset($affiliate_id)) {
$_SESSION['afid'] = $affiliate_id;
$GLOBALS['afid'] = $affiliate_id;
}
}
/**
*
END added for affiliate module
****************************/
// Here is the most important part of the whole Shop:
// LOADING the requested page for displaying it to the customer.
// I have wrapped it with a function, because it becomes
// cacheable that way.
// It's just an "include" statement which loads the page
$vmDoCaching = ($page=="shop.browse" || $page=="shop.product_details")
&& class_exists("mosCache")
&& (empty($keyword) && empty($keyword1) && empty($keyword2));
if( !function_exists( "load_that_shop_page" )) {
function load_that_shop_page( $modulename, $pagename) {
global $my, $db, $perm, $ps_function, $ps_module, $ps_html,
$ps_vendor_id, $page, $database,$mosConfig_absolute_path, $cart, $start, $option,
$vmLogger, $vmDoCaching,
$product_id,$VM_LANG, $PHPSHOP_LANG,
$sess,$vendor_image,$vendor_country_2_code, $vendor_country_3_code ,
$vendor_image_url, $PSHOP_SHIPPING_MODULES,
$_VERSION, $vendor_name, $vendor_address,
$vendor_city,$vendor_country,$vendor_mail, $category_id, $mainframe,
$mosConfig_list_limit, $limitstart, $limit,
$vendor_store_name, $vendor_state, $vendor_zip, $vendor_phone,
$vendor_currency, $vendor_store_desc, $vendor_freeshipping, $ps_shipping,
$ps_order_status,
$module_description, $vendor_currency_display_style,
$vendor_full_image, $mosConfig_live_site, $vendor_id, $CURRENCY_DISPLAY, $keyword,
$mm_action_url,
$ps_payment_method,$ps_zone,$ps_product, $ps_product_category,
$ps_order, $sess, $page, $func, $pagename, $modulename, $vars, $cmd, $ok,
$mosConfig_lang, $mosConfig_useractivation,
$auth, $ps_checkout,$error, $error_type, $func_perms, $func_list,
$func_class, $func_method, $func_list, $dir_list,
$mosConfig_allowUserRegistration, $mosConfig_caching;
if( !stristr( $_SERVER['PHP_SELF'], "index2.php") ) {
$mainframe->addCustomHeadTag( "<script type=\"text/javascript\"
src=\"$mosConfig_live_site/components/$option/js/sleight.js\"></script>
<link type=\"text/css\" rel=\"stylesheet\" media=\"screen, projection\"
href=\"$mosConfig_live_site/components/$option/css/shop.css\" />" );
} else {
?>
<script type="text/javascript" src="<?php echo
"$mosConfig_live_site/components/$option" ?>/js/sleight.js"></script>
<link type="text/css" rel="stylesheet" media="screen, projection"
href="components/<?php echo $option ?>/css/shop.css" />
<?php
}
// Show the PDF Button?
if( PSHOP_PDF_BUTTON_ENABLE=='1' &&
!isset($_REQUEST['output']) && ($page=="shop.browse" ||
$page=="shop.product_details")) {
echo "<table align=\"right\"><tr><td><a
title=\"PDF\" target=\"_blank\"
href=\"index2.php?option=$option&page=shop.pdf_output&showpage=$page&pop=1
&output=pdf&product_id=$product_id&category_id=$category_id&Itemid
=".$sess->getShopItemid()."\">
<img src=\"".IMAGEURL."ps_image/acroread.png\" alt=\"PDF\"
height=\"32\" width=\"32\" border=\"0\" /></a></td></tr></table>";
}
// Load requested PAGE
if( file_exists( PAGEPATH.$modulename.".".$pagename.".php"
)) {
include( PAGEPATH.$modulename.".".$pagename.".php"
);
}
elseif( file_exists( PAGEPATH . HOMEPAGE.'.php' )) {
include( PAGEPATH . HOMEPAGE.'.php' );
}
else {
include( PAGEPATH.'shop.index.php');
}
if ( !empty($mosConfig_caching) && $vmDoCaching) {
echo '<span class="small">'._LAST_UPDATED.': '.strftime(
$VM_LANG->_DATE_FORMAT_LC2 ).'</span>';
}
if (SHOWVERSION) {
include(PAGEPATH ."footer.php");
}
// Set debug option on/off
if (DEBUG) {
$end = utime();
$runtime = $end - $start;
include( PAGEPATH . "shop.debug.php" );
}
return $mainframe;
//
//
//
if
}
}
// Caching is a sensible thing. We may cache only those pages
that look the same again and again
Currently this are two pages: shop.browse, shop.product_details
when no keyword is submitted!
( !empty($mosConfig_caching) && $vmDoCaching) {
// Get the Cache_Lite_Function object
$cache =& mosCache::getCache( 'com_content' );
// The function we let call remotely here has only two arguments:
the Modulename(shop) and the Pagename(browse or product_details),
// But Cache_Lite takes the arguments for identifying common calls
to cacheable functions.
// The Page will change with every different parameter / argument, so
provide this for identification
// "call" will call the function load_that_shop_page when it is not yet
cached with exactly THESE parameters
// or the caching time range has expired
$return = $cache->call('load_that_shop_page', $modulename, $pagename,
$product_id, $category_id, $manufacturer_id, $auth["shopper_group_id"],
$limitstart, $limit, @$_REQUEST['orderby'], @$_REQUEST['DescOrderBy'] );
if( get_class( $return ) == "mosMainFrame" ) {
$mainframe = $return;
}
}
else {
load_that_shop_page( $modulename, $pagename);
}
}
if( defined( 'vmToolTipCalled')) {
echo '<script language="Javascript" type="text/javascript" src="'.
$mosConfig_live_site.'/components/'.$option.'/js/wz_tooltip.js"></script>';
}
?>
virtuemart_parser.php
<?php
defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.'
);
global $my, $db, $perm, $ps_function, $ps_module, $ps_html, $ps_vendor_id,
$vendor_image,$vendor_image_url, $keyword,
$ps_payment_method,$ps_zone,$sess, $page, $func, $pagename, $modulename,
$vars, $VM_LANG, $cmd, $ok, $mosConfig_lang,
$auth, $ps_checkout,$error, $error_type, $func_perms, $func_list,
$func_class, $func_method, $func_list, $dir_list,
$vendor_currency_display_style, $vendor_freeshipping, $mm_action_url,
$limit, $limitstart, $mainframe;
// Raise memory_limit to 16M when it is too low
// Especially the product section needs much memory
$memLimit = @ini_get('memory_limit');
if( stristr( $memLimit, 'k') ) {
$memLimit = str_replace( 'k', '', str_replace( 'K', '', $memLimit )) *
1024;
}
elseif( stristr( $memLimit, 'm') ) {
$memLimit = str_replace( 'm', '', str_replace( 'M', '', $memLimit )) * 1024
* 1024;
}
if( $memLimit < 16777216 ) {
@ini_set('memory_limit', '16M');
}
$option = mosGetParam( $_REQUEST, 'option' );
if( !defined( '_VM_PARSER_LOADED' )) {
global $my;
$_REQUEST['Itemid'] = intval( mosGetParam($_REQUEST, 'Itemid', 0) );
// Filter the PHP_SELF var and clean it
$_SERVER['PHP_SELF'] = htmlspecialchars( $_SERVER['PHP_SELF'], ENT_QUOTES
);
$page = mosgetparam($_REQUEST, 'page', "");
$func = mosgetparam($_REQUEST, 'func', "");
if( $my->id > 0 ) {
// This is necessary to get the real GID
$my->load( $my->id );
}
if( !file_exists( $mosConfig_absolute_path.
"/administrator/components/com_virtuemart/virtuemart.cfg.php" )) {
die( "<h3>The configuration file for VirtueMart is missing!</h3>It
should be here: <strong>"
. $mosConfig_absolute_path.
"/administrator/components/com_virtuemart/virtuemart.cfg.php</strong>" );
}
// the configuration file for the Shop
require_once( $mosConfig_absolute_path.
"/administrator/components/com_virtuemart/virtuemart.cfg.php" );
// The abstract language class
require_once( CLASSPATH."language.class.php" );
// load the Language File
if (file_exists( ADMINPATH. 'languages/'.$mosConfig_lang.'.php' ))
require_once( ADMINPATH. 'languages/'.$mosConfig_lang.'.php' );
else
require_once( ADMINPATH. 'languages/english.php' );
/** @global vmLanguage $VM_LANG */
$GLOBALS['VM_LANG'] = $GLOBALS['PHPSHOP_LANG'] =& new vmLanguage();
/** @global Array $product_info: Stores Product Information for re-use */
$GLOBALS['product_info'] = Array();
/** @global Array $category_info: Stores Category Information for re-use */
$GLOBALS['category_info'] = Array();
/** @global Array $category_info: Stores Vendor Information for re-use */
$GLOBALS['vendor_info'] = Array();
// load the MAIN CLASSES
// CLASSPATH is defined in the config file
require_once(CLASSPATH."ps_database.php");
require_once(CLASSPATH."ps_main.php");
require_once(CLASSPATH."ps_cart.php");
require_once(CLASSPATH."ps_html.php");
require_once(CLASSPATH."ps_session.php");
require_once(CLASSPATH."ps_function.php");
require_once(CLASSPATH."ps_module.php");
require_once(CLASSPATH."ps_perm.php");
require_once(CLASSPATH."ps_shopper_group.php");
require_once(CLASSPATH."vmAbstractObject.class.php");
require_once(CLASSPATH."htmlTools.class.php");
require_once(CLASSPATH."phpInputFilter/class.inputfilter.php");
require_once(CLASSPATH."Log/Log.php");
$vmLoggerConf = array(
'buffering' => true
);
/**
* This Log Object will help us log messages and errors
* See http://pear.php.net/package/Log
* @global Log vmLogger
*/
$vmLogger = &vmLog::singleton('display', '', '', $vmLoggerConf,
PEAR_LOG_TIP);
$GLOBALS['vmLogger'] =& $vmLogger;
// Instantiate the DB class
$db = new ps_DB();
// Instantiate the permission class
$perm = new ps_perm();
// Instantiate the HTML helper class
$ps_html = new ps_html();
// Constructor initializes the session!
$sess = new ps_session();
// Initialize the cart
$cart = ps_cart::initCart();
// Instantiate the module class
$ps_module = new ps_module();
// Instantiate the function class
$ps_function = new ps_function();
// Instantiate the ps_shopper_group class
$ps_shopper_group = new ps_shopper_group();
// Set the mosConfig_live_site to its' SSL equivalent
if( $_SERVER['SERVER_PORT'] == 443 || @$_SERVER['HTTPS'] == 'on' ||
@strstr( $page, "checkout." )) {
// temporary solution until we have
// $mosConfig_secure_site
$GLOBALS['real_mosConfig_live_site'] =
$GLOBALS['mosConfig_live_site'];
$GLOBALS['mosConfig_live_site'] = ereg_replace('/$','',SECUREURL);
$mm_action_url = SECUREURL;
}
else {
$mm_action_url = URL;
}
// Enable Mambo Debug Mode when Shop Debug is on
if( DEBUG == "1" ) {
$GLOBALS['mosConfig_debug'] = 1;
$database->_debug = 1;
}
// Set Mambo's Cookies for the SSL Domain as well
// This makes it possible to use Shared SSL
$sess->prepare_SSL_Session();
// the global file for PHPShop
require_once( ADMINPATH . 'global.php' );
$currency_display = vendor_currency_display_style(
$vendor_currency_display_style );
/** load Currency Display Class **/
require_once( CLASSPATH.'class_currency_display.php' );
/** @global CurrencyDisplay $CURRENCY_DISPLAY */
$GLOBALS['CURRENCY_DISPLAY'] =& new
CurrencyDisplay($currency_display["id"], $currency_display["symbol"],
$currency_display["nbdecimal"], $currency_display["sdecimal"],
$currency_display["thousands"], $currency_display["positive"],
$currency_display["negative"]);
// Get default and this users's Shopper Group
$shopper_group = $ps_shopper_group->get_shoppergroup_by_id( $my->id );
// User authentication
$auth = $perm->doAuthentication( $shopper_group );
if( $option == "com_virtuemart" ) {
// Get sure that we have float values with a decimal point!
@setlocale( LC_NUMERIC, 'en_US', 'en' );
// some input validation for limitstart
if (!empty($_REQUEST['limitstart'])) {
$_REQUEST['limitstart'] = intval( $_REQUEST['limitstart'] );
}
$mosConfig_list_limit = isset( $mosConfig_list_limit ) ?
$mosConfig_list_limit : SEARCH_ROWS;
$keyword = substr( urldecode(mosgetparam($_REQUEST, 'keyword',
'')), 0, 50 );
unset( $_REQUEST["error"] );
// Cast all the following fields to INT
$parseToIntFields =
array('user_id','product_id','category_id','manufacturer_id','id','cid','vendor_id
','country_id','currency_id',
'order_id','module_id','function_id','payment_method_id','coupon_id','produ
ct_type_id') ;
foreach( $parseToIntFields as $intField ) {
if( !empty($_REQUEST[$intField]) &&
is_array($_REQUEST[$intField]) ) {
mosArrayToInts( $_REQUEST[$intField]);
} else {
$_REQUEST[$intField] = $$intField = intval(
mosgetparam($_REQUEST, $intField, 0) );
}
}
$_SESSION['session_userstate']['product_id'] = $product_id =
$_REQUEST['product_id'];
$_SESSION['session_userstate']['category_id'] = $category_id =
$_REQUEST['category_id'];
$user_info_id = mosgetparam($_REQUEST, 'user_info_id' );
$myInsecureArray = array('keyword' => $keyword,
'user_info_id'
=> $user_info_id,
'page' =>
$page,
'func' => $func
);
/**
* This InputFiler Object will help us filter malicious variable
contents
* @global vmInputFiler vmInputFiler
*/
$GLOBALS['vmInputFilter'] = $vmInputFilter = new vmInputFilter();
// prevent SQL injection
if( $perm->check('admin,storeadmin') ) {
$myInsecureArray = $vmInputFilter->safeSQL( $myInsecureArray
);
$myInsecureArray = $vmInputFilter->process( $myInsecureArray
);
// Re-insert the escaped strings into $_REQUEST
foreach( $myInsecureArray as $requestvar => $requestval) {
$_REQUEST[$requestvar] = $requestval;
}
} else {
// Strip all tags from all input values
$_REQUEST = $vmInputFilter->process( $_REQUEST );
$_REQUEST = $vmInputFilter->safeSQL( $_REQUEST );
}
// Limit the keyword (=search string) length to 50
$_SESSION['session_userstate']['keyword'] = $keyword =
substr(mosgetparam($_REQUEST, 'keyword', ''), 0, 50);
$vars = $_REQUEST;
// Check if we have to run a Shop Function
// and if the user is allowed to execute it
$funcParams = $ps_function->checkFuncPermissions( $func );
/**********************************************
** Get Page/Directory Permissions
** Displays error if directory is not registered,
** user has no permission to view it , or file doesn't exist
************************************************/
if (empty($page)) {// default page
if (defined('_PSHOP_ADMIN')) {
$page = "store.index";
}
else {
$page = HOMEPAGE;
}
}
// Let's check if the user is allowed to view the page
// if not, $page is set to ERROR_PAGE
$pagePermissionsOK = $ps_module->checkModulePermissions( $page );
$ok = true;
if ( !empty( $funcParams["method"] ) ) {
// Get the function parameters: function name and class name
$q = "SELECT
#__{vm}_module.module_name,#__{vm}_function.function_class";
$q .= " FROM #__{vm}_module,#__{vm}_function WHERE ";
$q .= "#__{vm}_module.module_id=#__{vm}_function.module_id
AND ";
$q .=
"#__{vm}_function.function_method='".$funcParams["method"]."' AND ";
$q .=
"#__{vm}_function.function_class='".$funcParams["class"]."'";
$db->query($q);
$db->next_record();
$class = $db->f('function_class');
if( file_exists( CLASSPATH."$class.php" ) ) {
// Load class definition file
require_once( CLASSPATH.$db>f("function_class").".php" );
$classname = str_replace( '.class', '',
$funcParams["class"]);
// create an object
$string = "\$$classname = new $classname;";
eval( $string );
// RUN THE FUNCTION
// $ok = $class->function( $vars );
$cmd = "\$ok = \$".$classname."->" .
$funcParams["method"] . "(\$vars);";
eval( $cmd );
if ($ok == false) {
$no_last = 1;
if( $_SESSION['last_page'] != HOMEPAGE ) {
$page = $_SESSION['last_page'];
}
$my_page= explode ( '.', $page );
$modulename = $my_page[0];
$pagename = $my_page[1];
$_REQUEST['keyword']=
$_SESSION['session_userstate']['keyword'];
$_REQUEST['category_id']=
$_SESSION['session_userstate']['category_id'];
$_REQUEST['product_id']=$product_id =
$_SESSION['session_userstate']['product_id'];
}
}
else {
$vmLogger->debug( "Could not include the class file
$class" );
}
if (!empty($vars["error"])) {
$error = $vars["error"];
}
if (!empty($error)) {
echo vmCommonHTML::getErrorField($error);
}
}
else {
$no_last = 0;
//$error="";
}
if ($ok == true && empty($error) && !defined('_DONT_VIEW_PAGE')) {
$_SESSION['last_page'] = $page;
}
}
// I don't get it, why Joomla uses masked gid values!
if( !defined( '_PSHOP_ADMIN' )) {
if( class_exists('jfactory')) {
$my =& JFactory::getUser();
} else {
$my = $mainframe->getUser();
}
if( isset( $my->_table )) {
$my = $my->_table;
}
}
// the Log object holds all error messages
// here we flush the buffer and print out all messages
$vmLogger->printLog();
// Now we can switch to implicit flushing
$vmLogger->_buffering = false;
define( '_VM_PARSER_LOADED', 1 );
}
?>
Download