FTP (file transfer protocol), bir makinadan diğerine yapılan dosya transferinde en çok kullanılan yollardan biridir. İnternet desteği olan işletim sistemlerinin hepsinde (MS-DOS, Windows, OS/2 ... ) ftp, standart program olarak kullanıcıların hizmetine sunulmuş durumdadır. Linux altında da ftp desteği vardır. Ekte İnternet üzerinde yeralan Linux dökümanlarının listesine baktığınız zaman çoğunun ftp adreslerinden temin edilebildiğini göreceksiniz.
FTP, dosyaları alabilmenizle birlikte istediğiniz adrese yollamanıza da izin verir. Eğer İnternet'e bağlıysanız ve Linux kullanıyorsanız ftp
vazgeçemeyeceğiniz bir program olacakır.
FTP, İnternet'e bağlı olan makinalarda anlam kazanır ve gücünü hissettirir. Saniyeler içinde onlarca dosya, yüzlerce kilobayt bilgi transfer edilebilir. FTP'ye başlamak için kullanabileceğiniz iki komut var. Birisi, standart ftp paketinden çıkarn 'ftp' komutu, diğeri de 'ncftp' komutu. İkisinin de avantajları olmasına rağmen 'ncfp' nin kullanıcıya yönelik kullanım kolaylığı vardır. Siz de 'ncftp' kullanın.
Bir FTP adresine bağlanmak için o adresin IP numarasını veya ismini bilmeniz yeterli. Çok geniş bir Linux arşivi olan linux.org.tr adresine bağlanmak için:
# ftp linux.org.tr
yazın. Ekranda aşağıdaki gibi bir görüntü gelecektir. Ncftp, ftp yapmak için gerekli olan kullanıcı kodunu ve şifreyi kendisi gönderir ve otomatik olarak karşıdaki adrese bağlanır. Eğer ftp kullanıyor olsaydınız, kullanıcı kodu için anonymous veya ftp, şifre için de e-posta adresini girmeniz gerekecekti.
linux:~$ ftp linux.org.tr Connected to linux.org.tr. 220 metu FTP server (Version wu-2.4(1) Tue Aug 8 15:50:43 CDT 1996) ready. Name (linux.org.tr:root): ftp 331 Guest login ok, send your complete e-mail address as password. Password: 230-Welcome, archive user! This is an experimental FTP server. If have any 230-unusual problems, please report them via e-mail to root@metu 230-If you do have problems, please try using a dash (-) as the first character 230-of your password -- this will turn off the continuation messages that may 230-be confusing your ftp client. 230- 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp>
Karşıdaki makinaya bağlandık ve önümüze bir komut satırı çıktı. Bu komut satırında kullanılabilecek ftp komutlarının listesini görmek için
ftp> help
yazın. Bir komut hakkında daha ayrıntılı bilgi elde etmek için ise
'help' komutunun hemen ardından ftp komutunu getirebilirsiniz. Şimdi
patika ismini bildiğimiz bir dosyayı kendi hesabımıza çekelim. Öncelikle
nerede olduğumuzu görelim. Bunun için Linux komutunun benzeri olan ls
veya dir
komutunu kullanın.
ftp> dir 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 9 drwxrwxr-x 8 root wheel 1024 Jan 7 1980 . drwxrwxr-x 8 root wheel 1024 Jan 7 1980 .. drwxrwxr-x 2 root wheel 1024 Jan 7 1980 bin drwxrwxr-x 2 root wheel 1024 Jan 7 1980 etc drwxrwxr-x 2 root wheel 1024 Dec 3 1993 incoming drwxrwxr-x 2 root wheel 1024 Nov 17 1993 lib drwxrwxr-x 12 root wheel 1024 Feb 14 08:08 pub drwxrwxr-x 3 root wheel 1024 Jan 7 1980 usr -rw-r--r-- 1 root root 312 Aug 1 1994 welcome.msg 226 Transfer complete.
Bir ftp adresine bağlandıktan sonra genelde her adreste yeralan pub , incoming, bin gibi dizinler göreceksiniz. Bunlardan şu an için işimize yarayanı pub dizini olacaktır. Bir dizine girmek için yine bir UNIX komutu olan 'cd' ve ardından 'pub' yazın.
ftp> cd pub
Şimdi `pub' dizini altındayız. Genellikle her türlü program, uygulama yazılımı, ağ uygulamaları ve çeşitli dosyalar bu dizin altında bulunur. Burada hangi dosya ve dizinler olduğunu görelim.
ftp> dir 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 12 drwxrwxr-x 12 root wheel 1024 Feb 14 08:08 . drwxrwxr-x 8 root wheel 1024 Jan 7 1980 .. drwxr-xr-x 2 root root 1024 Feb 14 08:07 X drwxr-xr-x 2 root root 1024 Feb 14 08:07 applications drwxr-xr-x 2 root root 1024 Feb 14 08:07 development drwxr-xr-x 2 root root 1024 Feb 14 08:08 distributions drwxr-xr-x 2 root root 1024 Feb 14 08:07 docs drwxr-xr-x 2 root root 1024 Feb 14 08:07 games drwxr-xr-x 2 root root 1024 Feb 14 08:07 graphics drwxr-xr-x 2 root root 1024 Feb 14 08:09 kernel drwxr-xr-x 2 root root 1024 Feb 14 08:07 network drwxr-xr-x 2 root root 1024 Feb 14 08:07 sunsite 226 Transfer complete. ftp>
Örneğin 'kernel' dizini altında yeralan bir çekirdek dosyasını kendi makinamıza alalım.
ftp> cd kernel 250 CWD command successful.
Ftp protokolünde, dosyaların bir makinadan diğerine taşınması esnasında dosyanın çalıştırılabilir (arşivler, sıkıştırılmış dosyalar ve diğerleri) veya metin dosyası olması hayati önem taşır. İnternet üzerinde, zamandan tasarruf amacıyla tüm dosyalar ASCII formatta taşınırlar. Çalıştırılabilir dosyalar 8 bitlik karakterlerden oluştuğu için bunları indirebilmek için taşıma işleminin 8 bit halinde yapılması gerekir. 'ftp' komutunu kullanıyorsanız çalıştırılabilir dosyaları çekmeden önce
ftp> binary
yazın. Dosyanın türünü bilmediğiniz durumlarda yine 'binary' komutunu kullanın. Siz en iyisi, ftp yaparken karşıdaki makinaya girdikten hemen sonra 'binary' yazın. ncftp
kullanırken program bunu sizin için otomatik olarak yapacaktır.
Dosyayı indirmeden önce, kontrol edilmesi gereken bir şey de dosyanın indirileceği yerel dizinini belirtmektir. Burada linux-1.3.56.tar.gz
programını 'kernel' dizininin altına çekelim. Bunun için lcd
komutunu kullanalım.
ftp> lcd /root/kernel Local directory now /root/kernel
Artık istediğimiz dosyayı indirebiliriz. Dosyaları almak için get
komutu kullanılır.
ftp> dir 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. total 5838 drwxr-xr-x 2 root root 1024 Feb 14 08:09 . drwxrwxr-x 12 root wheel 1024 Feb 14 08:08 .. -rw-r--r-- 1 root root 5951488 Feb 14 08:10 linux-1.3.56.tar.gz 226 Transfer complete. ftp> get linux-1.3.56.tar.gz 200 PORT command successful. 150 Opening BINARY mode data connection for linux-1.3.56.tar.gz (5951488 bytes). 226 Transfer complete. 5951488 bytes received in 26 secs (2.2e+02 Kbytes/sec)
26 saniye içinde yaklaşık 6 MB büyüklüğündeki dosyayı çektik. Sizin İnternet'e bağlantı hızınıza bağlı olarak dosyayı yerel diske yazma süresinde değişiklikler olabilir. Yukarıdaki işlemleri istediğiniz kadar tekrar edip gereken dosyaları çektikten sonra ftp'den çıkmak için
ftp> quit 221 Goodbye.
komutunu kullanın. Sunucu makinayla bağlantınız kesilecek ve kabuk komut satırına geri döneceksiniz.
İnternet'in kimliğini bulmasını sağlayan etmenlerden başlıcası WWW'dir. WWW sayesinde çeşitli yapıda dosyalar, grafik arabirimi kullanılsın veya kullanılmasın kolaylıkla iletilebilir. Linux'u bir web sunucu haline getirmek için tek yapılması gereken, bu dosyaları belirli bir dizin altına yerleştirip WWW sunucusunu başlatmak.
İnternet'te yeralan bilginin hesabı yoktur. Bu bilgi deposunu verimli şekilde kolayca kullanabilir, hatta günlük yaşamınızla birleştirebilirsiniz. Öğrenciler, ev ödevlerini ansiklopediler karıştırmak yerine İnternet'ten bulup çıkarabilirler. Öğretmenler, sınav sorularını İnternet'ten bulabilirler. Üniversitelerdeki bazı fakültele hocaları ödevleri İnternet'te sunuyor ve cevapları da e-posta olarak istiyorlar.
Web üzerinde tarama yapmak amacıyla kurulan ve her hafta milyonlarca ziyaretçisi bulunan bazı adresler vardır. Bu sayfalara bağlanmak suretiyle bir anahtar kelime yardımıyla bu anahtar kelimenin geçtiği WWW adresleri taranabilir. Aşağıda sıkça kullanılan arama-tarama adresleri yeralıyor.
Özellikle birinci sıradaki altavista WWW sunucusu, 40 milyonun üzerinde adres girdisiyle inanılmaz genişlikte bir bilgi bankası olarak göze çarpıyor.
WWW sayfalarına erişebilmek için kullanılan programlar arasında metin temelli olan ve ekranda resim göstermeye imkan vermeyen lynx ve X Window altında çalışan ve onlarca çeşit döküman yapısını tanıyabilen Netscape sayılabilir.
Web sayfalarına bağlanırken kullanılan protokole HTTP (HyperText Transfer Protocol) adı verilir.
Linux'un web sunucusu olarak görev yapabilmesi için httpd daemon'un çalışması gereklidir. Bu yazılım genellikle sistemin açılışı sırasında çalıştırılarak arkaplana atılır.
Diğer kullanıcıların sorumlu olduğunuz Linux üzerindeki dosyalara WWW üzerinden erişmelerini sağlamak için sadece birkaç dakikaya ihtiyaç var. Ftp adreslerinde, özellikle Sunsite arşivinden birkaç değişik sunucu programı alınabilir. Halen Linux için benim bildiğim ve sıkça kullanılan APACHE, NCSA veya CERN http (web) sunuculardan birini çekerek kurmanız gerekecektir. Bununla birlikte, olumsuz yanıt vermemişseniz httpd yazılımı Linux'un kurulumu aşamasında sisteme yerleştirilmiştir.
httpd paketi kurulduktan sonra birkaç alt dizin oluşur. Bunlardan önemlileri,
Sunucunun çalıştırılabilmesi için conf dizini altında yeralan 4 dosyanın
içinde bazı değişiklikler yapmak gerekiyor. Bunlardan başlıcaları,
httpd.conf
dosyasındaki ServerRoot (httpd yazılımının açıldığı yer) ve
ServerName (makina ismi), srm.conf
dosyasındaki DocumentRoot (ana sayfanın
dosyalarının tutulduğu dizin), ScriptAlias (CGI programlarının bulunduğu
dizin) ve Directory (CGI programlarıın bulunduğu dizine ait parametreler)
değişkenleridir. Dosyada hiç değişiklik yapmadan da sunucunun istediği
dizinler üzerinde gerekli sembolik bağlantıları, istediğiniz dizini
işaret edecek şekilde yerleştirmek mümkündür.
httpd programının başlatılması gayet kolaydır. /etc/rc.d/rc.inet2
programının içinde httpd ile ilgili satırın başında varsa '#'
karakterlerini kaldırın. Böyle bir satır yoksa aşağıdaki komutu
ekleyebilirsiniz.
httpd -f <konfigurasyon-dosyasi>
konfigürasyon dosyası yerine httpd.conf
dosyasının bulunduğu yer
girilir. (örneğin /home/httpd/conf/httpd.conf
)
Web dosyalarını hazırlamak, gerekli düzenlemeleri yapabilmek için ayrı bir kullanıcı tanımlanabilir.
Bir http protokolünün sunduğu dosya tipi genellikle HTML dosyasıdır. HTML dökümanları tamamı ASCII karakterlerden ve herhangi bir editörde yazılabilen metinlerden oluşur. UNIX üzerinde pico veya vi kullanarak HTML dökümanlarınızı hazırlayabilirsiniz. Bunun dışında, kullanıcının bu dili bilmediği farzedilerek Windows ve DOS altında çalışan çeşitli programlar hazırlanmıştır (FrontPage, HotDog gibi). Ayrıca, HTML kodunun doğruluğunu kontrol eden yardımcı programlara da Internet üzerinden erişilebilir.
HTML, Hypertext tabanlı bir dildir ve program içinde çoklu ortam (multimedia) programlarının konulmasına izin verir. Ses, hareketli veya hareketsiz görüntü yanısıra Java adı verilen ve kullanıcı ile etkileşime girebilen programlar da HTML dosyaları içinde yeralabilir. Grafik destekli Web programlarının tablo desteği ile çok çeşitli istatistiki bilgiler, programlar, her türlü listeler ekranda derli toplu gösterilebilir. Linux için Java desteğini ftp.blackdown.org adresindeki pub/Java/linux dizini altında bulabilirsiniz.
Daha önce bir programlama diliyle uğraşmamış olsanız bile HTML'in kolaylığı ve çok kısa zamanda bu dile hakimiyet sağlayabilmek sizi hayrete düşürecektir. Çeşitli çeviriciler yardımıyla hemen her tür dosyanın bu dile çevrilebilmesi, HTML dilini bilmeyenlerin bile dikkati bu yöne çekmeye yeter. Burada HTML komutlarına kısa bir giriş yapılacaktır, buradaki bilgilerle kendi web sayfanızı hazırlamanız mümkün olacak. Daha geniş bilgi için www.w3.org veya www.yahoo.com adreslerine göz atabilirsiniz. Bu adreslerin yansıları Linux Kullanıcıları Grubu ana web sayfasından da erişilebilir.
Basit bir HTML dosyası aşağıdaki gibi yazılabilir:
<title> Burasi konunun yazilacagi yer </title> <h1> Bu, 1 numarali baslik </h1> HTML dunyasina hosgeldiniz. <br> Birinci paragrafimiz. <p> Bu da ikinci.. <p>
HTML yazarken, metnin Web programının anlayacağı şekilde gösterilebilmesi için belirteçler kullanır. Yukarıdaki örnekte:
<title>
ve </title>
belirteçleri, dökümanın konusunu gösterir.
<h1>
ve </h1>
belirteçleri, dökümanın başlığını tanımlar. <p>
belirteci, paragraf tanımlar.
Tüm HTML belirteçleri, küçüktür işareti (< ), belirteç ismi ve büyüktür işaretinden (> ) oluşur. Genellikle her belirtecin <h1> ve </h1> örneklerindeki gibi bir çifti olur ve sondaki belirtecin ismi önüne ayraç gelir. Yukarıdaki örnekte <h1> , Web programına 1 numaralı başlık formatında yazmasını, </h1> ise bu formatı kapatmasını söyler. <p> belirteci istisna bir durumdur ve </p> olarak kapatılmaz.
Her HTML sayfasının ile ayrılan bir konusu olmak zorundadır. Konular sayfadan bağımsız olarak ekranın en üstüne basılır.
<title> Sayfamin konusu </title>
HTML, 1'den 6'ya kadar numaralanmış 6 çeşit başlık destekler. Başlıklar normal karakterlerden daha büyük ve kalın yazılırlar. Temel olarak,
<Hy> Sayfamin basligi </Hy>
olarak tanımlanmış bir belirteçte y, 1 ile 6 arası bir değer alabilir. Y sayısı arttıkça yazıtipinin büyüklüğü azalır. Pek çok uygulamada, sayfanın konusu ile başlığını aynı tutabilirsiniz.
Diğer kelime işlemcilerdekinin aksine, HTML dökümanlarında programcı özel bir belirteç kullanmadıkça bir cümle herhangi bir yerinden ayrılıp kalan kısmı altta görünebilir, birden fazla boş satır tek satır olarak algılanır. Aşağıdaki örnekte, kaynak kodunda iki satır olmasına karşın, WWW tarayıcı bunu algılamaz ve ekranda tek satır olarak görüntüler. Bir html tarayıcı satır sonlarını ve boş satırları gözardı edeceğinden, paragrafları mutlaka <p> belirteci ile ayırmalısınız.
HTML'ye hosgeldiniz <br> Bu ilk paragraf <p>
Satır sonu belirteci : Paragraf, iki satır arasında bir satır boşluk bırakırken, satır sonu belirteci kullanıldığı kursör alta geçer ve takip eden tüm metin,boşluk bırakmadan bir alttan yazılır.
Bu ilk satir. <br> Ikinci satir daha uzun. <br> Ama bu bir paragraf sonu.. <p>
Paragraflar ortalanırken <center> ve </center> belirteçlerinden yararlanılır. Ortalanması istenen tüm metin, bu iki belirtecin arasına yazılır.
<center> Linux Sayfasi </center>
HTML'nin en büyük özelliklerinden birisi, tek sayfa ile sınırlı kalmamasıdır. Böylece bir sayfadan diğerine bağlantı yapılabilir. HTML'in bu görevini yerine getirmesini sağlayan belirteç <a>'dır. Dökümanınızdan başka dökümana bağlantı yapabilmek için:
Kısa bir örnekle açıklayalım:
<a href="internet.html"> Internet nedir? </a>
Ekranda "İnternet Nedir?" yazısı belirecek ve kullanıcıdan burayı seçmeyi
bekleyecektir. Kullanıcı fare ile bu yazı üzerine tıkladığında ise program
kontrolü yine bir HTML dosya olan internet.html dosyasına bırakacaktır. Bu
durumda bulunduğunuz dizinden farklı bir dizindeki dosyaya bağlantı yapmak
isterseniz, o dosyanın ait olduğu dizini yazmak zorundasınız. Buna göre
linux/shells/bash.html
dosyasını kullanabilmek için
<a href="linux/shells/bash.html"> Bash </a>
şeklinde bir belirteç yazmak gerekir.
HTML'in bir diğer özelliği ise, tek bir makinaya bağımlı kalmadan diğer İnternet servisleriyle bağlantı kurabilmesidir. Bunun için URL (Uniform Resource Locator) kullanılır. URL, http,gopher, news ve telnet gibi alt hizmet birimleri olabilir. Kullanımı şu şekildedir :
URL-ismi://makina-ismi[:port]/dizinler/dosya-ismi
Burada URL,
erişmek için kullanılır. Örneğin sayfanızdan Linux Kullanıcıları Grubu'nun ana web sayfasına ulaşmak için :
<a href=http://www.linux.org.tr/> Linux Kullanıcıları Grubu </a>
satırını web dosyasında girmek gerekir. Port numarası, genellikle yazılmaz. Size aksi durum belirtilmedikçe, kullanmanıza gerek yoktur.
Dökümanların göze hoş görünmelerini sağlamak amacıyla listeler yaygın olarak kullanılır. HTML, pek çok liste çeşidi destekler. Bunlar, düz listeler, numaralı listeler, tanımlı listeler ve içiçe listelerdir.
Düz liste yaratmak için,
Örnek olarak,
<ul> <li> Elma <li> Armut </ul>
Örnek, ekranda şu şekilde görülür :
<li> belirteçleri içinde paragraflar, diğer dökümanlara bağlantılar, ve diğer belirteçler kullanabilirsiniz.
Numaralı listeler, düz listelerden farklı olarak, <ul> belirteci yerine <ol> kullanırlar. Ekranda liste elemanlarının başında 1'er artan numaralar görünür. Aşağıdaki HTML kodu,
<ol> <li> Linux <li> Digerleri :-) </ol>
ekrana şunları yazar:
HTML'de, programda yazıldığı gibi ekrana çıktı vermeyi sağlayan komutlar <pre> ve </pre> belirteç çiftleridir. Bunlar kullanıldığı zaman tüm metin, yazıldığı gibi ekranda görünür. Aşağıdaki satırlar,
<pre> PATH=.:~/bin/:$PATH export PATH # Set up the terminal: stty erase "^?" kill "^U" intr "^C" eof "^D" stty hupcl ixon ixoff date '+Tarih :%D' TERM=vt100 </pre>
ekranda şu şekilde görünür :
PATH=.:~/bin/:$PATH export PATH # Set up the terminal: stty erase "^?" kill "^U" intr "^C" eof "^D" stty hupcl ixon ixoff date '+Tarih :%D' TERM=vt100
Eğer Web sayfalarını gezerken grafik destekleyen bir program (Mosaic, Netscape) kullanıyorsanız, ekranda resimlerin, arkaplanların ve hatta animasyonların olduğunu farketmişsinizdir. Bu resimler genellikle X Bitmap (XBM) , GIF, veya JPG formatlı olurlar ve dosyaya görsel bir çekicilik katarlar. Buna rağmen aynı ekranda çok miktarda resim kullanmaktan sakınmalıdır, çünkü bu durumda resimler kullanıcıya daha geç bir sürede ulaşır.
Ekranda resim görüntülemek için,
<img src="resmin bulundugu dizin">
demeniz yeterlidir. Burada, nasıl HTML dökümanların hepsi .html
ile bitiyorsa, tüm resim dosyalarının sonu da .xbm
, .gif
veya .jpg
ile bitmelidir.
Şimdi küçük bir örnek hazırlayalım. ~ dizininde iken public_html
isimli bir dizin açın ve buraya girin. İstediğiniz örnek bir HTML dosyası
yaratıp index.html
isminde kaydedin.
$ cd ~ /home/gorkem $ mkdir public_html $ cd public_html $ ls index.html index.html
Ardından aşağıdaki satırları yazın. Burada web için kullanılan tarayıcı lynx'tir. Eğer X ortamında çalışıyorsanız Netscape de kullanabilirsiniz.
$ lynx http://cclub.metu.edu.tr/~ilker
Hazırladığınız web sayfası ekrana gelecektir.
CGI web üzerinden kullanıcı arayüzleri hazırlamak için kullanılan en yaygın yöntemdir. En yaygın kullanım alanları arasında veri tabanı sorgu sistemleri sayılabilir. Aşağıdaki dökümanda genel olarak CGI tanıtımı yaparken özellikle C ile CGI programları hazırlayacaklara yardımcı olabilir.
Bu dökümanın bazı kısımları okuyucuların az da olsa C ve programlama bilgisinin olduğu varsayılarak hazırlanmıştır.
İnternet üzerindeki hemen hemen bütün kullanıcı arayüzleri, Common Gateway Interface (CGI), kullanılarak hazırlanmıştır. CGI WWW kullanıcılarının WWW sunucusunun çalıştığı makina üzerinde belirlenen programları çalıştırmasını sağlayan bir sistemdir. CGI ile hazırlanan kullanıcı arayüzlerinin başlıca avantajlarını aşağıdaki gibi sıralayabiliriz:
Bu avantajların yanında sayılabilecek birkaç dezavantaj,
En basit haliyle bir CGI programı, standart giriş dosyasına çıktılarını veren herhangi bir program olabilir. Tek farklılık, herhangi bir çıktıdan önce yazmanız gereken iki satır. Bu satırlardan ilki,
Content-type: text/html
olmalı. İkincisi ise boş bir satır. Aşağıdaki C örneği bu konuda daha açıklayıcı olacaktır. Bundan sonra ekrana yazacağınız herşey web tarayıcısı tarafından HTML ile yazılmış bir döküman olarak değerlendirilecektir.
CGI programları girdilerini HTML formlarından alırlar. HTML formları ayrı bir HTML dosyasında olabilecekleri gibi, bir CGI programının çıktısı olabilirler, hatta aynı program hem formu oluşturup, hem de çıktıyı değerlendirerek gerekli işlemi yapabilir.
Aşağıda örnekleriyle formları nasıl oluşturulabileceğini, ve CGI programlarının nasıl yazılacağı konusunda ayrıntılı bilgi bulacaksınız.
Form HTML2.0 standardıyla gelen bir kullanıcı arayüzü. Formlarda bir dizi değişik yöntemle kullanıcıdan girdi alınabilir. Bunları aşağıda maddeler halinde göreceğiz.
Bir html formu <form> ile başlayıp, </form> ile biter. <form> birkaç parametre alır. HTML'de parametreler <form p1=değer1 p2=değer2 p3> şeklinde verilir. Bu örnekte formun p1 ve p2 iki değer alan parametre, p3 adlı değer almayan bir parametresi var. forma verilebilecek ve verilmesi gereken parametreler,
METHOD : Bu parametre, formun ne şekilde hangi html metodu kullanılacağını belirler. POST ya da GET değerini alabilir. POST daha çok karşı tarafta herhangi bir etkisi olan programlar için, GET ise sadece sonuç veren programlar için kullanılır. Ama yaygın işlem her ikisi için de POST kullanmaktır. Biz uygulamamızda her iki durum için de POST kullandık.
ACTION : Bu parametreyle, formun çalıştıracağı CGI programı belirtilir. Verilen CGI programı aynı makinada olabileceği gibi Internet üzerindeki herhangi bir makinada da olabilir.
ENCTYPE : Form'un sonuçlarının CGI programına ne şekilde gönderileceği bu parametreyle belirtilir. Belirtilmemesi durumunda standart 'application/x-www-form-urlencoded' kullanılır. Bizim önerimiz, bu seçeneğin belirtilmemesi ve standart kullanıma gidilmesi. Bu şekilde programınız hem heryerde çalışır, hem de bu kodlama biçimi için hazır kütüphanelerden yararlanabilirsiniz
Formun içinde bir dizi değişik girdi tipi tanımlayabilirsiniz. Bunlar <INPUT> ile verilir. INPUT için bir dizi input tipi kullanılabilir. Bu tipleri aşağıdaki gibi sıralayabiliriz:
TEXT : Bu tip tek satırlık metin girdiler için kullanılır, birden fazla satır için <TEXTAREA> kullanmalısınız.
Yukarıda belirtilen her bir INPUT tipi için verebileceğiniz ya da vermeniz gereken bir ya da birkaç parametre vardır. Bu parametrelerin ayrıntılarına burda yer vermiyoruz. Bu ayrıntıları www.w3.org 'dan ulaşabileceğiniz birçok dökümandan ya da bu dökümanın kaynak kodu dahil olmak üzere İnternet üzerinde bulacağınız birçok formun kaynak kodundan yararlanarak öğrenebilirsiniz.
Sıradan bir CGI programı bir html formundan girdilerini alıp, çıktıları HTML formatında ekrana yazar. CGI programının çıktıları web tarayıcınız tarafından yorumlanır.
Bir GCI programı, herhangi bir programalama dilinde yazılabilir. Çok
kullanılan diller arasında C, Perl ve daha çok basit işler için de olsa
shell gösterilebilir. Bu uygulamada C kullandık. Aşağıda en basit haliyle
CGI için bir helloworld.c
göruyorsunuz.
/* helloworldcgi.c -- ilk CGI programi. Bu program formdan gelen girdiyi * dikkate almayip, sadece ekrana(html tarayicisina) 'hello world' yazisini * basar */ #include <stdio.h> main (){ /* DIKKAT!!! asagidaki satir olmazsa programiniz calismaz. */ printf("Content-type: text/html\n\n"); printf("hello world!"); }
Aynı örneği bir bash programı olarak yazacak olsaydık:
#!/bin/bash # CGI icin ornek kabuk programi echo 'Content-type: text/html' echo echo echo 'hello world!'
Bu dökümanın bundan sonraki kısmındaki örnekler C için hazırlanmıştır. CGI programı yazmak için gereken daha fazla bilgi sadece, C (ya da ilgili dil) ve HTML bilgisine ek olarak sadece programınızın girdiyi nasıl alacağı. C için en sevdiğiniz C kitabını, HTML içinse İnternet üzerinde bulacağınız dökümanları öneririz.
HTML Form'unun çıktısı 'ad=değer' şeklinde '&' ile ayrılmış tek satırlık bir karakter dizisinden oluşur. Bu dizideki boşluklar '+' ile ASCII setindeki alfa-nümerik karakterler dışındaki bütün karakterler (%, +, ç, Ö gibi) üç karakterlik '%XX' şeklinde bir ifadeyle gösterilir. Buradaki XX ifade edilen karakterin onaltılık sayı sistemindeki kodudur. Formun çıktısını, gets(), scanf() gibi herhangi bir C I/O fonksiyonuyla okuduktan sonra, eldeki karakter dizisinden istediğiniz bilgileri almalısınız. Bu diziyi isterseniz kendi yazdığınız programla isterseniz İnternet üzerinde heryerde bulabileceğiniz hazır kütüphanelerle işleyebilirsiniz.
CGI programının çıktısı istediğiniz gibi bir HTML dökümanı olabilir. Örnek bir HTML ve FORM dosyası aşağıdaki gibidir :
<hr> <p> <form method="POST" action="http://penguen.cclub.metu.edu.tr/cgi-bin/deneme"<P> E-mail adresiniz : <INPUT NAME="e-mail" SIZE=38></P><P> Isminiz : <INPUT NAME="isim" SIZE=42><P> Buraya birseyler yazabilirsiniz: <P> <TEXTAREA name="body" rows=10 cols=50> birseyler </TEXTAREA> <P> <input type="submit" value="Gonder"> <input type="reset" value="Temizle"></P> </FORM> <p> <hr>
Form, hayali penguen.cclub.metu.edu.tr adresi üzerindeki "deneme" isimli programı çalıştıracak şekilde ayarlanmıştır.