CGI Nedir



CGI (Common Gateway Interface). CGI`ye bir tür veritabanı programlaması denilebilir. CGI veritabanlarına, dökümanlara ve diğer programlara veri veya bilgi gönderebilen veya alabilen bir özelliğe sahiptir. Hatta bu bilgiler ziyaretçilere aktarılabilir, bazı veriler ziyaretçiler tarafından değiştirilebilir. İşte CGI, böyle bir arayüzdür. CGI programları değişik dillerde yazılabilir. Bu dillerden en çok tercih edileni ve benim de kullandığım Perl'dür.CGI`nin onemli  özelliği, ziyaretçiyle diyaloğa girmesidir. Böylece websiteleri kuru HTML sayfası görünümünden kurtularak, interaktif bir hale gelir.

 CGI (Common Gateway Interface). CGI`ye bir tür veritabanı programlaması denilebilir. CGI veritabanlarına, dökümanlara ve diğer programlara veri veya bilgi gönderebilen veya alabilen bir özelliğe sahiptir. Hatta bu bilgiler ziyaretçilere aktarılabilir, bazı veriler ziyaretçiler tarafından değiştirilebilir. İşte CGI, böyle bir arayüzdür. CGI programları değişik dillerde yazılabilir. Bu dillerden en çok tercih edileni ve benim de kullandığım Perl'dür.CGI`nin onemli  özelliği, ziyaretçiyle diyaloğa girmesidir. Böylece websiteleri kuru HTML sayfası görünümünden kurtularak, interaktif bir hale gelir. Cgi programları UNIX işletim sistemi veya NT işletim sistemi yüklü makinede çalışabilir. Windows işletim sistemi altında da çalışmıyor değil tabii ki. Windows altında çalışabilmesi için ActivePerl programını sisteminize kurmanız gerekmektedir. Yazılan cgi scriptler genelde Unixte  çalışmaktadır.
CGI websayfalarında çok değişik amaçlar için kullanılabilir. Bunlardan bazılar şifreli sayfa oluşturma, sayaç, banner değişim, ziyaretçi defteri gibi.
Cgi kullanabilmek için Unix kodlarını bilmenize gerek yoktur. Bazı durumları bilmeniz yeterli olacaktır. Bunlardan biri ve en önemlisi chmoddur
Sayfamda yer alan cgilerin hepsi perl dilinde yazılmıştır.[Perl=(Practical Extraction and Reporting Language)] Perl ile yazdığınız scriptleri derlemenize gerek yoktur. Scriptlerinizi yazar ve web serverınız çalıştırır. Script kendi başına sadece text kodudur. Aslında bütün işi web serverınızda kurulu olan Perl yorumlayıcısı yapar.

Chmod nedir, nasıl değiştirilir?
Eğer web sunucunuz Unix işletim sisteminin (Linux şu günlerde popüler olan işletim sistemidir ve Unix` in bir parçası sayılabilir.) bazı özelliklerini çalıştırmanıza izin veriyorsa ve bunlardan birisi de CGI scripleri çalıştırabilmek ise mutlaka CHMOD ayarlarının nasıl yapıldığını bilmeniz gerekmektedir.
Öncelikle şunu belirtelim, bilinen Windows sistemilerinden sonra Unix sistemi oldukça farklıdır. Benzer görünüşler(profiller) de yer almaktadır. Her kullanıcı bazı özellikleri kullanabilmek için izin almak zorundadır.
Kısaca basit bir CGI scripti kullanmak için kullandığınız sunucunun sistemi Unix veya Linux olsada sunucunun idarecisinden CGI kullanma hakkınız açılmış olması gerekir. Yoksa bunları kullanamazsınız. Çalıştıma hakkınız var ise tipik CGI scriptleri rahatça çalıştırabilirsiniz ve çalıştırırken CHMODunu 755 yapmalısınız.(-rwxr-xr-x)
Chmod`un anlamı aslında yol,biçim değiştirmektir. Böylece işlerlik kazandırılabiliniyor. Bu özellik o dosyaya ayrıcalıklar sağlar.

Nasıl CHMOD değiştirilir veya kurulur?
Çok basit. En basit yollardan biri, tavsiyemiz kendi FTP programınızı kullanmanızdır. Telnet`i ise FTP programını ne kadar çok tavsiye ediyorsak bunu da o kadar az tavsiye ediyoruz.
   FTP programı önerimiz ise FTPVoyager (http://www.ftpvoyager.com) veya CuteFtp`dir.
Şimdi, bu cazip, olağan bir prosedürdür. Cgi scriptleri çalıştırabileceğiniz yerleri biliyorsanız orayı açınız , eğer bilmiyorsanız cgi-bin dizinini açınız. Burada herhangi bir script seçerek mousenuzun sağ tuşuna tıklayınız. Bir pencere açılacak ve burada bazı özellikler yer alacaktır.(Yeni klasör oluşturma, doğal özellik değiştirme,isim değiştirme,silme gibi.).
            Bu pencere Doğal özellik değiştirme("Change File Attributes") özelliğini seçiniz. Buraya mousenuzun sol tuşu ile bir kere basarsanız ufak bir pencere açılır. Burada 9 farklı kontrol kutusu ve 1 tane de yazı kutusu yer almaktadır. Tavsiyemiz yazı kutusuna (ufak pencerenin en altındaki kutucuk) chmod değerini (genelde Cgiler için 755 tir.) yazınız. Veya 9 kontrol kutusundan şunları işaretleyiniz :
User : Read , Write , Execute
Group : Read , Execute
World : Read , Execute
Bu işlemi yaptıktan sonra "Tamam" veya "Ok" butonuna tıklayınız. Bu işlemden sonra da orta büyüklükte pencere çıkacak. Bu pencere sadece sizden onay beklemek içindir. Buna da "Ok" veya "Tamam" demezseniz scriptiniz yine çalışmaz. Bu işlemden sonra scriptiniz web üzerinden çalışır duruma gelecektir. Yani CHMOD değişmiş olacaktır.

CGI Bölüm-1
Cgi (Common Gateway Interface); Perl (Practical Extraction and Reporting Language), C++ gibi dillerle web yazılan ve internette web sayfalarımızı dinamik hale getiren bir dildir.Cgi yazıldıktan sonra derlenmesine gerek yoktur yani cgi yı yazdıktan sonra direk makineye yolluyup çalıştırabiliriz ve cgi en basitinden bir notepad programıyla bile yazılabilir.Bu dille yazılan (.pl ve .cgi uzantılı dosyalar) sayesinde web üzerinde ziyaretçi defteri, formmail, forum, sanalmarket gibi internete yönelik bir çok program yazılabilir fakat biz yazımızda cgi nasıl yazılır diye incelemiyeceğiz çünkü sitemizin perl bölümünde bu konu hakkında daha geniş bilgi elde edebilirsiniz.Ben size genel hatlarıyla cgi yazımı,kurulumu ve örnekleri gibi konuları anlatacağım.
Cgi ; internette Unix ve Nt kurulu makinelerde çalışabilir.Cgi yın çalışması için bilgisayarlarda bir web server programının ve Perl programın kurulu olması kafidir.Eğer sizde cgi yazmayı düşünüyorsanız windows unuzu kullanarak yazdığınız cgi programlarını çalıştırabilirsiniz (windows da mail server özelliği olmadığı için mail almaya veya göndermeye yönelik programları çalıştıramazsınız).Windows altında cgi çalıştırmak için lütfen buraya tıklayın
Cgi yı eğer "windows altında cgi çalıştırmak" yazımızı (yukardaki) okuduysanız artık kendi bilgisyarınızda çalıştırabilirsiniz veya internet üzerinde bedeva cgi desteği veren host sitelerde çalıştırabilrisiniz.
Bedeva cgi desteği veren kaliteli siteler:
Bu sitelerden virtualave.net benim tavsiye ettiğim site çünkü 20 mb alan ve full cgi desteği veriyor yani cgi dosyalarınızı virtualave.net içerisinde heryerde çalıştırabiliyorsunuz ayrıca bu sitenin banner larını bir script sayesinde kolaylıkla kaldırabiliyorsunuz (Bu script sitemde var).
Şimdide bir klasik olmuş " Merhaba Dünya! " yazısını html ile la nasıl yazacağımızı görelim (Bunu yapmakta ki amacım cgi ya giriş te zorluk çekmemeniz)
<html><head><title>Selam</title></head>
<body>
<h2>Merhaba Dünya!</h2>
</body></html>
"Merhaba Dünya!" yazasının şimdide cgi da nasıl yazılacağını görelim ve daha sonra bunları adım adım açıklayalım
#!/usr/bin/perl
print “Content-type:text/html\n\n”;
print “<html><head><title> Ilk Cgi Programım </title></head>\n”;
print “<body>\n”;
print “<h2>Merhaba dunya!</h2>\n”;
print “</body></html>\n”;
  • burda #!/usr/bin/perl perl programını çalıştırmak için yüklediğimiz makinede perl programın yerini gösterir eğer siz yukardaki kodu eğer virtualave.net te çalıştırmak istiyorsanız bu kod #!*/usr/local/bin/perl olarak değiştirmek zorundasınız.Eğer bu kodu programa eklemezseniz dogal olarak program kendini çalıştırmak için perl programının yerini bulamıyacağı için çalışmayacak ve "Internel Server Error 500 " hatasını verecektir.Bu yolun kendi server unuzda nerde olduğunu öğrenmek için host firmanızın Faq yada Support bölümünü inceleyin yada server unuza telnet bağlantınız varsa telnet bağlantısı kurup which perl yada whereis perl komutlarıyla öğrenebilirsiniz
  • print "Content-type:text/html\n\n"; komutu cgi yın bir web sayfası yaratması için eklenmesi için gerekli kod tur
  • print "<html><head><title>İlk Cgi Programım</title></head> \n"; bu satırdaki print komutu verilen yazıyı ekrana bastırmaya yarar. Tırnak içerisindeki \n nin manası o satırın bittiğini ve bir alt satıra geçtiğimizi gösterir en son daki ; işaretisi her komut sonrasına satırın sonuna eklenir.<html><head><title>İlk Cgi Programım </title></head> ise sayfaya bastırılacak olan yazıdır burdaki komutlar html dilinde yazılmıştır ne manaya geldiğini anlatmaycağım çünkü cgi için html yi azda olsa bilmeniz gerekiyor Html hakkında bilgi edinmek için buraya tıklayın.(Html yi bilmeyen arkadaşlar Html bölümünde ilk sayfayı okurlarsa azda olsa onlara yetecek kadar bilgi saibi olabilirler )
  • Eğer yukardaki anlatımı anladıysanız ve html hakkında az da olsa bilginiz varsa sanırım diğer satırları anlatmama gerek yok.
Şimdi yukardaki kodu notepad programıyla yazdığınızıve merhaba.cgi diye kaydettiğinizi farz ediyorum ve şimdi bunu server umuza nasıl yükleyip çalıştıracağımızı anlatacağım.Hazırladığımız dosyayı ASCII modda yüklemeliyiz.Ben size CuteFtp programıyla dosyamızı nasıl ASCII modda yükleyeceğimizi anlatacağım ve genelde diğer Ftp proramlarındada aynı mantıkla çalışır.Öncelikle CuteFtp programını açıp programda dosyamızı yükleyeceğimiz siteyi seçiyoruz ve "Edit Site" tuşuna basıp (Şekil_1)
Burda "Transfer Type" bölümünde ASCII seçeneğine işaretliyoruz (Şekil_2 ).
Bu işlemi yaptıktan sonra tamam tuşuna basıp karşımıza gelen "Ftp Site Manager" penceresinde "Connect" tuşuna basarak siteye bağlanıyoruz ve hazırladığımız merhaba.cgi dosyasını sitemize yüklüyoruz.Bundan sonra yapmamız gereken adım ise dosyamızın chmod unu 755 yapmak ancak eğer siteniz virtualave.net sitesinde ise virtualave.net cgi programının chmod unu otomatik olarak 755 yapıyor.Eğer siteniz virtulave.net te değilse dosyanın ChMod unu 755 yapmak için sitenize yüklediğiniz dosyanın üzerine gelip sag tuşa basın ve "Change File Attributes" seçeneğine tıklayın
karşınıza çıkan pencerede Manuel yazan kutuya 755 yazıp enter a basın.
Şimdiye kadar basit cgi yazılımı ve bunu internete nasıl yüklenip çalıştırılacağını gördük.Bu safhadan sonra ise cgi kurulumlarında sıkça karşımıza çıkacak olan bazı değişkenleri göreceğiz.Bu sayede rahatlıkla elimizde ziyaretçi defteri ,forum, form gibi bir çok cgi programını kendimiz kurabiliriz.
Not: Bu değişkenlerin ben size genelde kullanılan isimlerini vereceğim genelde bu tip şeyler cgi programını yazan kişiye göre farklı isimlerle adlandırılabilirler.Ancak genelde kurulum için verilen dosyayı okursanız genelde bunların ne olduğüunu rahatça anlayabilirsiniz
#!/usr/bin/perl Bu değişken cgi programlarının en üst satırında yer alan ve cgi yın kendini çalıştırması için kuruluduğu server daki perl in yerini gösterir.Örneğin dosyalarını virtualave.net te yer alıyorsa bu değişkeni #!/usr/local/bin/perl olarak değiştirmeniz gerekiyor
$mailprog= Bu değişken bize server umuzun Sendmail programının yolunu soruyor.Örneğin siteniz virtualave de ise bu yol /usr/sbin/sendmail olacak.
$date= Bu değişken bize server umuzun date programının nerde olduğunu soruyor.Sitemiz virtualave.net te barınıyorsa bunun karşısına /bin/date yazacağız
$cgi_url= Bu ise bize cgi dosyalarımızın hangi dizin altında olduğunu soruyor.Örneğin cgi programlarınızı sitenizde cgi-bin dizini altına attıysanız bu değişkenin karşısına şöyle yazacaksınızhttp://siteadiniz.com/cgi-bin
$cgi_path= Bu değişken bize cgi dosyalarımızın path yolunu soruyor.Örnekleri virtualave.net göre anlattığım için yine eğer siteniz virtualave.net te yer alıyor ve dosyalarınız cgi-bin dizini içinde ise bu değişkene şöyle yazmalısınız diyeceğim ve /data1/virtualave.net/kullanıcı_adı/public_html/cgi-bin diye yazacağım :)
Genel hatlarıyla cgi programını kurmak için neler yapmamız gerektiğini gördük.Bundan sonraki safhada ise size uygulamalı olarak bazı cgi programlarının nasıl kurulacağını adım adım anlatacağım.
Lütfen bu yazıda eksik yada yanlış gördüğünüz kısımlara bana bildirin ve lütfen izin almadan yayınlamayın
xxxxxx