Lomakkeiden käsittely ja SSI - Demo 7
- Mallivideot
- Lomaketiedot sähköpostiin laheta.cgi-ohjelmalla
- Haku omalle sivulle
- SSI (Server Side Includes)
Mallivideot
- tiedot_sahkopostiin.wmv 3.8M
- haku.wmv 3.2M
- ssi.wmv 20.4M
Ongelmia videon katselussa?
Näissä demoissa otetaan käyttöön lomakkeiden käsittelyyn tarkoitettu CGI-ohjelma, tehdään Googlea käyttävä hakulomake ja harjoitellaan SSI:n käyttöä.
Lomaketiedot sähköpostiin laheta.cgi-ohjelmalla
Laitetaan demo 6:ssa tehdyn lomakkeen tiedot menemään sähköpostiin:
- Käy Korppi-järjestelmässä kurssin sivuilla hakemassa tunnus ja salasana kohdasta Lomakkeenkäsittelijä. Suorat linkit Korppiin kurssisivuille: kevään 2010 lähiopetus, lukuvuoden 2009-2010 verkkokurssi.
- Avaa uuteen välilehteen osoite (tarvitset äsken hakemiasi tunnuksia, jotta sivu aukeaa)
- Siirry kohtaan Osoitteen lisääminen. Kirjoita siihen oma yliopiston sähköpostiosoitteesi ja napauta painiketta Lähetä.
- Siirry muokkaamaan W:\www\demo6\-hakemistossa olevaa lomaketta. Muokkaa lomakkeen
action
-ominaisuuden arvoa ja laita siihen:<form action="http://appro.mit.jyu.fi/cgi-bin/www/laheta.cgi" method="post"> ... </form>
- Sijoita johonkin väliin lomaketta
fieldset
-elementin sisällä piilokenttä, joka kertoo, mihin sähköpostiosoitteeseen tiedot pitää lähettää. Huomaa, ettäname
-ominaisuuden arvon on oltava lomake_email javalue
-ominaisuuden arvon sähköpostiosoite juuri siinä muodossa kuin mitä äskettäin kirjoitit lomakkeelle.<input type="hidden" name="lomake_email" value="omaosoite@jyu.fi" />
- Kokeile täyttää lomake ja lähettää se napauttamalla
Lähetä viesti
-painiketta. Nyt sähköpostiisi pitäisi tulla WWW-lomakkeelta tiedot.
Sähköpostiosoitteen valinnan voisi tehdä myös muillakin elementeillä, joiden name
-ominaisuus on lomake_email,
kuten esim. lomakkeen vastaanottaja -kohdan select
-elementillä. Tätä ei nyt kuitenkaan tehty, sillä käytössä ei ole
useita jyu.fi-päätteisiä osoitteita.
Haku omalle sivulle
Googlen avulla on helppoa lisätä haku omalle sivulle. Google ei kovin avoimesti mainosta, että haun voi kohdistaa vain tiettyyn osoitteeseen.
- Aloitetaan lisäämällä Nanonanon sivuston etusivulle (W:\www\index.html) normaali hakulomake aivan sivun alalaitaan
ennen
address
-lohkoa:<div class="haku"> <form action="http://www.google.com/search" method="get"> <div> <label for="hakusanat">Hakusanat </label> <input type="text" size="20" id="hakusanat" name="q" value="" /> <input type="submit" value="Hae" /> </div> </form> </div>
- Lomakkeen
action="http://www.google.com/search"
viittaa Googlen hakuohjelmaan. - Tekstikentän
name="q"
viittaa hakusanoihin, jotka välitetään hakuohjelmalle. - Kokeile miten haku toimii.
- Lomakkeen
- Lisätään lomakkeen sisemmän
div
-elementin sisälle vielä muutama lisämääritys:<input type="hidden" name="ie" value="iso-8859-1" /> <input type="hidden" name="oe" value="iso-8859-1" /> <input type="hidden" name="hl" value="fi" /> <input type="hidden" name="lr" value="lang_fi" />
- Näillä määrityksillä tekstin koodaus saadaan sopimaan suomalaiseen merkistöön ja haun sekä Googlen käyttöliittymän kieleksi määrätään suomi.
- Kokeile miten hakusivu muuttuu.
- Hakutuloksiin tulee vielä paljon muitakin sivuja kuin Nanonanon sivut. Rajoitetaan hakua lisäämällä
seuraava parametri:
<input type="hidden" name="as_q" value="site:users.jyu.fi/~omatunnuksesi/www/" />
- as_q-niminen muuttuja lisää muiden hakusanojen lisäksi uuden hakutermin
site:users.jyu.fi/~omatunnuksesi/www/
. site
-määreellä voidaan rajoittaa hakua vain tiettyyn WWW-sivuun tai sivustoon. Sivun osoite on tultava heti kaksoispisteen jälkeen.- Kokeile hakulomakkeen toimintaa. Luultavasti Google ei löydä mitään, koska on erittäin epätodennäköistä, että Google olisi käynyt indeksoimassa demotehtäväsivujasi. Tämä johtuu siitä, että sivuillesi ei ole mistään linkkejä, ja vaikka olisikin, niin hakuroboteilla kestää aikansa ennenkuin ne ehtivät vierailemaan sivuillasi.
- Voit kokeilla lomakkeen toimintaa vaihtamalla haun kohteeksi esim.
site:appro.mit.jyu.fi/www/
.
- as_q-niminen muuttuja lisää muiden hakusanojen lisäksi uuden hakutermin
- Siirretään vielä hakupalkki oikeaan ylälaitaan. Avaa tyylisivu editoitavaksi Web
Developer -työkaluriviltä. Lisää haku-luokalle
position: absolute;
-ominaisuus ja siirrä setop
- jaright
-ominaisuuksilla sopivaan paikkaan. Tallenna muutokset tiedostoondemo2.css
.
SSI (Server Side Includes)
Samanlaisena toistuvien elementtien lisääminen ja muokkaaminen on vaivalloista, sillä samaa koodia joudutaan normaalisti kopioimaan useille sivuille. Toistuvia osia ovat esimerkiksi vakionavigointipalkki ja päivitystiedot. Parempi ratkaisu on keskittää kaikille sivuille yhteiset osat samaan paikkaan ja liittää ne automaattisesti kullekin sivulle sopivaan paikkaan. Tähän voidaan käyttää esimerkiksi Apache-palvelimissa toimivaa SSI-tekniikkaa. WWW-palvelin tulkitsee dokumenttiin upotetut komennot ennen sivun lähettämistä selaimelle.
Tehtävä: Helpotetaan Nanonanon sivuston ylläpitoa siirtämällä kaikille dokumenteille yhteinen navigointi yhteen tiedostoon, josta sitä on helppoa keskitetysti ylläpitää.
- Aloita uusi täysin tyhjä dokumentti (ilman XHTML-deklaraatioita).
Kopioi tähän dokumenttiin Nanonanon etusivulla olevan
<div class="navbar">...</div>
-osan lähdekoodi. -
Muuta kaikki navigointipalkin linkit puoliabsoluuttisiksi,
jotta samat linkit toimivat miltä tahansa Nanonanon sivulta. Esim:
<li><a href="/~omatunnus/www/artikkelit/">Artikkelit</a></li>
- Tallenna navigointipalkki navbar.include-nimellä Nanonanon kotisivuhakemistoon juureen W:\www\.
-
Muuta W:\www\-hakemistossa olevan index.html-tiedoston nimeksi index.shtml.
- Useissa Apache-palvelimissa oletuksena .shtml-päätteiset tiedostot prosessoidaan SSI-komentojen varalta. Hakemistosta palautetaan yleensä index.shtml-tiedosto, jos hakemistossa ei ole index.html-tiedostoa. Voimme siis käyttää hakemistoissa aivan hyvin index.shtml-nimisiä tiedostoja, koska linkkimme viittaavat hakemistoihin eivätkä index.html-tiedostoihin.
- Muuta index.shtml-tiedostoa siten, että korvaat
navbar-lohkon seuraavalla SSI-komennolla:
<!--#include virtual="/~omatunnuksesi/www/navbar.include"-->
- Kokeile selaimella miten etusivu toimii nyt selaimessa:
http://users.jyu.fi/~omatunnus/www/
Jos kaikki meni oikein, niin edellä lisäämäsi SSI-komennon tilalla pitäisi selaimessa näkyä ihan normaali navigointipalkki, jonka WWW-palvelin lisäsi navbar.include-tiedostosta SSI-komennon kohdalle.
- Varmista, että navigointipalkin linkit toimivat. Kokeile kaikkien linkkien toimintaa itse tai tarkista sivu W3C:n Link Checkerillä.
- Kokeillaan lisätä SSI:n avulla myös dokumentin muutosaika sivulle. Siirrä index.shtml-tiedoston lopussa
oleva
strong
-elementti poisaddress
-lohkosta ja sijoita sep
-elementin sisälle. Korvaa aikamääre rivillä:<!--#config timefmt="%Y-%m-%d %T"--><!--#echo var="LAST_MODIFIED"-->
- Ensimmäinen kommentti määrää SSI:n päivämäärämuotoilun.
- Jälkimmäinen kommentti aiheuttaa varsinaisen muutosajankohdan lisäämisen.
- Kokeile selaimella ilmestyikö muutosaika sivulle.
- HUOM! Jos muutosajankohta tai muut SSI-komentosi eivät tunnu toimivan, niin varmista että hakemistossasi ei ole enää index.html- ja/tai index.htm-nimisiä tiedostoja. Jos niitä löytyy, niin silloin index.shtml-tiedostoja ei prosessoida hakemiston oletustiedostoiksi. Tällöin kyseiset index.html- ja/tai index.htm-tiedostot täytyy joko nimetä uudelleen tai poistaa, jotta index.shtml-tiedoston saa toimimaan hakemiston oletustiedostona.
- Tee demo2.css:ään asiayhteydestä riippuva tyyli, joka siirtää
address
-lohkon jälkeisenp
-elementin oikeaan laitaanaddress
-lohkon alapuolelle. Pienennä muutosajankohdan tekstiaddress
-lohkon tekstin kokoiseksi. - Siirrä
address
-lohko omaan tiedostoon address.include. Lisää se etusivun loppuun SSI-komennolla:<!--#include virtual="/~omatunnuksesi/www/address.include"-->
- Miksi päivitysajankohtaa ei voitu siirtää suoraan address.include-tiedostoon?
- Avaa pääteyhteys esimerkiksi PuTTY-ohjelmalla jalava.cc.jyu.fi-palvelimeen (tai halava.cc.jyu.fi).
Siirry
cd
-komennolla symbolisen html-linkin alla olevaan www-hakemistoon. - Aja komento
nano -w .htaccess
Komento luo
.htaccess
tiedoston, jolla voidaan ohjata Apache-palvelimen toimintaa hakemistokohtaisesti. - Lisää .htaccess-tiedostoon seuraavat asetukset:
AddHandler Server-Parsed .html AddType text/html .html
- Ensimmäisellä direktiivillä käsketään palvelimen etsiä mahdolliset SSI-komennot kaikista .html-päätteisistä tiedostoista.
- Toinen määre varmistaa, että prosessoinnin jälkeenkin tiedostot jaetaan oikealla mediatyypillä. Apache 2 -WWW-palvelin jakaa oletuksena .shtml-päätteiset XHTML-tiedostot text/xml-muodossa, mikä ei sovi kaikille selaimille ja validaattoreille, joten pitää määrätä mediatyypiksi text/html.
- Tavallisia .html-päätteisiä tiedostoja ei yleensä kannata automaattisesti parsia SSI-komentojen varalta, koska se aiheuttaa palvelimelle raskasta ja turhaa työtä. Tässä tehtävässä kaikkiin .html-tiedostoihin on kuitenkin tarkoitus lisätä navigointipalkki automaattisesti, joten operaatio on perusteltu.
- Tallenna lopuksi tiedosto valinnalla Ctrl+O ja poistu tiedoston muokkauksesta valinnalla Ctrl+X.
- Lisää SSI-komentojen avulla navigointipalkki, tekijätiedot ja muutosajankohta ainakin artikkelit-, opiskelu- ja linkit-hakemistoissa oleville sivuille.
- Varmista W3C:n Link Checker -ohjelmalla, että navigointilinkit toimivat varmasti kaikilla alasivuilla.
Käyttäjien kommentit