[ Klik-Kanan.com ]
 
 Depan » Tutorial » Perl Info Banner   Tentang Kami   Buku Tamu   Kontak 

Tutorial Perl:
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> e-mail : <input type="text" name="mail"<br> <input type="submit" value="kirim"> </form>
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

print "Content-type: text/plain\n\n";
$input = $ENV{'QUERY_STRING'};
@data = split(/&/, $input);

foreach $datum (@data){
        ($key, $nilai)= split (/=/,$datum);
        #plus dijadikan spasi
        $nilai =~ tr/+/ /;
        #lalu bil hexanya dipack
   $nilai =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("c",hex($1))/ge;
        $FORM{$key}=$nilai;
}
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).

 
© 2001 - 2006 Klik Kanan
Dilarang memperbanyak artikel yang terdapat pada situs ini tanpa seizin Klik Kanan.