ana sayfa : araştırma : uzaktan web tasarımı : cgi [ 2 / 5 ] |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GERİ | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
İnteraktif
Web Sayfaları
CGI programcıkları Web sayfalarını
interaktif yapabilmek için de mekanizma sağlar. HTML içindeki
<FORM> tag(im)’ını kullanarak sayfayı görüntüleyen kullanıcıdan
direk bilgi almak mümkündür. İşte bu bilgiler direk bir CGI programcığına
yollanarak işlenebilmektedir. Örneğin ana sayfa içine site içindeki diğer
sayfa adreslerini içeren bir açılır liste konur. Kullanıcı buradan
sayfa ismini seçer bu bilgi CGI programcığına aktarılır. CGI programcığı
da bunu gözatıcıya yollar. Bülten panoları da CGI programcıklarıyla
web sayfalarını interaktif yapmaya diğer bir örnektir. Programcıklar
yazarak uzaklardan önceden yollanmış mesajların gösterilmesini ve yeni
mesajlar yollanabilmesini sağlamak mümkündür. İşte CGI bütün bunları ve daha fazlasını
sunar. Tek engel sizin programcılık yeteneklerinizin kısıtlılığıdır.
Eğer göstermek istediğiniz veriyi HTML formatına dönüştürmek
isterseniz CGI programcıkları kullanın. Cgı’nın
Bileşenleri
Birinci bölüm CGI’nın ne olduğunu ve
World Wide Web yayınlarında nasıl kullanılacağını açıkladı. Bu bölüm
ise Web sunucusu ile CGI programcıkları arasındaki veri alış-verişini
anlatıyor. Bu bölümde ihtiyaç duyulan veriyi bulmayı ve programcık
sonuçlarını geri Web sunucuya döndürmeyi bulacaksınız. Hatta CGI
programcıklarının sonucu olan veriyi sunucuyu pas geçerek direk Web gözatıcıya
yollamayı öğreneceksiniz. Hatırlanacağı gibi CGI, Web gözatıcısı/sunucusu
ile CGI programcıkları arasında veriyi almayı-vermeyi basitleştiren bir
yapıya sahipti. Bu bölüm CGI programcıkları yazabilmenin tüm araçlarını
sunmaktadır. Şimdi Web sunucunun CGI programcıklarına veriyi nasıl
aktardığı sonra da sonuçları Web gözatıcıya nasıl yolladığı ile
başlayalım. Programcıklara
Verinin Aktarılması
Web sunucudan gerekli olan verinin programcıklar
tarafından alınması içn çok fazla bir şey yapmaya gerek yoktur. Zaten
Web sunucu CGI programcığını her çalıştırışında bunu CGI tanımlar.
İlişkin verinin tamamı Web gözatıcı tarafından sunucuya yollanır. Örneğin
form girişi, ek olarak HTTP istek başlıkları (header) sunucu tarafından
CGI programcığına ya çevresel değişkenler içinde ya da standart giriş
(stdin) aracılığıyla yollanır. Standart giriş, programcığın girişleri
aldığı varsayılan yerdir. Bu iş sizin için yapılmaktadır, sizin tüm
yapmanız gereken gerekli bilgiyi nerede arayacağınızı bilmektir. Çevresel
(Ortam) Değişkenler
Bir Web gözatıcısı bir Web sunucusundan
CGI programcığı isteğinde bulunduğu zaman sunucu bağımsız çevresel
adı verilen birşeyin içinde programcığı başlatır. Bu CGI programcığı
kendi halinde veya çevreselinde çalışıyor anlamına gelir. Bu web
sunucunun altında çalışan ortam değişkenlerinden miras kalan değerler
değildir. Bu önemlidir çünkü bir çok web gözatıcısı aynı anda aynı
CGI programcığını isteyebilir ve web sunucu aynı programcığın bir çok
kopyasını başlatabilir. Aynı
zamanda çalışan programcığın her versiyonu diğer tüm programcıklardan
bağımsız olarak çalışmalıdır, aksi halde karışıklıklar meydana
gelebilir. Çünkü web sunucu sizin CGI programcığınız için yeni bir
çevresel ayarlar, çevresel değişkenlerdeki hemen tüm bilgileri sizin
CGI programcığınıza yerleştirir. Aşağıdaki tablo ortam değişkenlerini
göstermektedir. Tablo
1-CGI
Ortam Değişkenleri
CGI ortam değişkenlerine ek olarak Web
sunucu web gözatıcısından alınan tüm HTTP istek başlıklarını
kullanılabilir yapar. Aşağıdaki tablo HTTP istek başlık ortam değişkenlerini
göstermektedir. Tablo
2-HTTP
İstek Başlığı Ortam Değişkenleri
Aşağıda birçok ortam değişkeninin kullanıldığı
bir CGI programcığı görülmektedir. Liste 1 bunu göstermektedir. Liste
2-Ortam
Değişkenlerini Gösteren Bir Programcık #!/usr/local/bin/perl
print "Content-type: text/html\n\n";
print "AUTH_TYPE = $ENV{'AUTH_TYPE'}<BR>\n";
print "CONTENT_LENGTH = $ENV{'CONTENT_LENGTH'}<BR>\n";
print "CONTENT_TYPE = $ENV{'CONTENT_TYPE'}<BR>\n";
print "GATEWAY_INTERFACE =
$ENV{'GATEWAY_INTERFACE'}<BR>\n";
print "PATH_INFO = $ENV{'PATH_INFO'}<BR>\n";
print "PATH_TRANSLATED = $ENV{'PATH_TRANSLATED'}<BR>\n";
print "QUERY_STRING = $ENV{'QUERY_STRING'}<BR>\n";
print "REMOTE_ADDR = $ENV{'REMOTE_ADDR'}<BR>\n";
print "REMOTE_HOST = $ENV{'REMOTE_HOST'}<BR>\n";
print "REMOTE_IDENT = $ENV{'REMOTE_IDENT'}<BR>\n";
print "REMOTE_USER = $ENV{'REMOTE_USER'}<BR>\n";
print "REQUEST_METHOD = $ENV{'REQUEST_METHOD'}<BR>\n";
print "SCRIPT_NAME = $ENV{'SCRIPT_NAME'}<BR>\n";
print "SERVER_NAME = $ENV{'SERVER_NAME'}<BR>\n";
print "SERVER_PORT = $ENV{'SERVER_PORT'}<BR>\n";
print "SERVER_PROTOCOL = $ENV{'SERVER_PROTOCOL'}<BR>\n";
print "SERVER_SOFTWARE = $ENV{'SERVER_SOFTWARE'}<BR>\n";
print "HTTP_ACCEPT = $ENV{'HTTP_ACCEPT'}<BR>\n";
print "HTTP_ACCEPT_ENCODING =
$ENV{'HTTP_ACCEPT_ENCODING'}<BR>\n";
print "HTTP_ACCEPT_LANGUAGE =
$ENV{'HTTP_ACCEPT_LANGUAGE'}<BR>\n";
print "HTTP_AUTHORIZATION =
$ENV{'HTTP_AUTHORIZATION'}<BR>\n";
print "HTTP_CHARGE_TO = $ENV{'HTTP_CHARGE_TO'}<BR>\n";
print "HTTP_FROM = $ENV{'HTTP_FROM'}<BR>\n";
print "HTTP_IF_MODIFIED_SINCE =
$ENV{'HTTP_IF_MODIFIED_SINCE'}<BR>\n";
print "HTTP_PRAGMA = $ENV{'HTTP_PRAGMA'}<BR>\n";
print "HTTP_REFERER = $ENV{'HTTP_REFERER'}<BR>\n";
print "HTTP_USER_AGENT = $ENV{'HTTP_USER_AGENT'}<BR>\n";
Eğer bu programı hemen çalıştırmak isterseniz listenin en başındaki #!/usr/local/bin/perl ifadesi Windows platformunda kullanılmamalıdır.
|