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.

Hosted by www.Geocities.ws

1