ana sayfa : araştırma : uzaktan web tasarımı : form girişinin işlenmesi [ 5 / 5 ] |
|||||
GERİ | |||||
FORM
GİRİŞİNİN İŞLENMESİ
Geri besleme formu için HTML kodları
tamamlandı, şimdi kullanıcının gözatıcı yoluyla gönderdiği veriyi
alacak feedback.pl adındaki CGI programcığı yaratılmalıdır. Feedback.pl
programcığı web sunucudan bilgiyi alır almaz hemen kodunun çözer.
Sonra bu bilgiyi alır ve bir e-mail içine koyar. En sonundada okuyucuyu
ana sayfaya götürür. Liste
8 -
Geri Besleme Formunun HTML Kodları
Giriş
Kodunun Çözülmesi
Hatırlanacağı gibi kullanıcı girişli CGI
programına gönderilen veri URL olarak kodlanmıştır. Bu yüzden programın
yapacağı ilk iş bu verinin kodunu çözmektir. Bu veri alınır ve User_Data
olarak isimlendirilen bir procedure’e yerleştirilir. Perl’de bir
altprogram tam olarak bir fonksiyondur ve başına ampersand (&) konarak
çağrılabilir. Bu &User_Data şeklinde ifade edilebilir. Perl dilinde
genellikle alt program tanımlamaları dosyanın en sonunda yapılır. Bu
durumda feedback.pl dosyası User_Data alt programının bir çağrısını
ve tanımlamasını içerebilir. Aşağıdaki liste feedback.pl dosyasının
nasıl olacağını gösterir. Liste
9 -
Feedback.pl Dosyasının İlk Bölümü
Girişin
E-Mail Olarak Yollanması
Kullanıcı girişinin şifresi çözüldükten
sonra veri onunla çalışmaya hazır hale gelmiştir. Bu örneği amacına
ulaştırmak için e-mail yoluyla bilgiyi yollayan bir CGI programcığına
ihtiyacımız olacak. Bu iş e-mail mesajlarını yollayabilmemiz için bir
tane SMTP mail sunucusu gerektirir. (SMTP Simple Mail Transfer Protocol
anlamına gelir.) Windows ya da UNIX kullanmanıza göre SMTP
mail sunucusu arayüzü çeşitlenebilir. Buna göre birisi Wındows’ta diğeri
de UNIX’te e-mail yollayabilen iki tane alt program yaratalım. Bu alt
programların her ikisi de e-mail olarak yollanacak mesajı içeren tek argümana
sahip olacaklardır. Çünkü hangi altprogramı kullandığımıza bakmadan
aynı string’i e-mail olarak yollayacağız. foreach $key (sort keys(%data_received)) {
$mail .= "$key:\n";
foreach (split(" : ", $data_received{$key})) {
$mail .= "$_\n\n";
}
}
Bu
kod iki tane döngü içerir. Dışta olanı her dizi elmanının üzerinde
döner. Hatırlanacağı gibi ilişkili diziler
anahtarlar olarak bilinen elemanlarına göre indekslenirler. Böylece tüm
dizi üzerinde dönerek tüm anahtarlar üzerinde de dönmek zorunda kalırsınız.
Bunu Perl’ün keys() fonksiyonunu kullanarak yaparsınız. Bu fonksiyon
parantezler arasındaki ilişkili dizi argümanları için tüm anahtarları
döndürür. Sonra her anahtar $key değişkenine atanır. Dıştaki döngünün
içinde $key içindeki değer “\n” ile beraber $mail değişkenine aktarılır.
İçteki döngü ise her dizi elemanının değerinin “ : “ olup olmadığına
bakar. $mail.=”$_\n\n”
satırı isim/değer çifti değerlerini e-mail yoluyla yollanacak stringe
yerleştirir. Eğer Perl bilmiyorsanız bu örnek neler olduğu
konusunda sizi aydınlatacak. Geribesleme formu üç tane giriş alanına
sahiptir. Bunlar: isim, e-mail ve açıklama metin alanlarıdır. Bu örnek
için, isim alanına Robert McDaniel, e-mail alanına robertm@ deltanet.com
ve açıklama alanına da Hi There! yazabilirsiniz. Sonra &User_Data()
altprogramını çağırırsak %data_received ilişkili dizisi aşağıdaki
üç ayrı elemana sahip olur:
$data_received{'name'}=Robert McDaniel
$data_received{'email'}=robertm@deltanet.com
$data_received{'comments'}=Hi there
Döngü birkez döndükten sonra $mail stringi aşağıdaki
şekli alır: $mail=comments:\nHi there\n\n
Bir kez daha dönünce;
$mail=comments:\nHi there\n\nemail:\nrobertm@deltanet.com\n\n
Son dönüşte ise; $mail=comments:\nHi
there\n\nemail:\nrobertm@deltanet.com\n\nname:\nRobert McDaniel\n\n
şeklinde olur. String en sonunda e-mail içine yazıldığında ise; comments:
Hi there
email:
robertm@deltanet.com
name:
Robert McDaniel
şekline gelir. Unıx
Olan Bir Makinada E-Mail Yollama
Şimdi e-mail için formatlı bir mesajımız
var onu artık e-mail olarak yollayabiliriz. Eğer UNIX üzerinde çalışıyorsanız,
SMTP sunucusu olarak sendmail programını kullanacaksınız. Şimdi de
Unix’te mail yollayabileceğimiz Perl kodlarını vereli: Bir
Wındows Sistemde Mail Yollama
Eğer bir Windows sistemiyle çalışıyorsanız
SMTP sunucusu için WinSMTP adı verilen bir program kullanmalısınız.
WinSMTP WRMail adı verilen bir komut satırı programına sahiptir. Bu
program CGI programcığınızdan e-mail yollamaya izin vermektedir. Şimdi
de Windows için kullanılan e-mail altprogramını verelim. Liste
10 -
Windows E-mail Altprogramı
Bir
Cevap Dödürülmesi
Alınan ve işlenen bilgiden sonra CGI
programcığı olayın tamamlandığını gösteren bir mesajı gözatıcıya
yollar. Feedback.pl örneği için eğer isterseniz kullanıcının gözatıcısına
ana sayfanızı yollayabilirsiniz. Çünkü bu sayfa hazır, siz tüm HTML
kodlarını ve metnini yollamak yerine sadece sayfanın yerini yollasanız
yeterli olmaktadır. Bu işlem şu satırla yapılabilmektedir. print "Location: http://www.robertm.com\n\n";
Şu ana kadar feedback.pl dosyasını parça
parça vererek tamamladık. Şimdi bu parçaları da birleştirip dosyanın
kodlarını bir defada verelim. Liste
11 -
Feedback.pl Programcığı
|