Webmaster Forumu - Webmaster Zone

Geri git   Webmaster Forumu - Webmaster Zone > Webmaster Zone > Programlama Dilleri > CGI / Perl

Cevapla
 
LinkBack Seçenekler Stil
  #1 (permalink)  
Alt 09-01-2007, 16:48:00
Alone - ait Kullanıcı Resmi (Avatar)
Alone Alone isimli üyemiz çevrimdışıdır. (Offline)
Zonekolik
 
Üyelik tarihi: 31/1/2007
Nerden: İstanbul
Mesajlar: 1.306
iTrader: (11)
Tecrübe Puanı: 75
Alone is just really niceAlone is just really niceAlone is just really niceAlone is just really niceAlone is just really niceAlone is just really niceAlone is just really niceAlone is just really nice
Cool Perl ile CGI Programlama

CGI Nedir?

CGI, Common Gateway Interface (Ortak Geçit Arayüzü) kelimelerinin kısaltılmışıdır. CGI terim olarak, bir web sunucusu üzerinden; verileri veritabanlarından, dökümanlardan ve diğer programlardan elde etme ve verileri hazırlayıp yine web üzerinden web tarayıcılara sunma metodudur. Daha açıkçası CGI, web tabanlı programlama metodudur. Web tabanlı programlamayı ana hatlarıyla ikiye ayırabiliriz: Sunucu (server) tarafinda programlama ve istemci (client) tarafinda programlama. (yada her ikisi aynı anda.) İstemci tarafında programlama için Java, JavaScript veya VBScript iyi bir seçim olabilir. Sunucu tarafında programlama için en uygun seçenek (UNIX platformu için ve Windows NT için de) CGI�dır. Bir CGI programı kısıtlama olmaksızın istenilen herhangi bir programlama dili ile yazılabilir, ancak Perl en popüler CGI programlama dilidir, çünkü daha çok bu amaçla tasarlanmiştır.

Niçin CGI Öğrenmeliyiz?

Eğer web sayfaları tasarlıyorsanız bazen sayfanızı kaç kişinin ziyaret ettiğini öğrenmek isteyebilirsiniz, ziyaretçilerin size mesaj bırakmalarını isteyebilirsiniz yada bir sipariş geçmelerini sağlamak ve buna benzer şeyler isteyebilirsiniz. CGI, tüm bunları ve fazlasını yapmak için size bir takım imkanlar sunar. Günümüzde CGI, basit bir sayaç veya e-mail programından tutun da daha karmaşık ve veritabanı kullanan pek çok siteye kadar her yerde kullanılmaktadır. Mesela; hepimizin bildiği amazon.com, yahoo.com veya hotmail.com sitelerinin gerisinde ne var diye sorarsak, CGI programlamanın olduğunu görürüz. Şimdilerde CGI bilmek, işverenlerin en çok aradıkları bir husus olmuştur ve CGI öğrenerek iyi iş bulma şansınız artar yada mesleğinizde çok hızlı yükselebilirsiniz...

Başlamak İçin Nelere İhtiyacımız Var?

Bu kitapçık, aslında bir UNIX işletim sistemi üzerinde Perl kullanarak CGI programları geliştirmek için hazırlanmıştır. Eğer UNIX bilmiyorsanız telaşlanmayın, gerektiği yerde yeterinde UNIX bilgisi de verilecektir. Ayrıca her bölümde yazdığınız CGI programınızı kullanabilmek için gerekli UNIX komutları açıklanacaktır. Eğer kullanabileceğiniz bir UNIX hesabınız yoksa bana bildirin, derhal ücretsiz bir hesap açalım.

Eğer UNIX yerine Win NT kullanıyorsanız, işiniz çok kolay, Perl öğrenmek daha da kolay. çoğu NT makinası zaten Perl kodunu (aynen UNIX makinaları gibi) doğrudan çalıştırmaktadır. Ancak, buradaki bazı örnekler UNIX�e özgü oldukları için Win NT�de çalışmayacaklardır. Windows altında Perl çalısmak için http://reference.perl.com/query.cgi?windows adresini ziyaret ediniz.

Eğer kendi bilgisayarınızda, Windows 98 ortamında çalışmak isterseniz, Perl.com: The Source for Perl -- perl development, conferences adresinden uygun bir Perl yorumlayıcısı ve http://www.solutionsoft.com�dan PerlBuilder trial indirip kurmalısınız. Tabii bir de Perl desteği olan kişisel web sunucusu kurmak gerekecektir... örneğin, Win 98 CD�sinde yer alan Personal Web Server (PWS) uygun olabilir. Gerekli programları kurduktan sonra PWS�nin Perl kodlarını işleyebilmesi için Windows�un registry ayarlarıyla oynamak gerekir. Bunun için registry�de,

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servic es\W3SVC\Parameters\Script Map

bölümüne aşağıdaki string value'leri oluşturmalısınız.

.pl --> c:\Perl\bin\perl.exe %s %s
.cgi --> c:\Perl\bin\perl.exe %s %s

Not: Bu değişikliklerin etkin olabilmesi için Windows'u yeniden başlatmanız gerekir...
Alıntı ile Cevapla
  #2 (permalink)  
Alt 09-01-2007, 16:48:45
Alone - ait Kullanıcı Resmi (Avatar)
Alone Alone isimli üyemiz çevrimdışıdır. (Offline)
Zonekolik
 
Üyelik tarihi: 31/1/2007
Nerden: İstanbul
Mesajlar: 1.306
iTrader: (11)
Tecrübe Puanı: 75
Alone is just really niceAlone is just really niceAlone is just really niceAlone is just really niceAlone is just really niceAlone is just really niceAlone is just really niceAlone is just really nice
Standart

Benim CGI programlama için tercih ettiğim dil Perl�dir. Perl oldukça basit bir dildir, öğrenmesi çok kolaydır ve birçok zor ve karmaşık işi gerçekleştirmek için de yeterince güçlüdür. Her yerden temin edilebilir, ücretsizdir ve muhtemelen çalıştığınız UNIX (veya Win NT) sunucusu üzerinde önceden hazır kurulmuş vaziyettedir.

Perl, (Practical Extraction and Report Language) kelimelerinin türetilmiştir ve ilk kez Larry Wall tarafından düşünülmüştür. Daha sonradan ise pek çok gönüllü programcı tarafından geliştirilmiş, kütüphaneleri hazırlanmıştır. Hatta Microsoft da ActiveState projesi dahilinde Perl�i UNIX ortamından Win32 platformuna taşımıştır.

Perl bir yorumlayıcı dildir. Bunun anlamı, yazdığınız programlarınızı derlemek zorunda kalmıyorsunuz; sadece yazıyorsunuz ve çağırıyorsunuz. Web sunucusu sizin adınıza çalıştırıyor. Hepsi bu kadar... Bir betik (script demek daha doğru aslında) metin halinde yazılan Perl kodudur. Perl yorumlayıcısı sadece bu metni alır ve çalıştırır, ilave işlemlere gerek yoktur. Bunun avantajı, betiğinizi Perl yüklü olan herhangi bir makineye kopyalayıp çok az yada hiçbir değişiklik yapmadan aynen çalıştırabilmektir. Dezavantajı ise hataları önceden görmek için betiği mutlaka çalıştırmak ve test etmek zorundasınız... Bazen gözden kaçan durumlar sizi saatlerce uğraştırabilir.

Perl betiklerinizi ya kendi lokal makinanızda (Notepad, Simpletext vb. editör programlarıyla) yada Unix sunucu üzerinde hazırlayabilirsiniz. Eğer Linux kullanıyorsanız pico veya joe gibi editör programlarını kullanabilirsiniz. Yazdığınız betikleri kaydederken binary değil, mutlaka text formatında kaydetmelisiniz. (UNIX sistemlerde jpeg/gif/au gibi binary veriler dışında tüm HTML dosyalar ve Perl CGI betikleri text formatındadırlar.) Daha sonra bir FTP programıyla (mesela CuteFTP, WS_FTP gibi) betiklerinizi Unix sunucuya aktarmanız gerekir.

Peki nereye? Aksi belirtilmedikçe kendi ev (home) dizininiz altında bulunan ve web sayfalarınızın yer aldığı /home/username/public_html dizinine... Daha sonra ise, Perl betiklerinizin �executable� yani çalıştırılabilir olması için aşağıdaki komutlardan birini kullanarak erişim haklarını değiştirmeniz gerekir.

chmod 755 dosyaadı
chmod +x dosyaadı

Buradaki erişim hakları, sırasıyla dosyanın sahibi, grubu ve diğer kullanıcılar için ayrı ayrı belirtilir. Haklar okuma (r; 4) , yazma (w; 2) ve çalıştırma (x; 1) şeklindedir. 755 (rwx r-x r-x) sahibine okuma, yazma ve çalıştırma; grubuna ve diğerlerine okuma ve çalıştırma hakları verilmiş demektir. Ayrıntılı bilgi için bir UNIX kullanım kılavuzuna bakınız.

Önemli Hatırlatma: Perl kodu, UNIX komutları ve dosya/dizin isimleri küçük büyük harf duyarlıdır ve genelikle küçük harfler kullanılır. Bunu aklınızdan çıkarmamanız gerekir... Tamam mı?

Bir Perl Betiğinin Yapısı

Perl öğrenmeye çalıştığınıza göre muhtemelen HTML�ye aşinalığınız vardır ve bir HTML dökümanının genel yapısını biliyorsunuzdur... Nasıl ki bir HTML dökümanı <head> ve <body> gibi tag�lar içerirse, yada bir hiperbağ veya resmi göstermek için belirli sentaks kuralları varsa Perl için de aynı şeyler söz konusudur. Perl�in sentaks yapısı oldukça basittir ve anlaşılırdır. Eğer bu sentaks kurallarını bir kereliğine öğrenirseniz Perl ile CGI programı yazmak, HTML yazmak kadar basittir. Bekleyin, görün...

Malumdur ki UNIX�in çok güçlü betik yapısı (shell script) vardır. Bu, varsayılan olarak bash script�tir. Perl ile yazılan betiklerde her betik dosyasının ilk satırında aşağıdaki gibi bir deyimin olması gerekir. Bu satır, sunucuya bu betik dosyasının Perl betiği olduğunu söyler.

#!/usr/bin/perl

Bu satırın yapısı özeldir ve sentaksının hep bu şekilde olması gerekir. Ancak, her sistemde Perl derleyicisinin kurulduğu yer /usr/bin/ dizini olmayabilir.

which perl (yada whereis perl )

komutlarıyla Perl derleyicinin bulunduğu yeri (yolunu) öğrenmek mümkündür.

Yukarıdaki ilk satırdan sonra, Perl kodunu yazmaya başlayabilirsiniz. Perl, yukarıda da belirtildiği gibi, küçük büyük harf duyarlı bir dildir. Yani, �x� ile �X� aynı değildir. Ayrıca, Perl deyimleri noktalı virgül ( ile sonlanır. Döngüler ve şartlı dallanma yapılarında ( kullanılmaz. Bunlar, ileride tekrar ele alınacaktır. Şimdi, ilk basit (ve klasik) Perl programımızı yazalım ve diske �first.pl� adında bir dosya olarak kaydedelim.

#!/usr/bin/perl
print �Merhaba dünya!\n�;

Şimdi, UNIX komut satırından aşağıdaki komutu verelim:

chmod +x first.pl

Bu değişiklikle yazdığımız programa çalıştırılabilme özelliği kazandırdık. Bunu her yeni betik oluşturduğunuzda yapmak gerekir. Ancak, önceki bir dosyada değişiklik yapınca buna gerek yok. Şimdi aşağıdaki komutu girerek ilk CGI programımızı çalıştıralım.

./first.pl

Eğer her şey yolunda gitmişse ekranda �Merhaba dünya!� mesajı belirecektir.

Bir CGI Betiğinin Yapısı

Bir CGI programı da aslında bir Perl betiğidir. Fakat, bir önemli farkı vardır ki CGI genellikle bir web sayfası üretir (hazırlar). (Örneğin; bir form işleme CGI programı, mesela ziyaretçi defteri, genellikle geriye �İlginiz için teşekkür ederiz� türünden bir HTML sayfası gönderir.) Eğer siz de HTML üreten bir CGI programı yazacaksanız programınızın herhangi bir yerine (ilk print deyimini kullanmadan önce) aşağıdaki satırı mutlaka yazmalısınız.

print �Content-type:text/html\n\n�;

Buna MIME header (başlık) denilmektedir. Ki bu satır, alıcı durumunda olan web tarayıcısına gelen verinin ne tür bir veri olduğunu bildiren bir satırdır. Bu örnekte web tarayıcıya, üretilen ve gönderilen bilginin bir HTML dökümanı olduğu belirtilmek istenmiştir. Eğer bu satırı yazmayı unursanız yada bu satırdan önce ekrana bir şeyler yazdırırsanız �Internal Server Error� şeklinde bir hata mesajı ile karşılaşırsınız. Böyle bir durumla karşılaşmamak için ilk başa yani #!/usr/bin/perl satırından sonra bu satırı da yazmak gerekir.

Bu arada belirtmek gerekirse CGI programlarının uzantıları .cgi ile biter. Ancak, Perl betiklerinin uzantılarının .pl olması şart değildir. Şimdi, first.pl betiğini alalım ve bir web sayfası üreten CGI betiğine dönüştürelim. Bunu da diskte public_html dizini altına first.cgi dosyası olarak kaydedelim.

#!/usr/bin/perl

print "Content-type:text/html\n\n";

print "<html><head><title>Test Sayfası</title></head>\n";
print "<body bgcolor=\"red\" text=\"yellow\">\n";
print "<center><h2>Merhaba, televole!</h2>\n";
print "</body></html>\n";

Şimdi, bu programı da bir önceki örnekte olduğu gibi çalıştıralım. Ne gördük?

Gördüğümüz o ki; ekrana bir HTML sayfasının kaynak kodları yazıldı. Bu aslında oldukça önemli. Çünkü, üretilen web sayfasını inceleyerek hata olup olmadığını görebiliyoruz. Eğer zaten hata varsa ilgili CGI programı çağrılınca (500 Server Error) hatası üretilir.

Soru: Bu betiği bir CGI programı olarak nasıl çalıştıracağız?
Cevap: Çok basit ve aşağıdaki gibi...

http://alaeddin.cc.selcuk.edu.tr/~ad...-bin/first.cgi

Şimdi bunu hemen deneyelim ve sonucu görelim. Karşımıza �Merhaba dünya!� yazan bir web sayfası gelmiş olmalı.

PROBLEM?? NO PANİK...

1. Eğer ekranda �Merhaba dünya!� yazan bir web sayfası yerine bizim yazdığımız Perl kodları görünüyorsa, iki hata söz konusudur; ya first.pl dosyasının adını first.cgi olarak değiştirmeyi unuttuk yada bizim web sunucumuzun CGI konfigürasyonu yapılmamış. İlk iş Webmaster�a başvurarak CGI programlarının nasıl çalıştırılacağını öğrenin. Eğer Webmaster sizseniz, başınız belada demektir. Web sunucunun dokümalarını elden geçirmeniz gerekir. Aksi bir durum yoksa, /var/lib/httpd/conf dizini altında yer alan srm.conf dosyasını açın, AddType ile başlayan satırlardan .cgi içereninin başındaki açıklama #-diyez işaretini kaldırın. Web sunucusunu yeniden başlatın. Geçmiş olsun.

2. Eğer �Internal Server Error� şeklinde hata mesajları alıyorsanız, sintaks hataları var demektir. Bu durumda yapmanız gereken şey, betiği komut satırında ./first.cgi yazarak çalıştırmak ve hata olup olmadığını görmektir.

3. Eğer �Forbidden ...� şeklinde hata mesajları alıyorsanız erişim haklarını değiştirin.

Perl�de ekrana bir şeyler yazdırmak için print deyimi kullanılır. Yazdırılacaklar �...� çift tırnak yada �...� tek tırnak arasına alınırlar. Değişkenler, $degisken şeklinde yazdırılacak mesajın içinde yer alırlar. Bazı özel karakterleri yazdırmak için \-tersbölü işareti kullanılır. Örneğin, #, �, �, \, @, %, $ ve & işaretlerinin Perl'de özel anlamları vardır ve doğrudan yazdırılamazlar, yazdırmak için önlerine \-tersbölü gelir. Bu durum bazen kafa karıştırır. (İyi de, olmayan şey nasıl karışacak?...)

Yukarıdaki CGI programını yazmanın bir diğer (ve daha kolay) yolu da, tek bir print deyimi kullanmaktır:

#!/usr/bin/perl
print "Content-type:text/html\n\n";

print <<EndOfHTML;
<html><head><title>Test Sayfası</title></head>
<body bgcolor="red" text="yellow">
<center><h2>Merhaba, televole!</h2>
</body></html>
EndOfHTML;

Dikkat etmek gerekirse << ile EndOfHTML arasında boşluk yoktur. Deyimin yapısı şöyledir:

print <<EndOfHTML;

Yukarıdan da görüldüğü üzere; gereksiz yere kullanılan print deyimlerinden kurtulduk.Yine, bu şekilde bir kullanım ile HTML kodlamasının kendine özgü olan bazı sentaklarında, �...� çift tırnak kullanılan yerlerde, hata yapma olasılığı ortadan kalkmaktadır: Örneğin;

print �<a href=\�http://www.selcuk.edu.tr\�>Selçuk Üniversitesi</a>�;

satırında URL�yi çift tırnak içine almak gerektiği için �URL� yerine \�URL\� gibi kafa karıştırıcı bir sintaks kullanmak gerekmektedir. Halbuki, ikinci yöntemde bu tür bir kargaşa söz konusu değildir.
Alıntı ile Cevapla
  #3 (permalink)  
Alt 10-10-2007, 21:10:26
aerte aerte isimli üyemiz çevrimdışıdır. (Offline)
Webmaster
 
Üyelik tarihi: 31/7/2007
Mesajlar: 57
iTrader: (0)
Tecrübe Puanı: 30
aerte üyemiz henüz acemi
Standart Cevap: Perl ile CGI Programlama

perl le uğraşan ilgilenen biri görmek güzel
Alıntı ile Cevapla
Cevapla



Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-KodlarıKapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Programlama üzerine bir soru ve öneri sta34 Programlama Dilleri 2 29-09-2008 03:10:00
FreeBSD cPanel (compat ve perl) paket gereksinimi Caner WHM / Cpanel 0 16-09-2007 09:53:56
Cgi-bin ver perl Scriptler 0xyGen Linux 2 18-04-2007 13:09:20
Programlama sitesine reklam [PR4] doronty37 Reklam Alım Satım 0 12-03-2007 17:17:34
Pc Programlama mezunları fuzuli Eğitim Genel 0 16-01-2007 04:06:58


oyun , kontör , türkçe dizin

Bütün Zaman Ayarları WEZ olarak düzenlenmiştir. Şu Anki Saat: 09:02:26 .




Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0
Zone Org | 2006-2008

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171