ana sayfa : araştırma : uzaktan web tasarımı : bir cgi programcığının çağrılması [ 3 / 5 ] 

GERİ

BİR CGI PROGRAMCIĞININ ÇAĞRILMASI

 CGI programcıkları genellikle okuyucuların yolladığı formların işlenmesinde kullanılır. Giriş genellikle sunucu tarafından aktarılan ortam değişkenleri (bkz Tablo 1-CGI Ortam Değişkenleri ) biçimindedir. Ortam değişkenleri sunucunun kullandığı CGI programcıklarının sürüm bilgisi, veri tipi, veri boyutu, gibi aktarılmakta olan bilgi hakında bazı değişkelnleri tanımlar. CGI programcığı girişleri bir komut satırı ifadesinden ve standart bir girişten de alabilir. Bir CGI programcığını çalıştırmak için sunucu üzerinde kaynak olarak alabileceğiniz bir programcık mevcut olmalıdır. Sunucunuz, önceden bahsedildiği gibi bir CGI programcığını çalıştıracak ve onu kullanmayı planladığınız amaca uygun olarak konfigüre etmenizi sağlayacak yetenekte olmalıdır.

Okuyucu, programcığa bir referans içeren bağlantıyı etkinleştirerek CGI programcığına bilgi aktarabilir. CGI programcığı girişi işler ve sonucu web sunucusunun kullanabileceği şekilde biçimlendirir. Web sunucusu sonucu alır ve okuyucunun gözatıcısına (inceleyici) geri yollar. Gözatıcı sonucu ekranda gösterir.

Bir CGI programcığı çıkışı bir yönlendirme taşıyan bir başlikla başlar. Şu anda geçerli olan üç sunucu yönlendirmesi: Content_Types (içerik-tipi), Location (Konum) ve Status (Durum)’dur. Başlık HTML başlığı gibi boş bir satırla izlenecek şekilde bir yönlendirme taşıyabilir. Boş satırlar başlığı, okuyucuya aktardığınız veriden ayrıdır. Location ve status yönlendirmesi içeren çıkışlar genellikle tek satırdır. Bu nedenle sunucunun ihtiyacı olan Location ve Status bilgilerinin hepsi bu satırdadır ve veri içeren satırlar bulunmadığından boş satıra da ihtiyacak yoktur. Sunucu çıkışı yorumlar, ortam değişkenlerini belirler ve çıkışı istemciye iletir.

Bu nedenle istemci ve sunucu arasında gerçekleşen olaylar birçok aşama içerir. Bu aşamlar şu şekilde özetlenebilir.

1.                       İstemci, girişi sunucuya geçirir.

2.                       sunucu, girişe uygun olacak şekilde ortam değişkenlerini ayarlar.

3.                       sunucu, girişi CGI programcığının adı ile bir değişken gibi geçirir.

4.                       sunucu, eğer varsa, komut satırı girişini ya da standart giriş katarını CGI programcığına geçirir.

5.                       programcık girişi işler.

6.                       programcık, çıkışı sunucuya döndürür. Bu çıkış daima belirli bir başlığı taşır ve eğer ek veri varsa bir de gövdesi olur.

7.                       sunucu, ortam değişkenlerini çıkışa uygun olarak ayarlar.

8.                       sunucu, çıkışı istemciye geçirir.

Bir CGI programcığını HTML sayfasından çağırmak için, <FORM>, <A> ya da <IMG> imleri kullanılabilir.

 

<Form> İmi İçinde Cgı Programcığını Çağırma  

Eğer bir form girişini işleyen bir CGI programcığı yazıyorsanız <FORM> iminin ACTION özelliğinde CGI programcığının ismini belirtmelisiniz. Bu şöyle gösterilebilir:  

<FORM METHOD=POST ACTION="/cgi-bin/formhandle.pl">

 

Tahmin edeceğiniz gibi, ACTION özelliğinin değeri form yollandığında hangi olayın yürütüleceğini belirler. ACTION olarak form için herhangi bir geçerli bir URL tanımlamalısınız. Form yollandığında gözatıcı sunucuya bu tür nesneler için bir istek yollar. Eğer nesne bir CGI programcığı ise programcık çalıştırılır ve form içindeki tüm alanlara girilen veriler QUERY_STRING ortam değişkeniyle ya da standart girişle gönderilir. HTML veya GIF dosyalar gibi diğer URL’ler için doküman geri gözatıcıya döndürülür. Aşağıdaki örnek .cgi uzantılı bir dosya için yazılmış HTML kodudur. 

<FORM METHOD=POST ACTION="formhandle.cgi">


 

<A> İmi İçinden Cgı Programcığının Çağırılması  

<A> iminin HREF özelliğine bir CGI programcığını atayarak ta aşağıdaki örnekte olduğu gibi çağırabilirsiniz: 

<A HREF="/cgi-bin/clicked.pl">Click Here</A>

 ya da

 <A HREF="clicked.cgi">Click Here</A>  

Linke tıklandığında örnekteki HTML kodu yine örneklerdeki .cgi veya .pl uzantılı dosyayı çağırır.

Tablo 1-CGI Ortam Değişkenleri tablosundan hatırlanacağı gibi istek yöntemi GET olduğunda QUERY_STRING’in değeri kullanıcının girdiği bilgi olmaktaydı. GET yöntemi yoluyla kullanıcının bu bilgiyi girmesinin bir yolu istenene CGI programcığının hemen ardına bir soru işareti eklemektir. <A> iminin HREF özelliğiyle CGI programcığı çağırmaya bir örnek şöyle olabailir: 

<A HREF="/cgi-bin/clicked.pl?file=clicked.html">Click Here</A>

 

Bir programcı olarak, programınıza parametreleri komut satırındaki isim/değer çifti stringini URL kodlaması olarak geçirmek için kullanabilirsiniz. Yukarıdaki örnekte HTML dosyasının adı clicked.pl programcığına QUERY_STRING ortam değişkeni yoluyla geçiriliyor. Ne yazık ki, birçok durumda bu uygulama çok yararlı değildir.


<Img> İmi İçinden Cgı Programcığının Çağrılması  

Siz CGI programcıklarınızı <IMG> HTML imiyle de çağırabilirsiniz. Eğer SCR özelliğinde CGI programcığınızın yolunu verirseniz web sunucu programcığı çalıştıracak image için kaynak olarak çıkışı döndürecektir. Bu durumda CGI programcığınız sonucu grafik formatında döndürmelidir. Ya da direk olarak ASCII tanımını veya dolaylı olarak grafik dosyanın yolunu web sunucuya döndürmelidir. Aşağıda bir CGI programcığının çağrılmasının HTML kodunu görüyorsunuz. 

<IMG SRC="/cgi-bin/cgi-image.pl"> 

şimdi de cgi-image.pl dosyasının web sunucuya dolaylı olarak döndüreceği grafik dosyasını gösteren kodları verelim: 

#!/usr/local/bin/perl

 

print "Location: /graphics/image1.gif\n\n"; 

Muhtemelen biliyor olmalısınız, bu sözkonusu özelliği kullanmanın pratik bir yolu değildir.

 

Server Sıde Includes İçinde Cgı Programcığının Çağrılması 

Web sunucuların çoğu Server Side Includes olarak bilinen bir özelliği desteklerler. Server Side Includes bir HTML dokümanının içinde yer web sunucuya ait HTML kodlarıdır. Web sunucu bir HTML dokümanını parsellediğinde tüm Server Side Includes komutlarını çalıştırır ve komut yerine sonuçları yerleştirir. Server Side Includes, size bir HTML imi ekiyle başka bir nesneyi sayfanıza kolayca dahil etmenize izin verir. Bu dahil edilen nesneler başka bir HTML dokümanı, bir resim dosyası ya da bir CGI programcığı gibi bir çok farklı şey olabilir. Form içinde tüm Server Side Include’ları aşağıdaki gibi olur. 

<!--#command tag1="value1" tag2="value2" --> 

Bir CGI programcığını bir Server Side Include ile birlikte çalıştırmak için exec komutunu kullanmalısınız. Exec komutu iki adet geçerli ime sahiptir, cmd ve cgi. Cmd imi /bin/sh (UNIX Bourne shell) ile ilişkili değeri çalıştırır. Cgi imi ise bir CGI programcığını çağırmak için kullanılır. Bu programcığın sanal yolu ilişkili bir değer olmalıdır. Bir örneler şöyle açıklanabilir: 

<!--#exec cgi="/cgi-bin/include-me.pl" -->