2 Serveripoolsed skriptid
Veeb oli algselt mõeldud staatilise linkide süsteemina: hüperteksti (HTML) lehti tuli alati käsitsi muuta, et neis kasvõi kõige väiksemaid muutusi teha. Kuigi selline mudel võimaldab juurdepääsu hästi kujundatud lehtedele, ei võimalda see kiiresti muutuvas infoajastus kiiret info muutmist. Tänapäeval, kus e-äri on väga populaarne ei ole sellise mudeliga midagi peale hakata.
Staatilise mudeli asemel võib kasutada niinimetatud dünaamilist mudelit, kus serveris ei hoita mitte tavalisi lehti, vaid seal töötavad teatavad programmid, mis moodustavad HTML lehekülgi. Klientprogrammi (brauseri) jaoks pole mingit vahet, kas serverist tagastatakse tavaline (füüsiline) fail või on tagastatav vastus genereeritud mõne programmi poolt. Seega näeb brauseri ja veebiserveri vaheline suhtlus (üldistatud kujul) alati välja, nagu seda on kujutatud järgmisel joonisel:

Esialgu hakati serveris tavalisi programme kasutama (loomulikult vastasid need programmid teatavatele nõuetele) ning selleks loodi spetsiaalne liides, mis seda teha lubab – Common Gateway Interface (CGI). Kuna aga seegi meetod osutus aeglaseks, loodi veel mitmeid liideseid (näiteks Internet Server Application Programming Interface – ISAPI, Netscape Server Application Programming Interface – NSAPI), mis teevad võimalikuks veebiserverite laiendamise (programmid töötavad veebiserveri sees selle osana). Kuna aga kõik need lahendused raskendavad veebi programmeerimist (tuleb tunda mingit programmeerimiskeelt ja lisaks sellele ka CGI või mõne muu liidese iseärasusi), siis loodi uus lähenemisviis: serveripoolsed skriptid. See tähendab, et veebiserveris on failid, milles on HTML segatud teatud skriptikeelse programmiga, mida täidetakse serveri pool – tulemuseks on tavaline HTML. Tegelikult eksisteerib serveris sel juhul spetsiaalne programm (nt ISAPI rakendus), mis skripti täita oskab. See lahendus on küll aeglasem kui spetsiaal-liideste rakendused (kuna skriptid tuleb eelnevalt kompileerida), kuid kindlasti on see lahendus lihtsaim ja kiiremini teostatav. Serveripoolsetest skriptidest on enim tuntud Perl (algselt CGI skriptidena, seejärel ka serveripoolsete skriptidena), Active Server Pages, ColdFusion, JavaServer Pages (JSP) ja PHP. Järgnevas antakse ülevaade kolmest skriptikeskkonnast veebiserveris: pikem ülevaade antakse Active Server Pages (ASP)st, lühem ülevaade antakse ColdFusionist ja PHPst.
2.1 Active Server Pages
Active Server Pages (ASP) on avatud kompileerimisvaba rakenduskeskkond, mis võimaldab HTMLi, skripte ja serveripoolseid ActiveX komponente kasutades luua dünaamilisi ja võimsaid veebipõhiseid ärilahendusi. ASP võimaldab kasutada serveripoolseid skripte Microsoft Internet Information Serveril ja ka teistel veebiserveritel, standardkomplektis lubatakse kasutada skriptikeeli VBScript ja JavaScript, samas on võimalik vastavate lisateekide abil kasutada ka teisi keeli nagu näiteks Perl.
ASP-rakendused on
- täielikult integreeruvad HTML-lehtedega;
- lihtsalt programmeritavad, käsitsi kompileerimine (ja linkimine) puudub;
- objekti-põhised ja laiendatavad ActiveX serveri komponentidega.
ASP alustab tööd, kui klientprogramm soovib näha mõnda .asp-laiendiga faili (asp-fail) veebiserverist. Veebiserver kutsub välja ASPi; ASP loeb küsitud asp-failist HTMLi ja skripti; täidab selles olevad skripti käsud, koostab lõpliku HTML-lehe ja saadab selle brauserile.
Seega näeb ASPi mudel välja nagu on kujutatud järgmisel joonisel:

ASP on loodud Microsofti poolt ja seega töötas ASP esialgu ainult Microsofti veebiserveritel (IIS ja selle analoogid), kuid tänapäeval on loodud mitmeid lahendusi, mis teevad võimalikuks ASPi kasutamise ka muudel veebiserveritel ja platvormidel (nt Chili!Soft ASP (vt [11, vaata »]) võimaldab ASPi kasutada ka Apache ja Netscape veebiserverites).
Täieliku ülevaate ASPist annavad allikas [12, vaata »] ja [13, vaata »], ASPiga esimest tutvust tehes on soovitatav vaadata mõnda mitte-autori poolt kirjutatud õpetust (nt allikas [14, vaata »]).
2.1.1 ASP skriptid
ASP-fail on tekstifail, mis võib sisaldada suvalist kombinatsiooni järgnevatest osadest:
- tekst;
- HTML elemendid;
- skripti käsud.
Seega on lihtsaim viis ASP-faili tekitamiseks HTML-failil ‘htm(l)’-laiendi ‘asp’-laiendiga (.asp) asendamine. Klientprogramm näeb tulemusena täpselt sama, mis htm(l)-laiendi korral. Tegelikult alustab ASP tööd, kui lisada HTML-i ka skripti käske. Skript on rida käske, mis võivad näiteks:
- omistada väärtusi muutujatele;
- käskida veebiserveril saata midagi (näiteks mingi muutuja väärtuse) klientprogrammile;
- koondada käske protseduurideks.
- Kasutada serveris olemasolevaid COM (Component Object Model) ja DCOM (Distributed Component Object Model) objekte.
Objektide kasutamist peetakse üheks suurimaks ASP plussiks.
ASP ei ole programmeerimiskeel, ta pigem loob keskkonna, mis võimaldab tavalist HTMLi skriptiosadega siduda. HTML elemendid on tavalisest tekstist eraldatud eraldajatega (sümbolid ‘<’ ja ‘>’), ASPi puhul peavad aga eraldajad skripti osa eraldama nii tekstist kui HTML elementidest. Selleks kasutatakse eraldajat ‘<%’ skripti alguses ja ‘%>’ skripti lõpus – nende eraldajate järgi saab ASP aru, et tegemist on skriptiga ja selles osas olev tuleb serveri pool täita. Spetsiaalsed eraldajad on väljundi saatmiseks (näiteks mingi muutuja väärtuse saatmiseks klientprogrammile): ‘<%=’ alguses ja ‘%>’ lõpus – selline väljastusviis on mõeldud programmeerija töö hõlbustamiseks: sellisel juhul ei pea näiteks ühe muutuja väljastamiseks spetsiaalset väljastuskäsku kasutama. Skript võib sisalduda suvalises kohas HTMLis. Seega on õige:
Selleks, et täpsustada skriptikeelt, milles skript on kirjutatud, tuleb kasutada tavalisi HTML elemente <SCRIPT> ja </SCRIPT> koos atribuudiga LANGUAGE (sellega teatatakse ASPile skriptikeel). Et eristada brauseris käivitatavaid skripte serveris käivitatavatest, tuleb määrata ka atribuut RUNAT=SERVER (sellega teatatakse ASPile, et skript tuleb käivitada serveris). Tuleb aga meeles pidada, et selle meetodiga saab defineerida ainult oma protseduure. Kui soovitakse muuta kogu ASP-faili skriptikeelt (keelt, mida kasutatakse eraldajate ‘<%’ ja ‘%>’ vahel), tuleb faili alguses määrata ASP direktiiv <%@LANGUAGE %>, mille süntaks on järgmine:
ASP-failidesse on võimalik sisestada teisi faile – selleks kasutab ASP Server Side Includes (SSI) metoodikat. ASPis on realiseeritud selle metoodika üks käsk/element: #INCLUDE, mille süntaks on:
2.1.2 ASP rakendused
ASP-rakendus koosneb (virtuaalsest) kataloogist ja kõikidest selles olevatest failidest ning alamkataloogidest. ASP-rakendus võib olla üks ASP-lehekülg, võib sisaldada mitmeid dünaamilisi lehti (eri kasutajate jaoks erinev leht, eri brauserite jaoks erinevad lehed jm) või koosneb mitmetest (omavahel loogiliselt seotud) lehtedest. Kasutades ASP-rakendusi saab säilitada kasutaja seisu (informatsiooni hoidmine kasutaja kohta); kasutaja seise on kahte tüüpi:
- Rakenduse seis, mille korral säilitatakse kogu rakenduse kohta käivat infot ja see info on kättesaadav kõigile rakenduse kasutajatele.
- Sessiooni seis, mille korral säilitatakse konkreetse kasutaja seis rakenduse kasutamise ajal. Säilitatav info on kättesaadav ainult ühele kasutajale. Sessiooni seisu on võimalik säilitada kasutajate kohta, kes kasutavad küpsiseid toetavat klientprogrammi, seega ei ole sessioonis andmete säilitamine eriti mõttekas, kui on teada, et süsteemi kasutavad kliendid ei soovi oma brauseritel küpsiseid lubada.
Iga ASP-rakendus võib sisaldada ühte fail nimega Global.asa (laiend asa tuleneb väljendist Active Server Application), mis peab asuma rakenduse peakataloogis. ASP loeb faili Global.asa, kui:
- Peale veebiserveri laadimist toimub esimene pöördumine mõne rakenduse ASP-faili poole.
- Kasutaja, kellel ei ole aktiivset rakenduse sessiooni, pöördub mõne rakenduse ASP-faili poole.
- Kasutaja sessioon lõpeb.
- Kogu rakendus lõpetab töö (enne veebiserveri seiskumist).
- Protseduurid, mis käivitatakse rakenduse ja/või sessiooni alguses (Application_OnStart ja Session_OnStart).
- Protseduurid, mis käivitatakse rakenduse ja/või sessiooni lõppedes (Application_OnEnd ja Session_OnEnd).
- Globaalsete objektide esindajate loomist – objektid, mis on kasutatavad kõikide rakenduse failide poolt kogu rakenduse/sessiooni töö jooksul.
Sessioon luuakse järgnevatel viisidel:
- Kasutaja pöördub ASP-faili poole rakenduses, mille spetsiaalfailis Global.asa on defineeritud protseduur Session_OnStart.
- ASP-failis salvestatakse mõni väärtus sessioonimuutujasse (Session-objekti muutujasse).
- kasutaja pöördub ASP-faili poole rakenduses, mille spetsiaalfailis Global.asa on loodud mõni sessiooni-objekt (elemendiga OBJECT).
Sessiooni loomisel genereeritakse igale kasutajale vastav numbriline identifikaator (SessionID), mille kaudu ASP suudab konkreetse kasutaja üheselt identifitseerida. Klientprogrammile saadetakse spetsiaalne küpsis, mille alusel genereeritakse identifikaator. Siit ka põhjus, miks pole võimalik Session-objekti luua kasutajatele, kelle brauser ei toeta küpsiseid. Sessiooni identifikaatori poole saab pöörduda (ainult lugemiseks) atribuudi Session.SessionID kaudu.
Sessioon hävitatakse, kui sessioon kaotab kehtivuse (kasutaja ei pöördu teatud aja jooksul ühegi rakenduse ASP-faili poole) või kui sessioon lõpetatakse. Vaikimisi kehtib sessioon 20 minutit, aga seda saab ka ASP-failides muuta, kasutades Session-objekti atribuuti Session.Timeout (määratakse minutites). Sessiooni lõpetamiseks võib kasutada ka Session-objekti meetodit Abandon. Tegelikult hävitatakse Session-objekt alles pärast meetodit välja kutsunud ASP-faili käskude täitmist. Seega on võimalik samal lehel kasutada kõiki Session-objekti omadusi.
Rakenduse objekt luuakse, kui peale veebiserveri alglaadimist pöördub esimene kasutaja mõne ASP-faili poole rakenduses. Järgmiste pöördumiste korral rakendust ei looda, vaid see säilub, kuni veebiserveri seiskamiseni.
Rakenduse tasemel saab näiteks veebiserveri administraator saata kõikidele kasutajatele päevakohast infot. Samuti saab rakenduse tasemel kasutada loendurit külastajate üle arve pidamiseks (rakenduse alguses võib loenduri nullida, külastajate andmebaasis algseise taastada jms). Rakenduse objekti omadusi saab kasutada suvaline rakenduse ASP-fail suvalises sessioonis. Selleks, et rakenduse omadusi (näiteks rakenduse objekti salvestatud muutujaid) turvaliselt (kartmata, et keegi teine samal ajal omadusi muudab) kasutada, võib rakenduse objekti lukustada (meetodiga Application.Lock). Sel ajal kui rakendus on lukustatud, on rakenduse objekt muudetav ainult lukustava ASP-faili poolt. Rakenduse lukust vabastamisel (meetodiga Application.Unlock) võivad kõik rakenduse ASP-failid rakenduse objekti muuta.
Rakenduse objekt kustutatakse vahetult enne seda, kui veebiserver seiskub.
2.1.3 ASP objektid
Nagu juba mainitud, on ASP objekti-põhine – see tähendab, et teatud vajaminevad meetodid(protseduurid)/omadused(andmed) on koondatud ühtseks tervikuks – objektiks. Et aga enda poolt loodud objekte ASPis kasutada, tuleb need kõigepealt luua. Samas on ASPi sisse ehitatud mõned objektid, mis ei vaja eelnevat spetsiaalset loomist, vaid on kohe kasutatavad:
Objekt | Milleks kasutatakse |
Application | Kogu rakenduse piires ühtseks info hoidmiseks. |
Session | Kasutaja konkreetse sessiooni haldamiseks. |
Request | Kasutaja (brauseri) poolt HTTP päringuga saadetud infole juurdepääsu tagamiseks. |
Response | Kasutajale (brauserile) info saatmiseks. |
Server | Teatavate serveri meetodite ja omaduste kasutamiseks (näiteks enda loodud objektide loomiseks ASPis). |
ObjectContext | IIS 5-e poolt sisse toodud objekt spetsiaalsete komponent-teenuste transaktsioonide haldamiseks. |
ASPError | IIS 5-e poolt sisse toodud objekt ASP vigade halduseks (võimaldab ASPi vigade kohta detailsema info saamist). |
Objektide süntaks sõltub konkreetsest skriptikeelest, aga kuna VBScript on vaikimisi kasutatav keel, siis võetakse allpool aluseks selle keele süntaks.
Objektid võivad sisaldada kogumeid: hulk omavahel mingil moel ühendatud elemente objektis, mille poole pöördutakse samal viisil. Objektide poole saab pöörduda kasutades objekti meetodeid ja omadusi. Meetod on protseduur, mis tegutseb objektil. Meetodi üldine süntaks on järgmine:
Objekt.Meetod parameetrid
Omadus on nimeline atribuut objektil, mis tavaliselt iseloomustab objekti. Omaduse üldine süntaks on järgmine:
Objekt.Omadus parameetrid
Rakenduse (Application) ja sessiooni (Session) objektidest oli juttu eelmises alajaotuses, seega neil siin pikemalt ei peatu. ObjectContext ja ASPError on ASPi toodud alles IIS 5-e poolt ja selle tõttu ei vaadelda neid siin pikemalt.
Brauseri poolt saadetud info lugemiseks ASPis kasutatakse Request objekti. Selle objektiga on võimalik lugeda igasugu infot, mida brauser saadab serverile ja/või server seab:
- HTTP protokolli ja serveri standardinfo ehk keskkonnamuutujad (kogum ServerVariables).
- HTML-vormilt POST-meetodiga saadetud info (kogum Form).
- Päringuparameetrid (GET-meetod, kogum QueryString).
- Niinimetatud küpsised (cookies), millega on võimalik kasutaja kohta infot säilitada, et siis edaspidi näiteks kasutajat ära tunda vms (kogum Cookies).
- Kliendi sertifikaadid (kogum ClientCertificate). Sertifikaate kasutatakse kasutaja ja veebiserveri vahelise turvalise ühenduse loomiseks ja hoidmiseks.
Kliendile (brauserile) info saatmise haldamiseks on loodud objekt Response. Sellega saab kliendile infot saata ja saadetava info parameetreid muuta (nt millal info oma kehtivuse kaotab).
Response objekt sisaldab ainult ühte kogumit Cookies, mida kasutatakse brauserile küpsiste saatmise haldamiseks (küpsise parameetrite määramiseks). Samas on objektil defineeritud mitmed atribuudid:
- Buffer määrab kas HTML-väljundit puhverdatakse (säilitatakse töö käigus serveril ja väljastatakse peale töö lõppu kõik korraga). See atribuut võimaldab ASPi tööd paremini kontrollida; näiteks saab vea tekkimise korral keelata seni koostatud väljundi saatmise kliendile ja saata selle asemel hoopis veateate.
- CacheControl võimaldab kontrollida lehe säilitamist puhverserverites (proxy), st lehega saab saata infot, kas puhverserverid säilitavad lehte või mitte.
- Charset võimaldab määrata väljundi märgistikku.
- ContentType määrab väljundi tüübi.
- Expires määrab aja, mille jooksul HTML-leht brauseris oma kehtivuse kaotab.
- ExpiresAbsolute määrab täpse aja (kuupäev ja kellaaeg), millal leht kehtivuse kaotab.
- IsClientConnected võimaldab kontrollida, kas klient on endiselt serveriga ühenduses.
- PICS võimaldab määrata HTTP pics-label päise väärtust.
- Status määrab HTML-lehe päises staatusrea (tavaliselt pannakse see veebiserveri poolt).
Response objektil on defineeritud ka mitmed meetodid:
- AddHeader võimaldab lisada HTTP päisesse ridu (sellega saab skript lisada isiklikke päiseridu).
- AppendToLog lisab veebiserveri logifaili parameetrina määratud teksti.
- BinaryWrite väljastab kõik sümbolid neid teisendamata. See meetod on kasulik väljastamaks mitte-tekstilisi andmeid (binaarsel kujul olevaid andmeid).
- Clear kustutab puhverdatud info (kui seda pole veel väljastatud). Funktsiooni kasutamisel on mõte ainult siis kui eelnevalt on defineeritud, et väljundit tuleb puhverdada (Buffer atribuudiga).
- End lõpetab ASP-faili töötlemise ja tagastab selleks hetkeks moodustatud väljundi.
- Flush väljastab puhverdatud info. Funktsiooni kasutamisel on mõte ainult siis kui eelnevalt on defineeritud, et väljundit tuleb puhverdada (Buffer atribuudiga).
- Redirect võimaldab klienti uuele asukohale (määratakse meetodi parameetriga) saata.
- Write väljastab parameetrina määratud teksti brauserile.
Server objekt võimaldab kasutada teatavaid serveripoolseid omadusi ja meetodeid – enamus neist on tihti vajaminevad utiliidid.
Server objektil on defineeritud ainult üks atribuut: ScriptTimeout, millega saab määrata aega (sekundites), mille jooksul antud skript peab täitmise lõpetama. Kui skripti töö ei lõpe määratud perioodi jooksul, siis väljastab ASP vastava veateate kliendile. Vaikimisi on see aeg 90 sekundit.
Samas on objektil defineeritud mitmed kasulikud meetodid:
- CreateObject loob serveripoolse objekti ASPis kasutamiseks.
- Execute meetod loeb parameetrina määratud ASP faili ja täidab selle nagu oleks see meetodi välja kutsunud faili osa.
- GetLastError meetod võimaldab veatöötlust ASPis (tagastab ASPError objekti).
- HTMLEncode meetod rakendab parameetrina määratud stringile HTML kodeerimist.
- MapPath teisendab parameetrina määratud virtuaalse või relatiivse tee vastavaks füüsiliseks failiteeks.
- Transfer annab juhtimise üle teisele ASP-failile (parameetrina määratud) andes seejuures kogu kliendilt tuleva info teisele ASP failile.
- URLEncode meetod rakendab parameetrina määratud stringile URLi kodeerimist.
Nagu juba eelpool mainitud, saab ASPis lisaks eeldefineeritud objektidele kasutada ka muid serveris registreeritud objekte (realiseeritud COM/DCOM komponentidena). Selleks, et objekti kasutada, tuleb ta kõigepealt luua; selleks võib kasutada server objekti meetodit CreateObject või spetsiaalset elementi <OBJECT>. Kasutades OBJECT-elementi, tuleb tingimata määrata lisaatribuut RUNAT=SERVER. Lisaks enda pool loodud objektidele võimaldab IIS installeerida serverisse ka mõned eelvalmistatud objektid, mis võimaldavad näiteks reklaamibannerite näitamist lehel, brauserite omaduste tundmist ASPis, andmebaasidega suhtlemist, lehekülje külastuste lugemist, kasutaja õiguste kontrolli jne.
2.2 ColdFusion
ColdFusion on firma Allaire poolt toodetud rakendusserver, mis on täielik veebirakenduste server loomaks väga võimsaid e-äri lahendusi. ColdFusion on loodud võimaldamaks e-äri ja veebirakenduste põhilisi omadusi:
- Kiire arendus. Visuaalsed programmid ja element-põhine programmeerimiskeskkond teevad ColdFusionist väga hea vahendi lahenduste loomiseks.
- Laiahaardelisus. Kõrge jõudlus, lõimtöötlusega (multithreading) arhitektuur ja erinevad omadused nagu jooksev kompileerimine, koormuse jaotamine ja veatöötlus garanteerivad, et loodud rakendused hõlmavad kõikvõimalikke situatsioone.
- Avatud suhtlus. Avatud suhtlus andmebaasidega, e-maili süsteemidega, Java, XML ja muu sellisega tähendab, et keerukaid veebilahendusi on võimalik luua kiirelt ja lihtsalt.
- Täielik turvalisus. Viimased Interneti turvatehnoloogiad ja turvaline suhtlus veebiserveri ja võrgu vahel loovad võimalused turvaliste süsteemide arendamiseks.
ColdFusion sisaldab komplekti visuaalseid programme, võimsat serverit ja avatud keelekeskkonda:
- ColdFusion Studio on tihedalt integreeritud ColdFusion Server-iga võimaldades seejuures visuaalset programmeerimist, sisaldab kõike andmebaasidega suhtlemiseks ja silumisvahendeid ning on seega võimas vahend veebirakenduste loomiseks.
- ColdFusion Server annab veebi loojale kõik vahendid e-äri lahenduste loomiseks.
- ColdFusion kasutab serveripoolset keelekeskkonda ColdFusion Markup Language (CFML), mis on tihedalt seotud HTMLi ja XMLiga (Extensible Markup Language). CFML hõlmab endas 70 serveripoolset elementi, 200 funktsiooni ja 800 erinevat juurdelisatavat komponenti.
Täieliku ülevaate ColdFusionist võib leida allikast [15, vaata »], CFMList annab ülevaate allikas [16, vaata »], ColdFusioniga esimest tutvust tehes on soovitatav vaadata mõnda mitte-autori poolt kirjutatud õpetust (nt allikas [17, vaata »]).
2.2.1 ColdFusioni töö
ColdFusion töötab samal põhimõttel, kui näiteks eelpool kirjeldatud ASP:
- Klient pöördub veebiserveri poole ja küsib lehte, mis sisaldab CFML elemente (CFML lehte).
- Veebiserver annab juhtimise ColdFusionile.
- ColdFusion töötleb lehte ja täidab kõik CFML elementidega antud direktiivid. Seejuures võib ColdFusion pöörduda andmebaasi poole andmete saamiseks, neid andmeid andmebaasi lisada, neid muuta.
- ColdFusion saadab tulemuseks saadud väljundi veebiserverile.
- Veebiserver saadab vastuse kliendile.

Lisas 1 on toodud tabel, milles on kirjeldatud ColdFusioni koostöö erinevate veebiserverite ja andmeallikatega.
2.2.2 Andmebaasidega suhtlemine CFMLis
Andmebaasidega suhtlemiseks kasutab ColdFusion põhiliselt ODBCd (Open Database Connectivity), kuid samas tunnistab ta ka mõningaid OLE DB andmetarnijaid ja mõningate (nt Oracle) andmebaasisüsteemide draivereid. Andmebaasidega suhtlemiseks on CFMLis defineeritud järgmised elemendid:
- CFQUERY võimaldab saata erinevaid SQL lauseid andmeallikale.
- CFSTOREDPROC võimaldab andmeallikas defineeritud salvestatud protseduure käivitada.
- CFPROCPARAM võimaldab määrata salvestatud protseduuridele parameetreid.
- CFPROCRESULT võimaldab salvestatud protseduuride tulemusi CFMLis käsitleda.
- CFINSERT võimaldab sisestada uusi kirjeid andmeallikasse.
- CFUPDATE võimaldab andmeallikas kirjeid uuendada.
- CFTRANSACTION võimaldab luua transaktsioone (nt täita mitu päringut korraga).
2.2.3 Andmete väljastus CFMLis
Kui andmed on andmeallikast saadud (näiteks CFQUERY elemendiga), siis peab neid mingil moel ka lehel näitama. Tuleb tähele panna, et väljastada saab ainult nende päringute tulemusi, mis on eelnevalt defineeritud, seega on soovitatav lehekülje alguses defineerida päringud ja hiljem lehel neid siis kasutada. Järgmised elemendid võimaldavad päringu tulemust väljastada:
- CFOUTPUT võimaldab väljastada päringu (või näiteks salvestatud protseduuri) tulemust. CFOUTPUT elemente ei tohi üksteise sisse paigutada.
- CFTABLE võimaldab koostada tulemusest tabelit.
- CFCOL kasutatakse koos CFTABLE elemendiga ja see defineerib tabeli veerud.
#item#<br>
</CFOUTPUT>
Lisaks päringu tulemuse väljastamisele saab CFMLis näiteks lisada oma päiseridu HTTP päisesse, see toimub elemendiga CFHEADER.
2.2.4 Juhtimisstruktuurid CFMLis
Lisaks tavalisele käskude järjestikusele täitmisele võimaldab CFML kasutada ka mitmesuguseid juhtimisstruktuure (tingimusi, tsükleid). Juhtimisstruktuurid CFMLis on järgmised:
- CFABORT katkestab töö lehel kohas, kus element esineb. ColdFusion väljastab kogu selleks hetkeks moodustatud väljundi ja katkestab töö sellel lehel. Tavaliselt kasutatakse seda elementi tingimustes.
- CFEXIT võimaldab (lisaparameeter METHOD):
- katkestada hetkel töödeldavat programmeerija poolt defineeritud elementi (METHOD=ExitTag);
- väljuda hetkel aktiivsest mallist (METHOD=ExitTemplate);
- täita teatud koodilõike uuesti (METHOD=Loop).
- CFIF CFELSE ja CFELSEIF võimaldavad koostada tavalist tingimuslikku käskude täitmist.
- CFSWITCH CFCASE ja CFDEFAULTCASE võimaldavad koostada tavalist valikulist käskude täitmist.
- CFLOOP võimaldab luua väga võimsaid tsükleid nagu näiteks:
- tavaline loendustsükkel (tsükkel lõpeb, kui teatud muutuja saab teatud väärtuse);
- tingimuslik tsükkel (tsükkel lõpeb, kui teatud tingimus saab tõeseks);
- tingimus üle päringu (tsükkel lõpeb, kui määratud päringus lõpevad kirjed);
- CFBREAK võimaldab tsüklist väljuda.
- CFLOCATION võimaldab sisestada lehele mõnda teist lehte.
- CFTRY ja CFCATCH võimaldavad CFMLis veatöötlust.
- CFTHROW võimaldab CFMLis viga esile kutsuda.
2.3 PHP
PHP on serveripoolne multiplatvorm HTMLiga integreeritud skriptikeel, mis võimaldab luua dünaamilisi veebilehti. Nimi ‘PHP’ pärineb kõige esimesest versioonist PHPst, mida nimetati Personal Home Page Tools ja hiljem Personal Home Page Construction Kit; praegu nimetatakse PHPd ka kui PHP: Hypertext Preprocessor.
Paljud ülesanded, mis teistes keeltes nõuavad teadmisi ning oskusi, saavad PHPs lahendatud väga kiirelt. PHP on kombinatsioon Perli, Java ja C kontseptsioonidest. Süntaksi struktuur on suurel määral laenatud C-st, seega on C programmeerimisega kokku puutunud inimesel väga lihtne PHPd õppida. PHP on võimeline tegema keerulisi matemaatilisi kalkulatsioone, esitama võrguinfot, pakub e-maili võimalusi, regulaaravaldiste kasutamist ja veel paljutki. Suurimaks PHP tugevuseks peetakse siiski andmebaasidega suhtlemise omadusi – andmebaasi Internetti ühendamine on tehtud väga lihtsaks. Veelgi enam, PHP toetab enamust populaarsetest andmebaasiserveritest nagu näiteks MySQL, Oracle ja Sybase; loomulikult omab PHP ka ODBC toetust. PHP teeb niivõrd populaarseks asjaolu, et see on eesmärgile orienteeritud keel – see on kirjutatud sellisel moel, et võimaldab saavutada eesmärke kiirelt ja lihtsalt.
PHP juhendi võib leida allikast [18, vaata »], PHPst ülevaate leiab allikast [19, vaata »].
2.3.1 PHP süntaks
PHP skriptide eraldamiseks tavalisest HTMList on neli võimalust:
- Eraldajad ‘<?’ PHP skripti alguses ja ‘?>’ lõpus.
- Eraldaja ‘<?php’ PHP skripti alguses ja ‘?>’ lõpus.
- Märkides PHP skripti algust elemendiga <script language=”php”> ja skripti lõppu elemendiga </script>.
- Kasutades ASP-stiilis eraldajaid (‘<%’ skripti alguses ja ‘%>’ lõpus ja ‘<%=’ ning ‘%>’ väärtuste väljastamiseks).
<?php echo(“Tere maailm\n”); ?>
<script language=”php”> echo (“Tere maailm\n”); </script>
<% echo (“Tere maailm\n”); %>
<%= $muutuja; %>
Käsueraldajad on sarnased programmeerimiskeelte C ning Perl süntaksile: iga käsk peab lõppema semikooloniga. Erandina on semikoolon lubatud käsu lõpust ära jätta, kui käsule järgneb skripti lõpetav eraldaja (?>).
Kommentaaride eraldamiseks on lubatud kasutada C, C++ ja UNIX käsukeele (shell) stiilis kommentaaride eraldajaid: //, /* ja */ ning #. Kommenteerimisel tuleb tähele panna, et C stiilis kommentaare ei tohi üksteise sisse paigutada.
Muutujaid märgitakse PHPs dollarimärgiga muutujanime ees ja muutujanimi selle järel; muutuajanimed on tõusutundlikud ($muut ei ole sama mis $Muut). PHP omab toetust järgmisi muutujatüüpe: massiiv (array), ujukomaarv (floating-point numbers), täisarv (integer), objekt (object) ja string (string). Programmeerija ei pea tavaliselt eraldi tüüpi määrama, kuna PHP määrab selle automaatselt töö käigus sõltuvalt muutuja kasutamise kontekstist. Lisaks enda poolt defineeritud muutujatele võimaldab PHP kasutada ka mitmeid eeldefineeritud muutujaid, mis tähistavad näiteks CGI muutujaid ja PHP keskkonnamuutujaid.
PHPs on realiseeritud kõik enamkasutatavad juhtimisstruktuurid:
- tingimuslikku juhtimist (if, else, elseif);
- valikulist juhtimist (switch, case);
- tsükleid (while, do..while, for);
- lisafailide sisestamist PHP skripti (include, require).
2.3.2 Andmebaasidega suhtlemine
PHP võimaldab suhelda paljude andmebaasisüsteemidega. Selleks võib kasutada PHP ODBC toetust, samas omab PHP ka mitmete andmebaasiserveritega otse suhtlemise võimalust (näiteks Microsoft SQL Server, Oracle, MySQL). ODBC abil on võimalik teha kõiki tavalisi andmebaasidega seotud tehinguid:
- Luua ühendusi ODBC andmeallikaga (odbc_connect).
- Katkestada ühendust (odbc_close ja odbc_close_all).
- Luua transaktsioone (odbc_autocommit võimaldab alustada transaktsioone, odbc_commit transaktsiooni edukalt lõpetada ja odb_rollback transaktsiooni katkestada).
- Käivitada SQL lauseid päringute, muudatuste ja lisamiste tegemiseks andmebaasi ning lugeda päringute jms tulemusi.
- Luua ühendust serveriga (mssql_conect).
- Ühendust sulgeda (mssql_close).
- Valida SQL serveris olevat andmebaasi kasutamiseks (mssql_select_db).
- Teha serveris päringuid (mssql_query) ja kasutada päringu tulemusi (mssql_result või näiteks mssql_fetch_row).
2.3.3 Kliendiga suhtlemine
PHP on teinud kliendiga suhtlemise väga mugavaks. Nimelt on näiteks kõik kliendi poolt saadetud vormi muutujad PHP poolt eeldefineeritud kui programsed muutujad. Näiteks kui vormil sisaldub tekstiväli nimega Eesnimi
Kliendile info saatmine toimub tavalise väljastusena. Seega võib kogu väljastatava teksti väljastada funktsiooniga echo või print.
HTTP päiste lisamine toimub funktsiooniga Header. See funktsioon võimaldab PHP skriptis sundida veebiserverit kasutajat tuvastama, selleks võib näiteks kasutada järgmist koodilõiku:
if(!isset($PHP_AUTH_USER)) {
Header(“WWW-Authenticate: Basic realm=\”XX\””);
Header(“HTTP/1.0 401 Unauthorized”);
echo “Kasutajatunnus kohustuslik!\n”;
exit;
} else {
echo “Tere $PHP_AUTH_USER.<P>”;
}
?>