CGI'ya
Giriş
CGI (Common
Gateway Interface), web sunucularının fonksiyonlarını genişletmekte kullanılan
bir arabirimdir. Kullanıcıların, tarayıcıları vasıtasıyla yazdığınız
programları çalıştırmalarına yarar. CGI kullanarak, tarayıcıdan aldığınız
bilgileri web sayfanıza uğrayan kullanıcılarla iletişim kurmakta
kullanabilirsiniz. Misafirlerinizin bir 'guestbook' yardımıyla size mesajlar
bırakabilmesinden tutun da gündemi oluşturan konularla ilgili oylamalara kadar
birçok özelliği, CGI programlarının çokyönlülüğü sayesinde web sitenize
katabilirsiniz.
Niçin
CGI?
Normalde web
sunucunuzun kapasitesini arttırmak için sunucunun özelliklerini kendiniz
değiştirmek zorunda kalırsınız. Bu pek tercih edilmeyen bir çözüm yöntemidir,
çünkü internet ve web protokolleri hakkında etraflıca bilgiye sahip olmanız
gerekir. Ancak CGI ile birlikte ağ protokolleri hakkında bilmeniz gerekenler en
aza indirgeniyor.
CGI programları, web sunucularıyla iletişimde standart bir yol izledikleri için
az önce değindiğimiz problemler pek fazla önem teşkil etmiyor. Web
sunucularıyla iletişim sağlayabilen herhangi bir dilde yazacağınız bir program,
CGI protokolünü tanıyan bütün web sunucularında çalışacaktır.
Hangi
Dili Kullanmalıyım?
Bir CGI programı
hazırlamak için sabit bir programlama dili ile sınırlı değilsiniz. CGI
iletişimi kısaca veri girişi ve çıkışına dayanır. Standart veri girişi ve
çıkışına izin veren herhangi bir programlama dili, CGI yazabilmenize olanak
sağlayacaktır. CGI programları yazmak için en çok kullanılan programlama dili
PERL'dür. Fakat C, C++, Visual Basic gibi diğer diller de kullanılabilir.
Bilgiler
tarayıcıdan nasıl alınır?
Bir CGI programı
tarayıcıdan iki tür bilgi alır: Birincisi, sunucu ve tarayıcı hakkındaki
bilgiler (sunucunun adı, versiyonu, kullandığı port numarası, tarayıcının türü
vb.), diğeri ise kullanıcı tarafından girilen bilgiler. İkinci yolda HTML
formları kullanılır. İki ay önceki köşemizde HTML formlarının nasıl
hazırlandığını incelemiştik. Örnekte görüldüğü gibi kişisel ya da ticari
sayfanıza giren kullanıcıların size web üzerinden notlar bırakabilmelerini
sağlayan bir form hazırladığımızı düşünelim. Kullanıcı isim, elektronik - posta
ve mesaj bilgilerini girip 'Gönder' butonuna bastığında, sizin de çoğu zaman
farkedebileceğiniz gibi, tarayıcı bizi aşağıdaki gibi bir adrese götürür:
http://Alanadı/cgi-bin/
merhaba.cgi? Name=Gokhan& Surname=Onal&e-mail=
[email protected]&Comments=Merhaba
Tarayıcı, eğer önceden bu şekilde ayarlanmışsa, '?' işaretinden önceki kısımda '.cgi' uzantısını görünce, bu dosyanın yalnızca bir HTML sayfası ya da resim dosyası olmadığını ve bunun çalıştırılması gereken bir program olduğunu anlar. '?' işaretinden sonra gördüğümüz kısım ise 'Query String' olarak adlandırılır. 'Query String'in içinde her bölüme ait veriler '&' işareti ile birbirinden ayrılmıştır.
İlk CGI
Programım
Şimdi de gelin
tarayıcı ekranına 'Merhaba' yazan ilk CGI programımızı Perl dilinde yazalım:
#!/usr/local/bin/perl
# merhaba.cgi - ilk CGI programım
# print 'Content-Type:text/html\n\n';
# print '\n';
# print '';
# print '\n';
# print '
\n';
# print '<b><I>Merhaba, bu benim ilk cgi denemem
</b></I>\n';
# print '
\n';
Yukarıdaki programı 'merhaba.cgi' olarak kaydedelim (Genellikle
'http://alanadı/cgi - bin/' dizininin altına kaydedilir).
Ayrıntılar
Yazdığımız program
üzerinde dikkat etmemiz gereken birkaç nokta var. İlk olarak yazdırma, 'print'
fonksiyonunu kullandığımıza dikkat edelim. CGI programları, veri çıkışı için
özel fonksiyonlar ya da özel dosya giriş çıkışları gerektirmezler. Tarayıcıya
veri gönderebilmek için yalnızca 'stdout'u kullanmak yeterli olacaktır. İkinci
olarak da ilk 'print' fonksiyonunun içeriğine bakalım.
'Content - Type: text/html\n\n' satırı, kullanıcılar tarafından görülmez. CGI kullanarak, web tarayıcılarına istediğiniz dosya tipini gönderebilirsiniz: HTML, metin, grafik, video vb. Ancak tarayıcıya gönderdiğiniz bilginin türünü belirtmelisiniz. Son olarak, programımızı 'merhaba.cgi' olarak kaydetmemize rağmen, her zaman '.cgi' uzantılı olarak kaydetmek zorunda olmadığınızı belirtelim.