Bab 15 Common Gateway Interface (CGI)
Barangkali pernah terlintas dalam pikiran anda, bagamana cara kerja
search engine (mesin pencari) yang ada di WWW semacam Altavista, Lycos,
Yahoo! dan Webcraler. Mungkin anda bertanya-tanya, bagaimana caranya
server web bisa mengolah informasi yang kita kirimkan lewat browser ?
Bagaimana bisa sebuah website menghitung jumlah pengunjungnya dengan
"web counter"? Bagaimana caranya sehingga kita bisa mengakses database
lewat browser seperti yang ditampilkan oleh banyak website di Internet ?
Semua itu dapat terlaksana berkat adanya CGI (common gateway interface).
CGI muncul sebagai usaha untuk menampilkan informasi yang dinamis dalam
World Wide Web. CGI memungkinkan komputer untuk menghasilkan dokumen-
dokumen web secara langsung atas permintaan pengguna, dan bukanya
ditulis terlebih dahulu oleh seseorang. CGI memungkinkan pembuatan
aplikasi yang interaktif dengan pengguna di Internet, tidak sekedar
statis.
CGI,hingga saat ini,adalah satu-satunya metode yang stabil dan dipahami
secara luas untuk membuat dokumen-dokumen macam itu. Java, yang dewasa
ini banyak dibicarakan, masih bermasalah yang hingga kini belum benar-
benar terpecahkan.
Bagaimana Sebenarnya CGI
Pada dasarnya sederhana. CGI memungkinkan server web dapat memanggil
suatu program (yang juga berada pada server), sambil berkomunikasi
denganya. Server web dapat memberikan data kepada program luar tersebut
dan membiarkan program memproses datanya, kemudian menerima kembali
hasil keluaran program, dan mengirimkanya kembali ke browser. Server
menerima informasi dari komputer pengguna, misalnya alamat host
komputer pengguna atau data masukan yang berasal dari form dokumen
HTML.
Penerapan CGI
Penerapan CGI yang paling umum adalah dalam pemrosesan form (mengenai
form telah kita bahas pada bab 8). Umumnya, form dipergunakan untuk dua
kegunaan utama . Yang sederhana adalah form yang dipakai untuk
mengumpulkan informasi dari pengguna dan mengirimkanya ke server. Namun
form juga bisa dipakai untuk keperluan yang lebih "canggih" seperti
interaksi timbal balik antara pengguna dan server, misalnya form yang
memberikan sedaftar pilihan dokumen dalam server kepada pengguna untuk
dipilih. Program CGI di server dibuat untuk mengolah informasi ini dan
kemudian mengirimkan dokumen - dokumen yang sesuai dengan pilihan
pengguna
Dalam buku ini, yang telah kita pelajari adalah cara penyusunan dokumen
web dengan HTML statis. Artinya, semua dokumen yang dibaca oleh browser
telah terlebih dahulu ditulis oleh kita sebagai pembuat dokumen dan
tidak akan berubah kecuali diubah oleh pembuat dokumen. CGI menawarkan
cara lain, yaitu dokumen yang dinamis, yang diciptakan secara langsung
oleh program mengikuti permintaan informasi dari pengguna.
Contoh nyata penerapan CGI untuk dokumen dinamis ini misalnya suatu
"buku tamu". Pengguna memasukkan informasi seperti nama, alamat, alamat
e-mail, dan komentar-komentarnya ke dalam form. Setelah server menerima
informasi-informasi tadi, program CGI dapat menyimpanya ke dalam suatu
File atau secara otomatis mengirimkanya lewat e-mail ke suatu alamat.
Program CGI juga bisa menampilkan dokumen yang berisi informasi yang
baru saja dikirimkan oleh pengguna tadi sembari memberikan ucapan
terima kasih atas partisipasinya.
Penerapan lain dari CGI adalah sebuah gateway. Artinya adalah program
yang dipergunakan sebagai penghubung untuk mengakses informasi yang
tidak dapat secara langsung dibaca oleh program browser pengguna.Contoh
yang nyata adalah gateway yang menghubungkan antara web server dengan
dengan suatu database server yang besar semacam oracle atau DB2, yang
memang dapat dilakukan dengan mempergunakan bahasa pemrograman Perl dan
DBI extentionta sehingga web server bisa memberikan query dalam SQL
(structured query language, yaitu bahasa yang dipakai untuk melakukan
pendefinisian maupun manipulasi terhadap database) ke server database
Oracle. Setelah informasi dari database keluar, program CGI mengubahnya
ke dalam bentuk yang bisa dibaca browser (HTML) dan web server pada
giliranya mengirimkanya kepada browser.
Program CGI pada prinsipnya bisa ditulis dalam bahasa pemrograman apa
saja, namun kenyataanya tidak semua bahasa pemrograman cocok untuk
pemrograman CGI. Penerapan CGI dapat sangat kompleks, dan untuk membuat
suatu program CGI menuntut pengetahuan teknis yang cukup tinggi akan
pemrograman.
Perl
Perl ( practical Extraction and report language ) adalah : bahasa
pemrograman yang sampai saat ini masih paling populer untuk penerapan
CGI. Dibanding bahasa-bahasa lain seperti C/C++,C Shell di UNIX ataupun
VisualBasic di Windows, banyak kemampuan-kemampuan Perl yang membuatnya
lebih cocok untuk CGI, disamping cukup mudah untuk dipelajari .
Keuntungan-keuntungan Perl antara lain;
. Portabel (mudah dipindah-pindahkan antar lingkungan sistem)
. Memiliki kemampuan-kemampuan manipulasi teks yang kuat
. Tersedia banyak extention untuk Perl misalnya Oraperl dan DBI untuk
mengakses database.
Perl awalnya dibuat untuk lingkungan sistem operasi UNIX, namun sejalan
perkembangan jaman saat ini juga telah terdapat interpreter Perl untuk
penerapan di dalam sistem operasi Windows / Windows NT (Perl Win32)
serta Macintosh(MacPerl)
Contoh Program dengan Perl
Kita coba untuk mempelajari contoh sebuah program sederhana yang
ditulis dalam Perl.Program ini tugasnya memproses data dari form berupa
nama pengguna dan kata sandi (password). Program menerima data dari
browser, mencocokkan nama serta kata sandi dengan data yang sudah
tersimpan, dan apabila cocok, menampilkan ucapan "selamat datang"
sambil menampilkan informasi-informasi tentang server, nama web server
yang diakses, alamat IP pengguna yang mengakses server dan jenis
program browser yang dipakai pengguna. Apabila kata sandi tidak tepat,
program akan mengirimkan dokumen yang berisikan pemberitahuan bahwa
kata sandi yang dimasukkan pengguna tidak benar dan secara halus
mempersilahkan pengguna untuk pergi.
Pada dasarnya program CGI bisa memperoleh informasi dari tiga macam
sumber yaitu informasi yang berasal dari pengguna (dengan form),
informasi tentang server, pengguna serta browser yang berasal dari
variabel lingkungan (environment variable), dan informasi yang berasal
dari informasi pathname
tambahanPertama kita buat dahulu file HTML untuk membuat dokumen dengan
form yang bertugas mengumpulkan informasi nama dan kata sandi pengguna.
Bila anda lupa cara membuat form, bukalah kembali bab8.
<HTML>
<HEAD>
<TITLE>Pintu masuk ke web site saya</TITLE>
</HEAD>
<BODY>
<HR>
<H3>Mohon masukkan informasi berikut</H3>
<FORM ACTION="/cgi-bin/cocokkan.pl Method="GET">
<PRE>
Nama anda :<INPUT TYPE="text" NAME="nama" SIZE=15>
Kata sandi :<INPUT TYPE="password" NAME="sandi" SIZE=8>
<P>
<INPUT TYPE="submit" VALUE="kirim Data">
</PRE>
</FORM>
<HR>
</BODY>
</HTML>
Ketika pengguna mengklikkan mouse pada tombol "Kirimkan Data", data
dikirimkan ke server dengan metode "GET" seperti yang ditunjukkan oleh
pernyataan METHOD="GET". Ada dua metode pengiriman data yang bisa
dipakai, yaitu GET dan POST. Perbedaanya adalah dengan GET, informasi
dikirim sebagai bagian dari string permintaan URL/lokasi yang dikirim
oleh browser, sementara dengan post, data dikirim dengan cara seperti
aliran (stream). Kita pergunakan metode GET untuk contoh program ini
oleh karena lebih mudah untuk dijelaskan.
Pernyataan ACTION="/cgi-bin/cocokkan.pl" menunjukkan nama program
(dalam hal ini sebuah script Perl) yaitu "cocokkan.pl" yan berada di
direktori "/cgi-bin" di dalam web server. Program Perl inilah yang
kemudian dijalankan oleh web server untuk memproses data yang diterima
dari browser.
Adapun program "cocokkan.pl" itu sendiri berisi sebagai berikut;
#!/usr/local/bin/perl
print "content-type: text/html", "\n";
print "Pragma: no-cache", "\n\n";
$data_mentah = $ENV{QUERY_STRING};
($nama_mentah, $sandi_mentah) = split (/&/, $data_mentah);
($kunci, $nama) = split (/=/, $nama_mentah);
($kunci, $sandi) = split (/=/, $sandi_mentah);
$nama =~ tr/+/ /;
if ($nama eq "dios", $sandi eq "rahasia")
{
print "<HTML><HEAD><TITLE>Betul!</TITLE></HEAD>", "\n";
print "<BODY>, "\n";
print "<H3>Selamat datang $nama !</H3>", "\n";
print "<P>","\n";
print "Kata sandi anda benar, anda boleh mempergunakan
server ini.<BR>","\n";
print "Nama server ini : $nama_server","<BR>","\n";
print "Alamat IP Anda : $IP","<BR>","\n";
print "Jenis browser Anda : $jenis_browser","<BR>","\n";
print "<P>","\n";
print "</BODY>","\n";
print "</HTML>","\n";
}
else
{
print "<HTML><HEAD><TITLE>Salah!</TITLE></HEAD>", "\n";
print "<BODY>", "\n";
print "<H3>Maaf, $nama !</H3>", "\n";
print "<P>","\n";
print "kata sandi anda salah. anda tidak diperkenankan
memasuki server ini.<P>" "\n";
print "selamat jalan !","\n";
print "</BODY>","\n";
print "</HTML>t","\n";
}
exit (0);
Penjelasan Jalanya Program
Dua baris pertama program "cocokkan.pl. memberi petunjuk kepada browser
penerima bahwa dokumen dinamis yang akan dikirimkan oleh server adalah
dokumen teks/HTML. Karena ini melibatkan sebuah program, browser tidak
diperkenankan memasukkanya ke dalam memori cache dengan perintah "no-
cache",.
Selanjutnya perintah
$data_mentah = $ENV(QUERY_STRING);
mengambil informasi yang berada di variabel lingkungan "QUERY_STRING"
dan memasukkanya ke dalam variabel "$data_mentah". Informasi yang
terdapat di dalam variabel lingkungan "QUERY_STRING" adalah data yang
dikirimkan oleh browser.
Data yang diperoleh dari browser tidak bisa langsung dipakai karena
masih dalam bentuk yang "tercampur". Data yang diperoleh dari browser
(dan disimpan di dalam variabel lingkungan"$QUERY_STRING") kurang lebih
nampak seperti berikut;
name=dios+kurniawan&sandi=rahasia
Data seperti itu masih belum dapat dipakai dan harus dipisah-pisahkan
terlebih dahulu. Untuk itulah guna ketiga baris yang selanjutnya.
($nama_mentah, $sandi_mentah = split (/&/, $data_mentah);
($kunci, $nama) = split (/=/, $nama_mentah);
($kunci, $sandi) = split (/=/, $sandi_mentah);
Yang pertama berfungsi memisahkan (split) isi variabel "$data_mentah"
menjadi dua variabel yaitu "$nama_mentah" dan "$sandi_mentah"
mempergunakan karakter "&" sebagai pemisahnya. Dua baris berikutnya
memecah sekali lagi variabel "$nama_mentah" dan $sandi_mentah" dengan
karakter pemisah "=". Setelah dipisah, variabel"$nama" dan "$sandi"akan
berisi nama dan kata sandi yang diisikan oleh pengguna dalam form,
seperti berikut;
$nama = "dios+kurniawan"
$sandi = "rahasia"
Baris selanjutnya merapikan pekerjaan. Ia bertugas mengubah sembarang
karakter "+" di dalam variabel "$nama" menjadi karakter spasi "". Ini
berguna untuk menghilangkan karakter-karakter "+" yang dikirim oleh
browser sebagai pengganti spasi.
Tiga baris selanjutnya mengambil informasi dari tiga variabel lingkungan
yang berbeda yaitu yang berisi tentang nama server, jenis browser
pengguna dan alamat IP pengguna. semua dimasukkan secara berurutan ke
dalam variabel-variabel masing-masing yang sesuai.
Lalu yang berikutnya adalah baris terpenting dalam program ini;
if ($nama eq "dios", $sandi eq "rahasia")
Baris diatas mencocokkan apakah isi variabel "$nama" sama dengan (eq,
dari equal)"dios", juga mencocokkan isi variabel "$sandi" dengan "rahasia".
Apabila keduanya cocok, program melangkah ke baris-baris berikutnya;
print "<HTML><HEAD><TITLE>Betul!</TITLE></HEAD>", "\n";
print "<BODY>, "\n";
print "<H3>Selamat datang $nama !</H3>", "\n";
print "<P>","\n";
print "Kata sandi anda benar, anda boleh mempergunakan
server ini.<BR>","\n";
print "Nama server ini : $nama_server","<BR>","\n";
print "Alamat IP Anda : $IP","<BR>","\n";
print "Jenis browser Anda : $jenis_browser","<BR>","\n";
print "<P>","\n";
print "</BODY>","\n";
print "</HTML>","\n";
Bagian ini nampak cukup familiar bagi kita. Ya, tugasnya adalah
mengirimkan dokumen HTML dinamis kepada browser, yang isinya adalah
pesan bahwa kata sandi yang dimasukkan telah cocok. Dokumen ini juga
menampilkan informasi tentang nama server, alamat IP dan jenis browser
pengguna seperti yang telah berhasil diperoleh dari variabel-variabel
lingkungan dan telah tersimpan dalam variabel-variabel "$nama_server",
"$IP" dan "$jenis_browser".
Seterusnya adalah pernyataan ELSE. Pernyataan ini menunjukkan bahwa
bagian program yang selanjutnya hanya dijalankan bila dan hanya bila
persyaratan yang ditetapkan dalam pernyataan IF di atas (dalam program
ini bila variabel"$nama"cocok dengan "dios" dan "$sandi" cocok dengan
"rahasia")telah terpenuhi. Bagian program selanjutnya hanya dijalankan
bila nama dan sandi yang dimasukkan pengguna tidak cocok, dan langsung
program mengirimkan dokumen HTML yang berisi pesan kepada pengguna
bahwa kata sandi yang ia masukkan tidak tepat.
Baris terakhir, mungkin sudah dapat anda tebak fungsinya, menghentikan
jalanya program "cocokkan.pl" sampai di situ saja.
Program di atas hanya satu contoh sederhana dari kekuatan Perl. Masih
sangat banyak penerapan-penerapan Perl untuk CGI yang lain, dan yang
lebih rumit.
Pembahasan tentang pemrograman CGI dengan Perl lebih lanjut berada di
luar cakupan buku ini. Oleh karenanya penulis mempersilakan pembaca
untuk memperoleh dan mempelajari buku-buku tentang Perl yang telah
cukup banyak tersedia.
(kembali ke katalog)
|