Taustaa. CGI-ohjelmointi



Samankaltaiset tiedostot
T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

Miten Internet toimii. Tuomas Aura T Johdatus tietoliikenteeseen kevät 2013

Digitaalisen median tekniikat. Palvelinohjelmointi Harri Laine 1

Digitaalisen median tekniikat. Palvelinohjelmointi

Harri Laine 1. Digitaalisen median tekniikat, s2007 HY/TKTL, palvelinohjelmointi_1. Palvelinohjelmointi

Digitaalisen median tekniikat, k2004 HY/TKTL, palvelinohjelmointi_1 21/04/2004. Harri Laine 1. Palvelinohjelmointi. Staattinen www-sivu

Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

12 CGI-ohjelmointi. 12 CGI-ohjelmointi

13. Pintaa syvemmältä 233

1.1 Internetistä lyhyesti. Mikä Internet on? 1.2 Maailmanlaajuinen verkko

Webpalvelin muistitikulle - Ohje

Harjoitustyö: virtuaalikone

Miten Internet toimii. Jyry Suvilehto T Johdatus tietoliikenteeseen ja multimediatekniikkaan kevät 2010

Luento 1. Jouni Ikonen - Jouni.Ikonen lut.fi

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

Järjestelmäarkkitehtuuri (TK081702)

1 PHP-sovelluksen toiminta

9 Kohti seittiohjelmointia

Olio-ohjelmointi Javalla

Digitaalisen median tekniikat xhtml - jatkuu Harri Laine 1

ETÄTERMINAALIYHTEYS SELAIMELLA

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka. Joni Korjala APACHE WWW-PALVELIN Seminaarityö 2012

Digitaalisen median tekniikat xhtml - jatkuu

Bitnami WordPress - Asenna WordPress koneellesi. Jari Sarja

WWW-sivu. Miten Internet toimii? World Wide Web. HTML-koodi. HTTP-istunto URL <#>

Ohjelmoinnin perusteet Y Python

Miten Internet toimii. Jyry Suvilehto T Johdatus tietoliikenteeseen ja multimediatekniikkaan kevät 2013

PERL. TIE Principles of Programming Languages. Ryhmä 4: Joonas Lång & Jasmin Laitamäki

WWW-Sivustojen suunnittelu. Miten WWW toimii. Suunnittelun lähtökohdat

WWW-Sivustojen suunnittelu

SSH Secure Shell & SSH File Transfer

2 Web-lomakkeet. HTML-lomakkeet. Lomakkeiden perusteet

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

Verkkosivut perinteisesti. Tanja Välisalo

Erittäin nopea tapa saada kehitysympäristö php:lle pystyyn Voidaan asentaa muistitikulle

VERKKOSOVELLUSTEN OHJELMOINTI, JOHDATUS PHP:HEN

WWW-PALVELIN 1 (17) Olavi Korhonen, Timo Ruohomaa, Atte Pakkanen WWW-PALVELIMEN KONFIGUROINTI. Sivunumerot 1 WWW-PALVELIMEN TOIMINTA

DOM ja Ajax. Jaana Holvikivi Metropolia. J.Holvikivi

PHP:n alkeita ja taustaa. Markus Norrena

Digitaalisen median tekniikat xhtml - jatkuu

Sovelluskerros: Socket API, WWW, sähköposti, DNS

Microsoft Outlook Web Access. Pikaohje sähköpostin peruskäyttöön

Palvelu sisältää tietyn määrän ominaisuuksia riippuen ostetusta palvelupaketista.

Käyttötilastot - lokakuussa 2008

Lomakkeet HTML5. Elina Ulpovaara. Testaus: IE9 Firefox7 Opera11 Chrome

Tietokannan webbikytkentä. Janne Petäjä

VERKKOKÄYTTÄJÄN OPAS. Tulostuslokin tallennus verkkoon. Versio 0 FIN

Paavo Räisänen. WampServer palvelimen asennus ja käyttö Eclipsen kanssa, sekä ensimmäinen FTP yhteys.

Written by Administrator Saturday, 28 August :51 - Last Updated Tuesday, 22 February :45

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Microsoft Visual Studio 2005

directive attr1= value1 attr2= value2 %>

Metropolia Ammattikorkeakoulu

Tietokanta.java Luokka tarjoaa välineet tietokannan lukemiseen. Haetuista tiedoista muodostetaan kurssi- ja opetus-olioita.

OSA I Aloitetaan. Oppitunti. 1. PHP: Kotisivusta portaaliin 2. PHP:n asentaminen 3. Ensimmäinen skriptisi. 17 Johdanto

Käyttöohje. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Helsingin yliopisto, TKTL Tietokantojen perusteet, s 2000 WWW-tietokantasovellukset Harri Laine 1. vapaamuotoiset tiedot

TIEDEJUTTUKURSSI FM VILLE SALMINEN

2. Sovelluksia ja sovellusprotokollia

2. Sovelluksia ja sovellusprotokollia

OPPITUNTI 21 Palvelinympäristö

NAVITA BUDJETTIJÄRJESTELMÄN ENSIASENNUS PALVELIMELLE

Ohjelmoinnin perusteet Y Python

Visma Avendon asennusohje

2. Sovelluksia ja sovellusprotokollia

Toimintaympäristön kuvaus. LTC-Otso Myyjän työkalu (POC)

12 Kohti seittiohjelmointia

Käyttötilastot - maaliskuussa 2007

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

2 Web-lomakkeet. HTML-lomakkeet. Lomakkeiden perusteet

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python

Ohjelmoinnin perusteet Y Python

Mark Summary Form. Tulospalvelu. Competitor No Competitor Name Member

SQL Buddy JAMK Labranet Wiki

Microsoft Visual Studio 2005

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Ohjelmoinnin peruskurssien laaja oppimäärä

Yleinen ohjeistus Windows tehtävään.

Julkinen. Suomen Pankin ja Finanssivalvonnan suojattu sähköposti: ulkoisen käyttäjän ohje

Kieliversiointityökalu Java-ohjelmistoon. Ohje

18 LIITTYMÄT MUIHIN JÄRJESTELMIIN

Tyylien käyttö. <LINK href="mystyle.css" rel="stylesheet" type="text/css"> 5 WWW-hypermedian perusta: HTML

Lisenssin hakeminen PTC:n verkkosivun kautta

Luento 3. Jouni Ikonen - Jouni.Ikonen lut.fi

OPPITUNTI 19 Tilan tallentaminen evästeiden ja kyselymerkkijonojen avulla

Ohjelmoinnin perusteet Y Python

Mark Summary Form. Taitaja Skill Number 205 Skill Tietokoneet ja verkot. Competitor Name

Lomake kannattaa asemoida taulukkoon: table. Silloin selitteet ja kentät saadaan sarakkeisiin. Kenttien ulkoasu voidaan määritellä tyyleillä.

Johdatus ohjelmointiin

Testaussuunnitelma. PUSU-ryhmä. Helsinki Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Miten Internet toimii. Tuomas Aura T Johdatus tietoliikenteeseen kevät 2010

Valppaan asennus- ja käyttöohje

Ohjelmoinnin perusteet Y Python

Tiedostojen siirto ja FTP - 1

Ylläpitoalue - Etusivu

SuomiCom-sähköpostiasetukset Microsoft Outlook 2016

WEIKKA. Asennus opas. Hannu-Matti Lemettinen HML Productions

Transkriptio:

Taustaa CGI-ohjelmointi CGI = Common Gateway Interface Hyvin yksinkertainen ja helppo tapa toteuttaa dynaamisuutta ja interaktivisuutta htmldokumentteihin Kehitetty tiedon siirtoon palvelimen ja asiakasselaimen välillä Tyypillisin CGI-sovellus on HTML-lomake, jonka täytettyään käyttäjä voi lähettää tiedot palvelimelle webselain httppyyntö HTML vastaus Kuva 1:CGI-ohjelmisto www palvelin Ympäristömuut tujat +data HTML-sivu CGI-ohjelma STDIN STDOUT palvelimen tietokannat Kuten kuvasta 1. näkyy CGI-ohjelma käynnistyy web-palvelinohjelmiston kautta Palvelinohjelmisto välittää CGI-ohjelmalle joukon ympäristömuuttujia ja selaimen lähettämät syöttötiedot Syöttötiedot johdetaan standardisyöttövirtaan (kuvassa STDIN) Tulostus standarditulostusvirtaan (kuvassa STDLIST) CGI-ohjelman tulostuksen tulee olla web-selaimen ymmärtämää muotoa eli HTML, XHTML, jpg tai gif grafiikkaa jne... Web-palvelinohjelmisto lähettää CGI-ohjelman tulostuksen sellaisenaan selaimelle Selain ei erota millään lailla CGI-ohjelman tuottamaa sivua staattisesta HTML-sivusta

Palvelimen ja asiakasselaimen välinen yhteys muodostetaan sockettien avulla socket on verkon yli luotava yhteys, joka loogisesti toimii kuin tiedosto, johon voidaan kirjoittaa ja lukea. Yhteydessä noudatetaan määrämuotoa eli http-protokollaa Katso http://staff.cs.utu.fi/kurssit/tietokoneverkot/nwluento14.pdf CGI-ohjelmoinnin etuja/haittoja Edut yksinkertainen tapa toteuttaa tiedonvälitys asiakkaalta palvelimelle ja takaisin ei sidoksissa määrättyyn ohjelmointikieleen lähdekoodi pysyy piilossa käyttäjältä Haitat Hidas tapa toteuttaa dynaamisuutta html-sivuihin, jos vertaa esim. JavaScriptiin Turvallisuus usein ohjelmoijan vastuulla Vaatii usein oikeuksia palvelinohjelmiston asetusten muuttamiseen Hieman työläämpi ohjelmoitava verrattuna ASP,PHP yms. Pyyntö Usein web-palvelimet on konfiguroitu siten, että ohjelmat toimivat vain tietyissä hakemistossa Palvelin saa selaimelta http-protokollan mukaisen pyynnön: GET /cgi-bin/welcome.cgi HTTP/1.1 Accept: www/source Accept: text/html User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT ) From: penrii@it.utu.fi Vastaus Pyynnön saatuaan web-palvelin käynnistää vastaavan ohjelman Ohjelma käyttää palvelinkoneen resursseja siis muistia tiedostoja, kiintolevyä yms. Ohjelman standardisyöttövirtaan tekemä tulostus ohjataan www-selaimelle, kun ohjelma on pysähtyny Vastauksen http-protokollan mukainen alku: HTTP/1.1 200 OK Date: Tuesday, 11-March-03 12:25 GMT Server: Apache/1.3.23 (Unix) AxKit/1.5 mod_perl/1.26 MIME-version: 1.0 Content-type: text/html Content-length: 2000

Ohjelmointikielen valinta CGI-ohjelmointi on kielen suhteen riippumaton, mutta seuraavia ominaisuuksia valitulla kielellä tulisi olla Helppo tekstin manipulointi Helpot liittymät ohjelmistoihin ja ohjelmistokirjastoihin Ympäristömuuttujien käsittely Ensimmäinen cgi-ohjelma perl-versio: #!/usr/bin/perl print Content-type: text/html\n\n ; print <html>\n<head><title> ; print Eka cgi-ohjelma ; print </title></head>\n ; print <body><h1>eka ohjelma</h1></body>\n ; print </html>\n ; exit 0; http://bioinf.uta.fi/cgi-bin/welcome.cgi http-protokollan mukaisista vastausmäärittelyistä vain Content-type-määrittely tarvitaan, sillä kaiken muun hoitaa serveriohjelmisto Huom: Content-type määrittelyn jälkeen tarvitaan vähintään kaksi rivinvaihtoa Selaimen kannalta skriptin welcome.cgi tuottama sivu ei poikkea mitenkään staattisesta web-sivusta Yleisesti CGI-ohjelman serveriltä saama tieto sisältää kolmenlaista informaatiota Asiakasohjelma-, palvelinohjelma- ja käyttäjäinformaatiota Lomakkeen ja kutsuparametrien tiedot tiedostopolkuja koskevaa tietoa Parametrien välitys (get) Niukka-peli http://dna.uta.fi/cgi-bin/niukka.cgi?34+77+78 Selaimen url :n yhteyteen lisätään parametrejä? ja + -merkein erotettuina Jos ohjelmaa käytetään html-lomakkeista kenttien erottimena on &-merkki, arvot erotetaan kenttien nimistä =-merkillä Huom : Esimerkistä niukka.cgi puuttuu merkkien dekoodaus

Ympäristömuuttujien käyttö http://dna.uta.fi/cgi-bin/server.cgi Eräissä tapauksissa ympäristömuuttujat sisältävät tarpeellista ja välttämätöntä tietoa CGI-ohjelman suorittamiseksi Lomake get-metodilla Staattinen http://dna.uta.fi/niukka.html On myös mahdollista luoda lomake suoraan cgi-skriptistä ja palauttaa se samalle skriptille Lomakkeen datan välittäminen getmetodilla tapahtuu ympäristömuuttujan QUERY_STRING avulla Get-metodilla voi lähettää suhteellisen pieniä informaatiomääriä Post-metodi post-metodin käsittely on monimutkaisempaa kuin get-metodilla tapahtuva tiedonvälitys Soveltuu suurienkin tietomäärien siirtämiseen Lomakkeen sisältämä tavumäärä tallentuu ympäristömuuttujaan CONTENT_LENGTH Data luetaan em. tavumäärä standardisyöttövirrasta Esimerkki http://dna.uta.fi/niukka2.html Dekoodaus Useat merkit lomakkeiden kentissä koodataan selainohjelmassa heksadesimaalimerkeiksi esimerkiksi ()[]{} ä å ö + -jne.. ennen niiden lähettämistä palvelimelle koodaus pitää purkaa kuin arvoja käytetään: sub decode { my $value=shift; $value=~tr/+/ /; $value=~s/%([\da-fa-f][\da-fa-f])/pack("c",hex($1))/eg; return $value; }

Lomakkeiden käsittelyperiaate 1. Selvitä pyynnön tyyppi (GET tai POST) tarkistamalla REQUEST_METHOD ymp. muuttuja 2. Jos GET, niin lue tieto ymp.muuttujasta QUERY_STRING 3. Jos POST, niin tarkista tiedon määrä ymp.muuttujasta CONTENT_LENGTH ja lue standardisyöttövirrasta tuo tavumäärä dataa 4. Jaa luettu data kenttiin &-merkin avulla 5. Dekoodaa merkit 6. Käsittele tieto Perlin CGI-luokka Perlin (5.8.0) mukana oleva CGI-moduli tai luokka helpottaa huomattavasti CGI-ohjelmointia Luokka sisältää metodit kaikkien HTMLelementtien luomiseen ja käsittelyyn Tässä rajoitumme lähinnä lomakkeiden käsittelyyn Lomakkeiden käsittely on jopa edellä esitettyä helpompaa CGI-modulin dokumentaatio: http://perldoc.perl.org/cgi.html moduli otetaan käyttöön käskyllä use CGI; koska moduli on tehty olio-ohjelmointityyliin luontevinta on luoda CGI olio: my $query=new CGI; Jos CGI-skripti on kutsuttu lomakkeesta POST tai GET metodilla, luonti new käskyllä merkitsee, että data luetaan ja dekoodataan Dataan pääsee käsiksi param-metodilla: $numerot=$query->param( luvut ) Lomakkeen kenttien nimet saa myös param metodilla: @names=$query->param; Lomake luodaan metodilla start_form ja lopetetaan metodilla end_form: print $query->start_form(-method=> $method, -action=>$action, -enctype=> $encoding);... lomakkeen käsittely... print $query->endform; Esimerkki http://dna.uta.fi/cgi-bin/formesim.cgi

SSI Server Side Includes Liittyy läheisesti CGI-ohjelmointiin HTML (shtml) sivulle voidaan upottaa CGIohjelmien tai eräiden ympäristömuuttujien tuloksia Toimii myös PHP ja ASP sivujen yhteyksissä Katso http://httpd.apache.org/docs/1.3/howto/ssi.html