hyväksymispäivä arvosana arvostelija Tietokantasovelluksen toteutusdokumentti Tuomas Husu <thusu@cs.helsinki.fi> Helsinki 21.4.2008 582203 Tietokantasovellus, kevät 2008 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Sisältö i 1 Johdanto 1 1.1 Järjestelmän tarkoitus.......................... 1 1.2 Toimintaympäristö............................ 1 1.3 Rajaukset................................. 2 1.4 Optiot................................... 2 1.5 Toteutusympäristö............................ 2 2 Ohjelmiston yleisrakenne 3 2.1 Toimintaperiaate............................. 4 2.2 Käyttöliittymä.............................. 5 2.3 Tietoturva................................. 6 3 Järjestelmän komponentit 7 3.1 Dynaamiset HTML-pääsivut....................... 7 3.1.1 Etusivu.............................. 7 3.1.2 Ylläpitosivu............................ 8 3.1.3 Sisäänkirjautumissivu....................... 9 3.1.4 Uloskirjautumissivu........................ 10 3.2 Dynamiset normaalikäyttäjän HTML-sisältösivut........... 11 3.2.1 Selaa kysymyksiä ja vastauksia................. 11 3.2.2 Uusimmat kysymykset...................... 11 3.2.3 Haku................................ 11 3.2.4 Jätä kysymys........................... 12 3.2.5 Yhteystiedot............................ 12 3.2.6 Virhe................................ 12 3.3 Dynamiset ylläpitäjän HTML-sisältösivut................ 12 3.3.1 Uudet kysymykset........................ 12 3.3.2 Kaikki kysymykset........................ 13
ii 3.3.3 Aihepiirit............................. 14 3.3.4 Syötä uusi kysymys........................ 14 3.3.5 Omat tiedot............................ 14 3.3.6 Käyttäjätunnukset........................ 15 3.4 Asetustiedostot.............................. 15 3.5 Kuvatiedostot............................... 15 3.6 Tyylitiedostot............................... 16 3.7 JavaScript-tiedostot............................ 16 4 Asennustiedot 16 5 Käyttöohje 19 6 Post Mortem -analyysi 19 Liitteet 1 Tehtävänanto
1 Johdanto 1 Harjoitustyön tarkoituksena on perehtyä tietokantaohjelmointiin ja yksinkertaisten verkkosovellusten rakenteisiin sekä tietokantapohjaisen verkkosovelluksen suunnitteluun, toteutukseen ja dokumentointiin. 1.1 Järjestelmän tarkoitus Opintoneuvonnan UKK (usein kysytyt kysymykset, engl. FAQ, frequently asked questions) -verkkopalvelun avulla opiskelijat voivat etsiä vastauksia usein esitettyihin opiskeluasioita koskeviin kysymyksiin. Usein kysyttyjen kysymysten listat saivat alkunsa internetin uutisryhmistä, jossa niillä pyrittiin vähentämään ryhmään saapuvien samankaltaisten kysymysten käsittelyä. Opintoneuvonnan UKK -verkkopalvelun avulla opiskelijat voivat löytää nopeasti ratkaisun ongelmiinsa tarvitsematta henkilökohtaista neuvontaa. Halutessaan opiskelija voi jättää järjestelmään oman kysymyksensä yhteystietoineen. Opintoneuvojat voivat kirjautua tunnuksillaan järjestelmään ja vastata esitettyihin kysymyksiin joko yksityisesti (esimerkiksi sähköpostitse) tai julkaisten kysymys vastaus -parin UKK-listalla. Julkaistavat kysymykset opintoneuvojat jakavat luomiinsa aihepiireihin, jolloin kysymysten etsiminen helpottuu. 1.2 Toimintaympäristö Tietokantasovellus toteutettiin vapaan lähdekoodin LAMP-alustalle (Linux-Apache- MySQL-PHP) ja se vaatii siis toimiakseen Apache HTTP Server -WWW-palvelimen, PHP-ohjelmointikielen sekä MySQL-tietokantapalvelimen. WWW-palvelimena käytetään Apachea, koska se on suorituskykyinen ja luotettava sen lisäksi, että se on käytetyin WWW-palvelinohjelma maailmassa. Tietokantana on MySQL, joka on ilmainen ja suorituskykyinen relaatiotietokanta. PHP on helppokäyttöinen ja suosittu dynaamisten verkkopalveluiden tuottamiseen tarkoitettu ohjelmointikieli. Sekä Apache, PHP että MySQL ovat niin sanottuja cross platform -ohjelmistoja, eli ne toimivat laajasti sekä Windows- että Unix-pohjaisissa käyttöjärjestelmissä. Verkkopalvelun käyttäjä tarvitsee järjestelmää käyttääkseen Javascriptiä tukevalla WWW-selaimella varustetun laitteen, jolla on muodostettavissa verkkoyhteys järjes-
2 telmän palvelimeen. Sisäänkirjautuminen (ja siten ylläpito-ominaisuudet) vaativat selaimelta evästeiden (engl. cookie) hyväksymisen. Järjestelmää testattiin yleisimmillä käyttöjärjestelmillä (Windows, Linux, Mac OS X) ja yleisimmillä WWW-selaimilla (MSIE, Firefox, Safari). Mobiililaitteita tai muita erikoistapauksia ei huomioitu suunnittelussa eikä toteutuksessa. 1.3 Rajaukset Alkuperäisessä tehtävänannossa (liitteenä) mainittu kysymysten osoittaminen jollekin tietylle opintoneuvojalle jätettiin toteuttamatta, koska opiskelijat eivät oletettavasti tiedä kuka osaa ja ehtii parhaiten heidän kysymyksiinsä vastata. Tehtävänannosta poiketen aihepiirejä ei järjestetä minkään erillisen indeksin mukaan, vaan ne näytetään aina aakkosjärjestyksessä. 1.4 Optiot Tehtävänannossa mainittujen toimintojen lisäksi toteutettiin ylläpitäjälle mahdollisuus muokata omia tietojaan, hallinnoida käyttäjätunnuksia, arkistoida kysymyksiä myöhempää julkaisua varten sekä mahdollisuus muokata kysymyksiä ja vastauksia myöhemminkin. Opiskelijoiden on tehtävänannossa mainittujen toimintojen lisäksi mahdollista hakea kysymyksiä ja vastauksia haluamillaan hakuehdoilla. 1.5 Toteutusympäristö Toteutusympäristönä on Tietojenkäsittelytieteen laitoksen Alkokrunni-palvelin (url http://db.cs.helsinki.fi/). Palvelinpään toteutusympäristön käyttöjärjestelmä on Linux (Fedora 7), HTTPpalvelin Apache (versio 2.2.6) ja toteutuksen osalta www-ohjelmointikielenä on PHP (Hypertext Preprocessor, versio 5.2.5) ja tietokantapalvelimena MySQL (versio 5.0.27).
2 Ohjelmiston yleisrakenne 3 Ohjelmisto koostuu yhdeksästätoista (19) dynaamisesta, PHP-koodia sisältävästä HTML-sivusta, kolmestatoista (13) kuvatiedostosta, kahdesta (2) CSS-tyylitiedostosta, yhdestä (1) JavaScript-tiedostosta ja WWW-palvelimen asetustiedostosta. Kuva 1: Järjestelmän rakennekaavio. Selaimella suoraan kutsuttavia sivuja on neljä (4): etusivu index.php, ylläpitosivu admin.php, sisäänkirjautumissivu login.php ja uloskirjautumissivu logout.php. Etusivuun ja ylläpitosivuun sisällytetään sisältösivuja käyttäjän tekemien valintojen perusteella. Sisältösivujen(kin) käyttäjälle tulostettava sisältö vaihtelee käyttäjän valintojen perusteella, joten kaikkien mahdollisten näkymien esittäminen yhdessä
4 kaaviossa on hyvin hankalaa. Kuvassa 1 on esitetty järjestelmän rakenne. Tietokantayhteyden avaamiseen ja sulkemiseen liittyvät tiedostot (asetukset.php, avaa_db.php ja sulje_db.php) on sisällytetty sivuihin index.php, login.php ja admin.php. Käyttäjä voi kutsua myös sivua logout.php, mutta se ohjaa käyttäjän sivulle login.php tulostamatta mitään. Etusivuun sisällytetään viisi (5) erilaista sivua riippuen käyttäjän valinnoista. Ylläpitosivuun sisällytettäviä sivuja on kuusi (6). 2.1 Toimintaperiaate Käyttäjän näkökulmasta tietokantasovellus koostuu vain kolmesta tiedostosta, joita hän voi selaimellaan ladata. Tiedostossa index.php on kaikki opiskelija-käyttäjäryhmän eli ilman kirjautumista suoritettavat käyttötapaukset. Sisäänkirjautumiselle on oma sivunsa login.php ja onnistuneen kirjautumisen jälkeen käyttäjä ohjataan kaikki ylläpitoon liittyvät käyttötapaukset sisältävälle sivulle admin.php. Kuva 2: Sivujen toimintaperiaate (index.php). Pääsivu (index.php) tulostaa sivun perusrakenteen, avaa (ja lopuksi sulkee) tietokantayhteyden ja sisällyttää käyttäjän kutsuman sisältösivun sille varattuun tilaan
(kts. kuva 2). Ylläpitosivu (admin.php) edellä mainittujen lisäksi tarkistaa kirjautumisen. 5 2.2 Käyttöliittymä Kuvassa 3 on esitetty käyttäjän navigointimahdollisuudet järjestelmässä. Kuva 3: Käyttöliittymäkaavio.
6 2.3 Tietoturva Tietokantasovelluksen turvallisuuteen pyrittiin kiinnittämään huomiota, vaikka se ei kurssin arviointiperusteissa tai oppimistavoitteissa etusijalla ollutkaan. Käyttäjien salasanat tallennetaan tietokantaan salasanan ja tikas -merkkijonon yhdisteen 40-merkkisenä SHA-1 -tiivisteenä, jolloin tietokannan tietoihin käsiksi pääseminen (esim. varmuuskopio) ei vielä tarkoita, että järjestelmään voisi kirjautua kannasta suoraan luetulla käyttäjätunnuksella ja salasanalla. Kaikki tietokantaan menevä käyttäjän syöttämä tieto sanitoidaan SQL-injektioiden varalta PHP:n mysql real escape string- ja käyttäjän HTML-syötteiden varalta htmlspecialchars -funktioilla, joista ensin mainittu siistii syötteistä tietokannan kannalta kriittiset merkit ja jälkimmäinen korvaa HTML-merkit (mm. hakasulut) vastaavilla entiteeteillä. Ohjausrakenteiden (ts. if-else -ehtolauseiden) avulla rajataan tietokantahakuihin menevät urlin mukana (GET) tulevat parametrit vain kelvollisiin, eli tietokantahaku suoritetaan vain, jos parametri täyttää sille asetetut ehdot. Verkkopalvelun käyttöön luodulle tietokantakäyttäjätunnukselle on annettu vain tarvittavat oikeudet (insert, select, update ja delete) tietokannan tauluihin, jolloin esimerkiksi taulujen poistaminen (drop) ei onnistu vaikka hyökkääjä keksisi tavan syöttää omaa koodiaan tietokantahakuihin. Kirjautuminen tunnukselle sallitaan vain paikallisesti (localhost). Tietokantakäyttäjätunnus salasanoineen tallennetaan omaan tiedostoonsa, jonne ulkopuolisilla ei ole lukuoikeutta eivätkä tunnukset siten päädy ulkopuolisten käsiin, vaikka palvelin virhetilanteen seurauksena näyttäisi PHP-tiedoston lähdekoodin normaalitilanteessa generoitavan sivun sijasta.
3 Järjestelmän komponentit 7 3.1 Dynaamiset HTML-pääsivut 3.1.1 Etusivu Tietokantasovelluksen etusivu, PHP- ja JavaScript-koodia sisältävä dynaaminen HTML-sivu Tiedosto./index.php Tulostaa opiskelija-käyttöliittymän raamit CSS-muotoiltuna (tyylitiedosto tyyli.css) Sisältää linkit kaikkiin opiskelijan toimintoihin (sisällytettävät sisältösivut) sekä sisäänkirjautumissivulle (login.php) Avaa tietokantayhteyden, hakee ja tulostaa julkaistujen kysymysten lukumäärän, sulkee tietokantayhteyden ja vapauttaa kyselyn tuloksen varaaman muistitilan Sivuun sisällytetään käyttäjän valintojen perusteella GET-parametrina s välitetty sisältösivu (ukk, uudet, haku, kysy, yhteystiedot tai virhe); jos parametrilla ei ole arvoa tai se poikkeaa sallituista, sisällytetään oletussivu ukk. Avattu tietokantayhteys on myös sisältösivujen käytettävissä Sisällytetään kuvitukseksi sisältösivua vastaava.jpg -päätteinen kuvatiedosto
8 Kuva 4: Kuva sivusta index.php. Ympäristö Mac OS X 10.5/Safari 3.1. 3.1.2 Ylläpitosivu Tietokantasovelluksen ylläpitosivu, PHP- ja JavaScript-koodia sisältävä dynaaminen HTML-sivu Tiedosto./admin.php Tarkistaa kirjautumisen ja ohjaa sivulle login.php, jos kirjautuminen ei ole voimassa Tulostaa ylläpitäjä-käyttöliittymän raamit CSS-muotoiltuna (tyylitiedosto tyyli_mv.css) Sisältää linkit kaikkiin ylläpitäjän toimintoihin (sisällytettävät sisältösivut) sekä uloskirjautumissivulle (logout.php) käyttäjätunnuksien hallintasivulle vievä linkki näytetään vain ATK-ylläpitäjälle
9 Avaa tietokantayhteyden sisältösivujen käyttöön ja lopuksi sulkee yhteyden Sivuun sisällytetään käyttäjän valintojen perusteella GET-parametrina s välitetty sisältösivu (etusivu, kaikki, aihepiirit, uusi, tiedot tai tunnukset); jos parametrilla ei ole arvoa tai se poikkeaa sallituista, sisällytetään oletussivu etusivu. Kuva 5: Kuva sivusta admin.php. Ympäristö Windows XP/Firefox 2. 3.1.3 Sisäänkirjautumissivu Tietokantasovelluksen sisäänkirjautumissivu, PHP-koodia sisältävä dynaaminen HTML-sivu Tiedosto./login.php Tulostaa CSS-muotoillun (tyylitiedosto tyyli.css) sisäänkirjautumissivun HTML-lomakkeineen Käsittelee lähetetyn lomakkeen
10 Avaa tietokantayhteyden, tarkistaa lähetetyn tunnuksen ja salasanan Onnistuneen kirjautumisen yhteydessä asettaa istuntoon tiedon käyttäjätunnuksesta ja IP-osoitteesta ja ohjaa ylläpitosivulle admin.php Epäonnistuneen kirjautumisen yhteydessä tulostaa virheilmoituksen sivulle Kuva 6: Kuva sivusta login.php. Ympäristö Windows XP/Firefox 2. 3.1.4 Uloskirjautumissivu Tietokantasovelluksen sisäänkirjautumissivu, PHP-sivu Tiedosto./logout.php Lopettaa istunnon ja ohjaa sisäänkirjautumissivulle (login.php)
11 3.2 Dynamiset normaalikäyttäjän HTML-sisältösivut 3.2.1 Selaa kysymyksiä ja vastauksia Tiedosto ukk, osoite index.php?s=ukk Etusivun oletussisältö Hakee tietokannasta aihepiirien nimet, joihin kuuluu julkaistuja kysymyksiä sekä kysymysten määrän aihepiireittäin Tulostaa aihepiirien nimet (ja kysymysten määrät) hyperlinkkeinä valikon listarakenteeseen Hakee tietokannasta aihepiiriin kuuluvat julkaistut kysymykset vastauksineen välitettäessä aihepiiri-parametrin arvona aihepiirin tunnus Vastaukset piilotetaan JavaScriptin avulla ja näytetään kysymystä klikattaessa 3.2.2 Uusimmat kysymykset Tiedosto uudet, osoite index.php?s=uudet Tulostaa valikon Hakee tietokannasta joko 10 uusinta tai viikon, kahden viikon tai kuukauden ajalta uudet kysymykset Välittää käyttäjän valinnan GET-parametrina id Tulostaa löytyneet kysymykset listarakenteeseen aihepiirin kanssa 3.2.3 Haku Tiedosto haku, osoite index.php?s=haku Tulostaa hakulomakkeen Käsittelee lähetetyn (POST) lomakkeen, hakee kannasta hakuehtoja vastaavat kysymykset ja tulostaa ne aihepiireineen
12 3.2.4 Jätä kysymys Tiedosto kysy, osoite index.php?s=kysy Tulostaa kysymyslomakkeen JavaScript-funktio laskee kysymys-kenttään syötettäviä merkkejä ja näyttää jäljellä olevien merkkien määrän (256 - n). Käsittelee lähetetyn (POST) lomakkeen, ja lisää kysymyksen tietokannan kysymykset-tauluun odottamaan vastausta Tarkistaa, että lähetetty kysymys ei ole alle yhden merkin tai yli 256 merkin mittainen, muuntaa HTML-merkit entiteeteiksi Ilmoittaa käyttäjälle lähetyksen onnistuneen 3.2.5 Yhteystiedot Tiedosto yhteystiedot, osoite index.php?s=yhteystiedot Hakee tietokannan kayttajat-taulusta opintoneuvojien (joilla on 40-merkkinen salasana) nimet ja tulostaa ne listarakenteeseen 3.2.6 Virhe Tiedosto virhe, osoite index.php?s=virhe WWW-palvelimen palauttaessa HTTP-virheen 403 (Forbidden), 404 (Not found) tai 500 (Internal server error), näyttää virhettä vastaavan virheilmoituksen; virhekoodi välitetään parametrin syy arvona 3.3 Dynamiset ylläpitäjän HTML-sisältösivut 3.3.1 Uudet kysymykset Tiedosto etusivu, osoite admin.php?s=etusivu Ylläpitosivun oletussisältö
13 Näyttää valikon listarakenteessa joko uudet (vastausta odottavat) kysymykset jättöpäivämäärineen tai ilmoituksen, että uusia kysymyksiä ei ole Valittaessa vastattava kysymys (välitetään GET-parametrina id ), tulostaa lomakkeen kysymys-, aihepiiri-, vastaus- ja hyperlinkki-kenttineen Käsittelee lähetetyn (POST) lomakkeen ja joko julkaisee, arkistoi tai poistaa kysymyksen mahdollisine vastauksineen Tarkistaa, että kysymys ja vastaus ovat pituudeltaan kelvollisia ja että jos hyperlinkki on annettu, se on yli 10 merkkiä pitkä, ja tulostaa virheilmoituksen tarvittaessa; muuntaa HTML-merkit entiteeteiksi Ilmoittaa käyttäjälle lomakkeen lähettämisen jälkeen toimenpiteen onnistumisesta 3.3.2 Kaikki kysymykset Tiedosto kaikki, osoite admin.php?s=kaikki Tulostaa listarakenteeseen aihepiirit (ja kysymysten lukumäärät), joihin kuuluvia kysymyksiä löytyy tietokannasta Aihepiiriä klikattaessa välittää aihepiirin tunnuksen GET-parametrina aihepiiri, ja tulostaa listan aihepiiriin kuuluvista kysymyksistä Kysymysten päiväykset näytetään joko keltaisella tai vihreällä korostettuna riippuen siitä, onko kysymys arkistoitu vai julkaistu Kysymystä klikattaessa tulostaa lomakkeen muokattavine kysymys-, aihepiiri-, vastaus- ja hyperlinkki-kenttineen sekä näyttää kysymyksen jättäjän nimen, jättöpäivämäärän, vastaajan nimen ja vastauspäivämäärän sekä mahdollisuuden (radio button) valita julkaisu tai arkistointi, sekä tulostaa lomakkeen lähetyspainikkeet, joilla voi tallentaa muutokset tai poistaa kysymyksen Tarkistaa syötteiden pituudet ja tulostaa virheilmoituksen tarvittaessa Käsittelee lähetetyn (POST) lomakkeen ja suorittaa taulujen päivityksen sekä ilmoittaa käyttäjälle toimenpiteen onnistumisesta
14 3.3.3 Aihepiirit Tiedosto aihepiirit, osoite admin.php?s=aihepiirit Tulostaa listarakenteeseen kaikki tietokannasta löytyvät aihepiirien nimet sekä mahdollisuuden lisätä uusi Haluttaessa lisätä uusi aihepiiri, tulostaa lomakkeen, johon voi syöttää uuden aihepiirin nimen ja lähetyspainikkeen Tarkistaa, että saman nimistä aihepiiriä ei jo ole kannassa tai että lähetetty aihepiirin nimi ei ole alle yhden merkin pituinen Käsittelee lähetetyn (POST) lomakkeen ja lisää uuden aihepiirin tietokantaan 3.3.4 Syötä uusi kysymys Tiedosto uusi, osoite admin.php?s=uusi Tulostaa lomakkeen kysymys-, aihepiiri-, vastaus- ja hyperlinkki-kenttineen Lähetettäessä lomake tarkistaa, että kysymys ja vastaus ovat pituudeltaan vaaditun mittaisia Lisää lähetetyn (POST) kysymyksen ja vastauksen tietokantaan 3.3.5 Omat tiedot Tiedosto tiedot, osoite admin.php?s=tiedot Tulostaa kirjautuneen käyttäjän käyttäjätunnuksen, nimen ja statuksen sekä hyperlinkit, joista pääsee muokkaamaan nimeään tai salasanaansa Tulostaa käyttäjän valinnasta joko salasanan vaihto- tai nimen vaihto-lomakkeen Käsittelee lähetetyt (POST) tiedot ja tarkistaa joko salasanan tai nimen pituuden Tallentaa muuttuneet tiedot tietokantaan
15 3.3.6 Käyttäjätunnukset Tiedosto tunnukset, osoite admin.php?s=tunnukset Tarkistaa, että kirjautunut käyttäjä on statukseltaan ylläpitäjä; muuten tulostaa virheilmoituksen Tulostaa järjestelmän käyttäjätunnukset (joiden salasana tietokannassa on 40- merkkinen), lukuunottamatta käyttäjän omaa tunnusta Käyttäjätunnusta klikkaamalla tulostaa ko. käyttäjän tiedot ja mahdollistaa nimen ja statuksen muokkaamisen sekä salasanan resetoinnin (arvotaan uusi 8- merkkinen salasana) ja tunnuksen poistamisen (salasana-kenttään arvo poistettu ) Lisättäessä uusi käyttäjä syötetään 8-merkkinen käyttäjätunnus, nimi ja valitaan tunnuksen tyyppi (status) Lähetettäessä (POST) lomake tarkistaa syötettyjen salasanojen samanlaisuuden ja pituuden (vähintään 6 merkkiä) 3.4 Asetustiedostot Tietokantayhteys muodostetaan sisällyttämällä PHP-tiedostoihin tiedostot asetukset.php ja avaa_db.php. Tietokantayhteys suljetaan sisällyttämällä tiedosto sulje_db.php. Tiedosto asetukset.php sisältää tietokannan nimen, verkko-osoitteen (localhost), käyttäjätunnuksen ja salasanan. WWW-palvelimen asetustiedostossa.htaccess määritellään mm. HTTP-virhedokumenttien 403 (Forbidden), 404 (Not found) ja 500 (Internal server error) osoitteet. 3.5 Kuvatiedostot Opiskelijakäyttöliittymän sivuihin sisällytetään kuvitukseksi saman niminen kuvatiedosto kuin sisältösivukin. Symbolit indikoivat omalta osaltaan, mikä sivu on avattuna, mutta toiminnallisia ominaisuuksia kuvilla ei järjestelmässä ole.
16 Kuva 7: Sivujen kuvakkeet 3.6 Tyylitiedostot HTML-sivujen muotoilut on toteutettu CSS-tyylimääritysten avulla. Tiedostossa tyyli.css on määritelty punasävyiset muotoiluasetukset opiskelijakäyttöliittymälle ja tiedostossa tyyli_mv.css harmaahkot muotoiluasetukset ylläpitokäyttöliittymälle. Näkymän värimaailma muuttuu kirjauduttaessa sisään tai ulos. 3.7 JavaScript-tiedostot JavaScript-funktiot vastauksien näyttämiselle ja piilottamiselle sekä lomakkeen merkkien laskemiselle on tallennettu tiedostoon javascript.js. 4 Asennustiedot Ylläpidon helpottamiseksi tiedostot on jaettu eri hakemistoihin niiden käyttötarkoituksen mukaan. Kuvat löytyvät hakemistosta./kuvat/, JavaScript-tiedosto(t) hakemistosta./js/, tietokantayhteyden luomiseen liittyvät asetustiedostot hakemistosta./kirjasto/, index- ja admin-sivujen kutsumat sisältösivut löytyvät hakemistosta./sivut/, CSS-tyylitiedostot löytyvät hakemistosta./tyyli/.
17 Järjestelmän tiedostojen oikeudet, niiden viemä tila ja jakautuminen eri hakemistoihin selvinnee parhaiten oheisesta hakemistolistauksesta. Asennettaessa tietokantasovellusta toiselle palvelimelle, vastaavan listauksen saa esimerkiksi komennolla ls -ahlr. Tiedostot vievät levytilaa yhteensä noin 130 kilotavua. Tietokannan koko muutaman kymmenen kysymyksen testiaineistolla noin 60 kilotavua..: total 19K drwxr-xr-x 7 thusu tkol 1.0K Apr 19 12:00. drwxr-xr-x 9 thusu tkol 1.0K Apr 19 12:00.. -rw-r--r-- 1 thusu tkol 322 Apr 19 12:00.htaccess -rwx--x--x 1 thusu tkol 2.5K Apr 19 12:00 admin.php -rwx--x--x 1 thusu tkol 2.1K Apr 19 12:00 index.php drwxr-xr-x 2 thusu tkol 1.0K Apr 19 12:00 js drwx--x--x 2 thusu tkol 1.0K Apr 19 12:00 kirjasto drwxr-xr-x 2 thusu tkol 1.0K Apr 19 12:00 kuvat -rwx--x--x 1 thusu tkol 3.6K Apr 19 12:00 login.php -rwx--x--x 1 thusu tkol 165 Apr 19 12:00 logout.php drwx--x--x 2 thusu tkol 1.0K Apr 19 12:00 sivut drwxr-xr-x 2 thusu tkol 1.0K Apr 19 12:00 tyyli./js: total 3.0K drwxr-xr-x 2 thusu tkol 1.0K Apr 19 12:00. drwxr-xr-x 7 thusu tkol 1.0K Apr 19 12:00.. -rw-r--r-- 1 thusu tkol 416 Apr 19 12:00 javascript.js./kirjasto: total 5.0K drwx--x--x 2 thusu tkol 1.0K Apr 19 12:00. drwxr-xr-x 7 thusu tkol 1.0K Apr 19 12:00.. -rwx--x--x 1 thusu tkol 130 Apr 19 12:00 asetukset.php -rwx--x--x 1 thusu tkol 146 Apr 19 12:00 avaa_db.php -rwx--x--x 1 thusu tkol 32 Apr 19 12:00 sulje_db.php
18./kuvat: total 28K drwxr-xr-x 2 thusu tkol 1.0K Apr 19 12:00. drwxr-xr-x 7 thusu tkol 1.0K Apr 19 12:00.. -rw-r--r-- 1 thusu tkol 2.5K Apr 19 12:00 admin.jpg -rw-r--r-- 1 thusu tkol 1.9K Apr 19 12:00 haku.jpg -rw-r--r-- 1 thusu tkol 2.8K Apr 19 12:00 kysy.jpg -rw-r--r-- 1 thusu tkol 1.4K Apr 19 12:00 login.jpg -rw-r--r-- 1 thusu tkol 51 Apr 19 12:00 luettelo.gif -rw-r--r-- 1 thusu tkol 823 Apr 19 12:00 luettelo_mv.gif -rw-r--r-- 1 thusu tkol 945 Apr 19 12:00 nappula.gif -rw-r--r-- 1 thusu tkol 99 Apr 19 12:00 tausta.gif -rw-r--r-- 1 thusu tkol 2.9K Apr 19 12:00 ukk.jpg -rw-r--r-- 1 thusu tkol 2.1K Apr 19 12:00 uudet.jpg -rw-r--r-- 1 thusu tkol 702 Apr 19 12:00 varjo.jpg -rw-r--r-- 1 thusu tkol 2.2K Apr 19 12:00 virhe.jpg -rw-r--r-- 1 thusu tkol 1.6K Apr 19 12:00 yhteystiedot.jpg./sivut: total 69K drwx--x--x 2 thusu tkol 1.0K Apr 19 12:00. drwxr-xr-x 7 thusu tkol 1.0K Apr 19 12:00.. -rwx--x--x 1 thusu tkol 3.0K Apr 19 12:00 aihepiirit -rwx--x--x 1 thusu tkol 12K Apr 19 12:00 etusivu -rwx--x--x 1 thusu tkol 2.4K Apr 19 12:00 haku -rwx--x--x 1 thusu tkol 12K Apr 19 12:00 kaikki -rwx--x--x 1 thusu tkol 3.4K Apr 19 12:00 kysy -rwx--x--x 1 thusu tkol 4.5K Apr 19 12:00 tiedot -rwx--x--x 1 thusu tkol 9.6K Apr 19 12:00 tunnukset -rwx--x--x 1 thusu tkol 3.8K Apr 19 12:00 ukk -rwx--x--x 1 thusu tkol 6.0K Apr 19 12:00 uudet -rwx--x--x 1 thusu tkol 4.2K Apr 19 12:00 uusi -rwx--x--x 1 thusu tkol 914 Apr 19 12:00 virhe -rwx--x--x 1 thusu tkol 1.1K Apr 19 12:00 yhteystiedot
19./tyyli: total 10K drwxr-xr-x 2 thusu tkol 1.0K Apr 19 12:00. drwxr-xr-x 7 thusu tkol 1.0K Apr 19 12:00.. -rw-r--r-- 1 thusu tkol 3.2K Apr 19 12:00 tyyli.css -rw-r--r-- 1 thusu tkol 3.5K Apr 19 12:00 tyyli_mv.css 5 Käyttöohje Tietokantasovellus on hyvin helppokäyttöinen, intuitiivinen ja vuorovaikutteinen, joten erillistä käyttöohjetta sille ei ole tuotettu. Tietokantasovellus löytyy osoitteesta http://db.cs.helsinki.fi/u/thusu/tsoha/. 6 Post Mortem -analyysi Projektia jälkikäteen arvoitaessa on todettava sen vieneen verrattain paljon aikaa neljän opintopisteen kurssiksi. Tietokantasovelluksista sen enempää kuin PHP:kään ei ollut kokemusta etukäteen, joten kaikenlaiseen ihmettelyyn kului aikaa. Tietokantasovellus oli opintojaksona poikkeuksellinen siten, että sen suorittaminen oli mielekästä. Lopputulokseen olen ihan tyytyväinen ja oppimistavoitteet tulivat uskoakseni pääpiirteittäin saavutettua.
Liite 1. Tehtävänanto Opintoneuvonnan UKK (FAQ = Frequenty Asked Questions) IS97HL16 Opintoneuvonnasta kysytään kaikenlaisia asioita. WWW-pohjaisessa neuvontapalveluun voitaisiin koota yleisimmin esiintyvät kysymykset ja vastaukset. Vastaukseen voisi sisältyä tietokantaan kirjattu lyhyt viesti ja tämän lisäksi linkkejä joihinkin tiedostoihin, tai paikkoihin, joista saa lisätietoa tai paremman vastauksen. Kysymykset voisi luokitella aihepiirin perusteella. Järjestelmää käyttäisivät sekä opiskelijat että opintoneuvojat etsiessään vastauksia ongelmiin. Jos opiskelija ei löydä vastausta hän voi välittää kysymyksen opintoneuvojalle neuvontapalvelun kautta. Neuvoja voi sitten sen lisäksi, että vastaa yksityisesti, myös laittaa vastauksen järjestelmään. Toimintoja: 1. kysymysten ja vastausten katselu 2. vastausten ajankohdat vanhentuneiden löytämiseksi 3. uusien kysymysten selailu 4. vastauksen vienti järjestelmään 5. Kysymyksen teko järjestelmän kautta (kenelle tahansa opintoneuvojalle, jollekin tietylle). 6. Aihepiirien ja niiden järjestyksen määrittely