Örnek CGI Programı

Next: Linux'ta Java Up: Form Hazırlama (CGI) Previous: CGI Yapısı

### Örnek CGI Programı

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örüyorsunuz.

    /* 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 dokü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 programınızın girdiyi nasıl alacağıdır.

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 ister kendi yazdığınız programla, ister İnternet üzerinde heryerde bulabileceğiniz hazır kütüphanelerle işleyebilirsiniz.

CGI programının çıktısı istediğiniz gibi bir HTML dokümanı olabilir. Örnek bir HTML ve FORM dosyası aşağıdaki gibidir :

    <hr>
    <p>
    <form method="POST" action="http://penguen.linux.org.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.linux.org.tr adresi üzerindeki "deneme" isimli programı çalıştıracak şekilde ayarlanmıştır.

Aşağıdaki örnek ekran görüntüsünde Netscape ile bir web sayfasına bağlanılmış ve sayfa üzerindeki forma ulaşılmıştır. Bu tipik bir CGI ekranıdır. Kullanıcıdan kutucuklar içine veri girmesi istenir, ardından sunucu makina üzerinde çalıştırılan bir program yardımıyla bu bilgiler işlenir.

8#8
Şekil : Örnek CGI görüntüsü

Next: Linux'ta Java Up: Form Hazırlama (CGI) Previous: CGI Yapısı