Lomakkeiden käsittelytekniikat - Luento 5
- Luentotaltiointi
- Lomakkeen toiminta
- Lomakkeen tietojen lähettäminen vastaanottajalle
- Lomakkeen käsittely CGI-ohjelmalla
- Tekniikoita käsittelyyn ja tarkistuksiin
Luennolla käydään läpi lomakkeiden käsittelytekniikoita.
Lomakkeen toiminta

- Selainohjelma pyytää palvelimelta lomakesivun.
- Palvelin toimittaa sivun selaimelle.
- Käyttäjä täyttää ja hyväksyy lomakkeen.
- Selain lähettää lomakkeen tiedot WWW-palvelimella suoritettavalle ohjelmalle.
- Lomakkeella oleva data käsitellään ohjelman tekijän haluamalla tavalla.
Ohjelma voi tehdä esimerkiksi seuraavia toimenpiteitä:
- Erikoismerkkien käsittely (esim. ääkköset, rivinvaihdot).
- Tarkistukset syötteelle (esim. onko jonkin kenttä oikean muotoinen, onko kaikkiin kohtiin vastattu).
- Tiedot lähetetään edelleen sähköpostitse.
- Tallennetaan tietokannaksi.
- Tallennetaan suoraan osaksi jotain WWW-sivua.
- Ohjelma palauttaa käyttäjälle tietoja
- Varmistuksen tietojen lähetyksen onnistumisesta.
- Tilauksen tai palautteen sisällön.
- Lomakkeen tietojen jatkokäsittelyyn käytetään erilaisia ohjelmistoja.
Lomakkeen tietojen lähettäminen vastaanottajalle
Seuraavassa käydään läpi erilaisia tapoja lähettää lomakkeen tiedot vastaanottajalle.
Lähettämisessä käytettävät tavat
Lomakkeen tietojen lähettämiseen on kaksi erilaista metodia, joilla kummallakin on oma käyttökohteensa. Metodien välinen ero huomioidaan lomakkeen tiedot vastaanottavassa ohjelmassa. Lähetettävän tiedon muodon voi myös tarvittaessa päättää.
method
- post-metodi
- Käytetään silloin, kun ei haluta tietoja URL:n joukkoon tai kun lähetettävä tietomäärä on suuri.
- Yleensä "parempi" tapa!
- get-metodi
- Lähettää lomakkeen sisällön URL:n mukana.
http://palvelin/ohjelma.cgi?nimi=Jukka+M%E4ntyl%E4&email=jmantyla@cc.jyu.fi
- Lomakkeen tiedot siis näkyvät osoitteen perässä selainikkunassa.
- Käytetään esimerkiksi palveluissa, joihin voidaan viitata helposti myös toisilla lomakkeilla.
- Ei kannata käyttää suuremman tiedon siirtämiseen. (Kokorajoitus max. 256 merkkiä)
- Lähettää lomakkeen sisällön URL:n mukana.
enctype
- application/x-www-form-urlencoded
- Tiedot kerätään yhteen merkkijonoon.
- Lomakekentät lähetetään muodossa name=value
- Erilaiset tiedot erotetaan toisistaan & -merkillä
- Erikoismerkit (välilyönnit, skandinaaviset merkit, erikoismerkit) koodataan %XY-merkinnällä (pitkä referenssitaulukko osoitteessa http://www.w3schools.com/html/html_ref_urlencode.asp, lyhyempi Tietokone ja tietoverkot työvälineenä luento 5).
- Saatu merkkisarja täytyy parsia koneellisesti
- Oletusarvo lomaketiedon lähetysmuodoksi, ei tarvitse erikseen merkitä.
- multipart/form-data
- Kukin lomaketieto pidetään erillään.
- Erilliset lomaketiedot paketoidaan yhdeksi moniosaiseksi paketiksi.
- Tiedostojen lähettämisessä käytettävä tyyppi.
Tietojen lähettäminen suoraan sähköpostiin
Lomakkeen tiedot voidaan lähettää suoraan sähköpostiin seuraavan määrityksen avulla.
<form action="mailto:jmantyla@mit.jyu.fi" method="post"> ... </form>
Tavan käyttäminen ei kannata, ellei ole aivan pakko, koska tavassa piilee seuraavia ongelmia.
- Vaatii käyttäjältä selaimen konfigurointia!
- Ongelmia voi myös esiityä lähetettävän tiedon muodossa!
Tietojen lähettäminen ohjelmalle
Palvelimella suoritettavalla ohjelmalla mahdollistetaan tietojen jatkokäsittely mahdollisimman luotettavasti. Jos suinkin mahdollista, niin jonkinlaista ohjelmaa kannattaa käyttää tietojen vastaanottamisessa.
<form action="http://palvelin/cgi-bin/kasittelija.cgi" method="post"> ... </form>
Lomakkeen käsittely CGI-ohjelmalla
Tarvittavat tiedostot:
- laheta.txt - cgi-ohjelma, joka käsittelee ja lähettää WWW-lomakkeelta saadut tiedot sähköpostiin.
- laheta.conf - konfigurointi-tiedosto, jolla ohjataan cgi-ohjelman toimintaa.
- lomake.html - esimerkki-lomake ohjelman testaukseen
Tiedostot on siirrettävä samaan hakemistoon. laheta.txt:n nimi on muutettava muotoon laheta.cgi ja sille on annettava suoritusoikeus.
conf-tiedosto
laheta.conf-tiedostossa määritellään mihin lomakkeen tieto lähetetään ja millainen sivu näytetään lomakkeen lähettämisen jälkeen. conf-tiedoston on oltava samassa hakemistossa laheta.cgi:n kanssa.
- email-elementin sisälle tulee sähköpostiosoite, johon lomakkeen tiedot lähetetään.
- h1, title ja p-elementteihin voi kirjoittaa tekstiä, jotka tulevat kyseisinä elementteinä lomakkeen käsittelyn jälkeiseen palautesivuun. Vaihtoehtoisesti url-elementteihin sisälle voi määritellä kokonaan oman palautesivun osoitteen.
- css-elementtiin voi määritellä palautesivulla käytettävän css-tiedoston.
Erityiskentät
- lahettajan_nimi-niminen (name-ominaisuus) kenttä tulee käsittelijän lähettämän sähköpostin lähettäjän nimeksi (engl. From)
- lomake_lahettaja-kenttä tulee käsittelijän lähettämän sähköpostin lähettäjän e-mail-osoitteeksi. Lomakkeen tiedot lähetetään kopiona myös lomakkeen täyttäjälle tässä kentässä olevaan osoitteeseen.
- Arvot voidaan määritellä seuraavien piilokenttien avulla.
<input type="hidden" name="lomake_lahettaja" value="email_osoite@palvelin.fi" /> <input type="hidden" name="lahettajan_nimi" value="Lähettäjän nimi" />
- Jos kysyt lomakkeella käyttäjältä sähköpostiosoitteen ja/tai nimen, niin voit käyttää edellisiä kenttiä piilottamattomina. Tällöin
sähköpostitse tulevassa viestissä näkyy lähettäjän sähköpostiosoite ja/tai lähettäjän nimi. Esimerkiksi:
<label for="nimi">Lomakkeen täyttäjän nimi:</label> <input type="text" id="nimi" name="lahettajan_nimi" value="Lähettäjän nimi" /> <label for="sposti">Lomakkeen täyttäjän sähköpostiosoite:</label> <input type="text" id="sposti" name="lomake_lahettaja" value="email_osoite@palvelin.fi" />
- Kenttää ei siis välttämättä tarvitse käyttää piilokenttänä!
CGI-ohjelmien mukana tulevat tietoturvaongelmat
Ohjelmia käytettäessä on varmistettava, ettei käyttäjä pääse tekemään ohjelmalla muuta kuin mitä sillä on tarkoitettu tehtävän.
- Jokainen käyttäjä voi tehdä oman lomakkeen, jolla kutsuu tekemääsi CGI-ohjelmaa!
- Tiedostojen ja hakemistojen oikeudet oikein!
- Hakemistolle kaikille ainoastaan ajo-oikeus (x).
- Tiedostolle kaikille ainoastaan ajo-oikeus (x).
- Ei oikeuksia tarpeettomasti millekään ryhmälle.
- Käyttäjän syöte tutkittava ainakin seuraavien erikoismerkkien varalta.
& ; ´ ` \ " * ? ~ < > ^ () [] {} $ \n \r - Ymmärrä valmiiden ohjelmien toiminta ennen käyttöönottoa!
- Lomakkeelta tulevia asioita ei saa laittaa suoraan komentoriville!
- Kokoa skriptit yhden hakemiston alle.
- Älä pidä skriptien keskeneräisiä versioita näkyvillä.
- Käytä käännettäviä kieliä tulkittavien sijaan, jos mahdollista.
Tekniikoita käsittelyyn ja tarkistuksiin
Vuorovaikutteisuutta ja tiedon käsittelyä voidaan hoitaa eri tyyppisillä tekniikoilla, joilla kullakin on omat vahvuutensa. Tekniikat voidaan jakaa kahteen ryhmään: palvelinpuolen ja selainpuolen tekniikoihin. Vaihda esimerkeissä dokumentin lomake.html form-elementin action- attribuuttiin sopiva ohjelma.
Palvelinpuolen tekniikat
Palvelinpuolen tekniikat toteutetaan siten, että sivujen luonti ja käsittely hoidetaan palvelimessa ajettavalla ohjelmalla. Ohjelma käsittelee tietyllä tekniikalla tehtyä sivustoa suhteessa käyttäjän antamiin tietoihin ja palauttaa tavallisen XHTML-sivun. Palvelinpuolen tekniikoiden etuja ovat mahdollisuus tiedon tallentamiseen ja se, ettei selaimen tarvitse tukea muuta kuin standardia XHTML:ää.
CGI
CGI (Common Gateway Interface) määrittelee miten ja millaista tietoa voidaan välittää WWW-palvelimelta tietoa käsittelevälle ohjelmalle. Itse ohjelma toteutetaan jollain ohjelmointikielellä, kuten esimerkiksi Perl, Python, C ja C++. Näistä suosituin on tulkattava kieli Perl (ohjelmaa ei käännetä konekielelle vaan palvelimeen on asennettava Perl- tulkki).
Yksinkertainen CGI-esimerkki - Lomake
PHP
PHP (HyperText Preprocessor) on dynaamisten WWW-sovellusten tekemiseen tarkoitettu tekniikka. PHP toimii siten, että ohjelmakoodia upotetaan XHTML-sivun sekaan. Palvelimella oleva PHP-tulkki esiprosessoi muuttujien ja muualta haettavien tietojen perusteella koodit. Koodi voi lisätä sivuun lisää XHTML-elementtejä tai tehdä jonkun muun toimenpiteen (esimerkiksi tallentaa tietoa tietokantaan).
- php.net - tietolähde PHP:n maailmaan
- WWW-sovellukset-kurssi.
ASP
ASP on PHP:n kaltainen palvelimessa käsiteltävä ohjelmakoodin upotustekniikka, jota käytetään lähinnä Microsoftin palvelimissa (saatavilla myös Apacheen). Ohjelmointikielenä käytetään tavallisesti VBScriptiä.
ASP-esimerkki - Lomake - kokeile kilix-palvelimella
Servletit ja JSP
Servletit ovat pieniä palvelimella ajettavia Java-kielellä tehtyjä ohjelmia, joilla voidaan luoda dynaamisesti sivuja ja tehdä muita palvelinkoneella suoritettavia toiminteita. JSP on PHP:n ja ASP:n kaltainen upotustekniikka, jossa koodi kirjoitetaan XHTML:n sekaan. JSP-tulkki kääntää sivut suoritettaviksi Servleteiksi.
Selainpuolen tekniikat
Selainpuolen tekniikoilla voidaan toteuttaa monipuolista vuorovaikutteisuutta ja toiminnallisuutta sivustolle. Esimerkiksi lomakkeen tarkistukset voidaan tehdä sopivilla selaintekniikoilla. Ongelmana on, että selainpuolen tekniikat joudutaan yleensä asentamaan erikseen, jolloin ei voi olla varma toimiiko sivusto kaikilla käyttäjillä. Lisätekniikat aiheuttavat myös lisäriskejä tietoturvan kannalta. Jotkut tekniikat vaativat myös nopeaa internetyhteyttä.
Java-appletit
Java-appletit ovat Java-ohjelmointikielellä toteutettuja WWW-sivuille sijoitettavia pieniä ohjelmia. Vaatii toimiakseen käyttöjärjestelmään asennetun Java Runtime Environment (JRE) -ympäristön. Opera- ja Mozilla- selaimissa se tulee mukana mikäli niin haluaa, mutta Microsoft on poistanut viimeisimmistä Internet Explorer -selaimistaan kokonaan tuen Java-appleteille.
- Hello World!
- Java
- Hyödyllinen Java-esimerkki (Samuli Ikonen)
- Complex javastuff
JavaScript
JavaScript on vain selaimissa toimiva skriptikieli, jolla voidaan toteuttaa pieniä www-selaimella toimivia toimintoja kuten tarkistaa lomakkeen syöttötietoja ennen niiden lähettämistä eteenpäin. Javascriptillä ei ole mitään tekemistä Javan kanssa. Vaatii toimiakseen selaimelta JavaScript-tuen.
- Pieni esimerkki
- Tapahtumankäsittely XHTML 1.1:ssä
- ECMAScript standardoitu versio JavaScriptistä
- JavaScript Guide
- JavaScript
- JavaScript Sample Code
- JavaScript Source
- Form Totals
ActiveX
ActiveX on sarja tekniikoita ohjelmakomponenttien liittämiseksi verkkoon. ActiveX-komponentteja voidaa ohjelmoida esimerkiksi Delphi-, Builder- tai Visual Basic -kehitysympäristöillä. Komponentteja ja lomakkeita voidaan ohjailla VBScript- tai JavaScript-kielillä. Internet Explorer tukee ActiveX-ominaisuuksia, Mozillaan erikseen asennettavissa, Opera ei tue.
- Microsoft ActiveX
- JavaBeans ja ActiveX - Jarno Mynttinen
Flash
Flash-sovellukset ovat WWW-sivuille upotettuja vektorigrafiikalla toteutettuja multimediaesityksiä. Flash-esitykseen voidaan lisätä vuorovaikutteisia elementtejä, esim. kyselylomakkeita. Lomakkeen käsittely on tehtävä kuitenkin jollain muulla tekniikalla. Käytetään paljon esimerkiksi mainoksissa. Vaatii toimiakseen selaimeen asennetun Flash-laajennuksen. Lisää Flashin multimedia- ominaisuuksista luennolla 7.

Käyttäjien kommentit