Mungkin Yang Anda Cari Ada di Sini

Senin, 04 Oktober 2010

Mengenal Variabel Lingkungan (2)

Tutorial Perl

  1. Pendahuluan
  2. Pengertian CGI
  3. Syarat untuk menulis CGI
  4. Contoh script Perl sederhana
  5. Mengenal variable lingkungan
  6. Mengirim email lewat form
  7. Membuat script Tell a Friend
  8. Membuat buku tamu

Mengenal Variabel Lingkungan 

Oleh : Yohanes Nugroho


Input dengan metode GET

Input form yang dikirim dengan metode GET akan dilewatkan sebagai variabel lingkungan QUERY_STRING oleh webserver, jadi sekalian topik ini dibahas di tutorial bagian kedua ini. Sekarang coba buat file html dengan body berisi baris-baris seperti ini:

<form method ="get"
actioan="http://langitbiru.hypermart.net/demos/env.pl">
Nama : <input type="text" name="nama"><br>
<input type="submit" value="kirim"> </form
e-mail : <input type="text" name="mail"<br
>>



Yang seharusnya akan tampil seperti ini:

Nama :  
e-mail :  

Ketikkan sembarang untuk input nama dan email, lalu klik 'kirim'. Jika saya masukkan input nama : Yohanes Nugroho dan emailnya webmaster@langitbiru.hypermart.net, maka nilai query string akan seperti ini:

QUERY_STRING = nama=Yohanes+Nugroho&mail=webmaster@langitbiru.hypermart.net

Dari sana bisa dilihat bahwa teks dikirim dengan format seperti ini:
  1. antara setiap variabel dipisahkan dengan ampersand (&)
  2. spasi akan diubah menjadi plus (+)
Kalau begitu Anda pasti bertanya, lalu + dan & dikodekan jadi apa?. Mari kita coba ubah inputnya menjadi, nama adalah Lia & Bob, email menjadi lb@langitbiru.hypermart.net. Nilai query string akan seperti ini:





QUERY_STRING = nama=Lia+%26+Bob&mail=lb@langitbiru.hypermart.net





jadi ada tambahan lagi, karakter-karakter khusus akan di-encode menurut nilai ascii-nya dalam heksadesimal. Skrip berikut ini akan melakukan pemrosesan sehingga nilai-nilainya dipisahkan dan dikembalikan (di-decode) kebentuk asalnya agar bisa diproses:


#!/usr/local/bin/perl
rint "Content-type: text/plain\n\n";
p$input = $ENV{'QUERY_STRING'};
each $datum (@data){
@data = split(/&/, $input); fo r ($key, $nilai)= split (/=/,$datum);
nilai =~ tr/+/ /; #la
#plus dijadikan spasi $lu bil hexanya dipack
Fa-f][0-9A-Fa-f])/pack("c",hex($1))/ge; $FORM{$key}=$n
$nilai =~ s/%([0-9A -ilai; } foreach $var (keys %FORM){ print "$var = $FORM{$var}\n";
}

Sekarang hasil keluarannya sudah lebih baik. Anda bisa mencoba mengetikkan sembarang data dan elihat hasilnya.
Nama :  
e-mail :  




Sekarang saya jelaskan bagaimana pemrosesan ini dilakukan. pertama kita ambil input dari variabel lingkungan QUERY_STRING, lalu pisahkan setiap variabel (yang dibatasi oleh &) dengan split. Hasilnya ada di varibel array @data. Lalu untuk setiap pasangan nama dan nilai variabel kita proses lagi dalam loop foreach. Pisahkan nama dari nilai dengan memakai split, lalu isi variabel nilai akan diproses.

$nilai =~ tr/+/ /;

akan mengubah plus menjadi spasi. Lalu untuk mem-pack bilangan heksanya dilakukan dengan:

$nilai =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("c",hex($1))/ge;



artinya, ubah untaian karakter % yang diikuti dua bilangan heksa (0-9, A-F) menjadi representasinya dalam karakter ascii. Selanjutnya nilainya dimasukkan dalam variabel %FORM, untuk bisa digunakan pada bagian selanjutnya (sebenarnya kalau mau bisa langsung diproses).


Tidak ada komentar:

Posting Komentar

Subscribe via email

Enter your email address:

Delivered by FeedBurner

Related Posts Plugin for WordPress, Blogger...
web metrics