Tutorial Perl
- Pendahuluan
- Pengertian CGI
- Syarat untuk menulis CGI
- Contoh script Perl sederhana
- Mengenal variable lingkungan
- Mengirim email lewat form
- Membuat script Tell a Friend
- 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"> </forme-mail : <input type="text" name="mail"<br>>
Yang seharusnya akan tampil seperti ini:
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:
- antara setiap variabel dipisahkan dengan ampersand (&)
- 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/perlrint "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 dipackFa-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.
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