6 - HTML-CGI likisi CGIa ilk admmz HTMLin FORM etiketine...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: HTML-CGI likisi CGIa ilk admmz HTMLin FORM etiketine ilikin bilgilerimizi atmak ok lyerinde olur. nk Internette istemci ile sunucunun bilinli ekilde etkiletikleri nokta CGI ise, ikisini bu noktada buluturan geler, HTMLin Form ve Anchor (<A>) etiketleridir. Form etiketi bir formdaki <Input> deerlerini, <A> etiketi ise Browseri CGI programna gnderir. HTML ile yazlm ve grntlenmek zere Browser programlarna gnderilen metinler balk ve gvde olmak zere iki blme ayrlr. Balk blm <HEAD>...</HEAD> etiketlerinin, gvde blm ise <BODY>...</BODY> etiketlerinin arasnda kalr. Bir HTML belgesinin balk blmnde yer alan bilgilerin byk blm Browserda grntlenmez; ancak Browser bu blmdeki bilgilere bakarak, HTML belgesini tanr; bu belgeyi nasl grntleyeceini renir. Gvde blmnde ise ziyaretinin Browser programnn grntlemesini istediimiz verileri ve bunlarn nasl grntleneceine ilikin kodlarmz yer alr. Bu kodlarn hemen hepsi, bizim, yani Web sayfas tasarmcsnn ziyaretimize gndermek istediimiz veriler ve bunlarn grntlenmesine ilikindir; bizden ziyaretiye, Sunucudan stemciye doru giden bilgilerdir. FORM ve onun iinde yer alan INPUT etiketleri ise, tersine iler: istemciden sunucuya, ziyaretiden tasarmcya veri tar. HTMLin ilk srmnde Form ve Input etiketleri yoktu; <ISINDEX> etiketi ile ziyareti sadece sitede arama yapabilirdi. Ancak hi bir Browser (ki o zaman sadece Mosaic vard!) tarafndan tam uygulanmam olan bu etiketin yerine HTMLin daha sonraki srmlerinde istemcinin sunucuya daha ok bilgi gnderebilmesini salayan Form ve Input etiketleri geldi. CGI programlarmz, yukardaki rnekte olduu gibi adreslerini doruca Browsern URL adres kutusuna yazarak da arabiliriz. Fakat CGI programlarn altrmann en yaygn yolu Form etiketidir. Bunu Form etiketinin ACTION zellii (attribute) yapar. Hatrlarsanz, FORM etiketini yle yazarz: <FORM ACTION=cgi-program METHOD=[POST | GET]>...</FORM> Burada Form etiketinin ACTION zelliinin karsna CGI programmzn adn, rnein, Perl programnn dosya adnn uzantsna gre, ACTION=/cgi-bin/merhaba.pl veya ACTION=/cgi-bin/merhaba.cgi yazarz. stemcinin Form bilgilerini CGI programmza hangi yntemle ulatracan belirleyen Get ve Post zelliklerinin farklarn birazdan ele alacaz. imdilik bunu atlayalm. Bu arada Form etiketinin baka zellikleri de vardr; bunlardan Accept= ile form bilgisini ileyecek olan Servera, gnderilen verinin hangi dosya trne girdiini, Enctype= ile gnderilen verinin nasl ifrelendiini bildiririz. Form etiketinin iinde, onun eylemi (Action) ve yntemi (Method) ile gnderilecek bilgileri derlemeye yarayan baka etiketler bulunur. imdi ksaca onlar ele alalm: Bir Internet sitesi ziyaretisinden Input etiketi araclyla tam on ayr tr bilgi alabiliriz. Input etiketi yle yazlr: <INPUT NAME=Bu alann ad TYPE=[TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT | RESET | FILE | HIDDEN | IMAGE | BUTTON] VALUE=Alfanmerik deer SIZE=girdi_kutusu_genilii> Input etiketinin kapanmadn (yani </INPUT> eklinde bir etiket olmadn) ve girdi tipine gre daha baka zellikleri bulunabileceini hatrlayalm. Input etiketi ile sunucuya, onun arclyla CGIya gelen bilgiye programclk dilinde deiken denir. Deikeni, sabit bir ad olan fakat ierii deiebilen bir bilgi tutucu ge olarak dnebilirsiniz; bir tr kap. Inputun oluturduu deikenin ad, etiketin NAME (ad) zelliinden alnr; yani Inputa ad verirken, daha sonra bu adla bir deikeniniz olacan dnmelisiniz. Bu deikenin deeri ise Ipnutun trne gre deiir. rnein, TEXT (metin) tr Inputun deeri, Browserda oluturaca kutuya Internet ziyaretimizin yazaca kelimelerdir. Input etiketini yazarken VALUE (deer) zelliini de yazmsak, (ve ziyaretinin bunu deitirmesi olana yoksa), deikenin deeri VALUE zelliinin karsna yazdmz alfanmerik (rakam, harfler veya her ikisi birden) metindir. Bir Formun iindeki bilgilerle, ziyaretinin Browserndan (istemci) kalkp, bizim Web Servermza ve oradan da CGIa gelmesi iin, genellikle ziyaretinin ya klavyesinde Enter tuuna basmas ya da tipi Submit (Gnder) olan ve Browser tarafndan dme simgesiyle grntlenen bir baka Inputu tklamas gerekir. Fakat gnder dmesi de bir Input olduu iin Form etiketi, iindeki bilgileri paketleyip gnderirken Submitin (varsa) deerini de gnderir. imdi paketleyip gnderme olay zerinde duralm; nk hemen hemen tm CGI kavram, bu Internet ziyaretimizden gelen bu ey zerine kurulacak. CGI programlarmz ziyaretiden girdi olmadan da alabilir. Nitekim yukarda yazdmz ilk Perl program ziyaretinin bir bilgi vermesini gerektirmiyordu. Fakat CGI program, ziyaretinin IP adresini, renip, kendisine bildirilyordu. IP numaras, ziyaretinin sadece bu CGI programn altrmak zere programn adn Browsernn adres hanesine yazmas ve Entera basmas (veya yeni Browserlardaki Go/git dmesini tklamas) ile Browser tarafndan CGIa gnderilmi bir bilgidir. Bu yzden CGI, ziyareti isteyerek ve bilerek Servera bilgi gndermese de Server ziyaretiden bilgi edinmesini ve bunu CGI programmza vermesini bilir! imdi bu bilgilerin neler olduunu grelim. CGI programna Server tarafndan iki tr bilgi verilir: 1. Browser, Server ve kendisini hakkndaki bilgiler: Browsern tr, yetenekleri, Browsern Internete giri noktas (Remote Host, kullanc asndan ISS), Servern tr, Internete baland geit (Port), CGI programnn ad, bulunduu dizin, sahip olduu deikenler gibi bilgiler, CGIa evre deikenleri (Enivonment Variables) kmesi olarak ulatrlr (Bu deikenlere baz kaynaklarda Ortam Deikenleri denildiini grebilirsiniz.. 2. Kullancnn (Internet ziyaretisinin) girdii bilgiler: Kullanc Browser penceresinde bir Form doldurmu ise Formdaki deikenler ve deerleri (Input etiketlerine verdiimiz adn deiken ad, bizim verdiimiz veya kullancnn girdii deerlerin de deikenin deerini oluturduunu yukarda grmtk) de CGI programna aktarlr. Bu aktarma ilemi iki trl yaplabilir. Formun METHOD zellii GET ise bu bilgiler yukarda belirttiimiz evre deikenlerine katlarak verilir; METHOD olarak POST kullanmsak, bu bilgiler standart girdi (standart input veya Perln ifadesiyle stdin) olarak gnderilir. CGI programcs olarak yapacamz iin z, bu iki grup deikeni alp, ieriklerini kullanlr hale getirmek ve kullanmaktan ibarettir. Burada ifade ettiimiz almak, kullanlr hale getirmek ve kullanmak ifadelerine dikkat edin: nk CGI program ile sadece bu ii yapacaz. Dolaysyla neyi alabileceimi, nasl alabileceimizi renerek ie balamak zorundayz. Perl, bir programlama dili olarak bize bu ite kullanabileceimiz komutlar salar; fakat bu komutlarl kullanarak hangi bilgi ile ne yapacamz bilmemiz gerekir. ...
View Full Document

This note was uploaded on 02/23/2012 for the course CS CS281 taught by Professor Özgürulusoy during the Winter '12 term at Bilkent University.

Ask a homework question - tutors are online