Tietokantasovelluksen toteutusdokumentti

Samankaltaiset tiedostot
Tietokantasovelluksen määrittelydokumentti

Käyttöohje. Visy Access Net UPM

Sisältö. Päivitetty viimeksi Sivu 2 / 14

24h Admin V / 24h_Admin_v100.pdf 1/9

Päänäkymä Opiskelijan ohjeet Kurssin suorittaminen Opettajan ohjeet kurssin teko

1. ASIAKKAAN OHJEET Varauksen tekeminen Käyttäjätunnuksen luominen Varauksen peruminen... 4

AVOIMEN YLIOPISTON MOODLE-OPAS OPISKELIJALLE

Uudistettu käyttöliittymä osoitteessa

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

Vianova Systems Finland Oy:n Novapoint käytön tuki

Liikennöitsijäsivuston käyttöohje

LOVe-verkkokoulutuksen käyttöohje Avaimet käteen

INTINU13A6 Java sovellukset

Wordpresspikaopas. Viivamedia

LOVe-verkkokoulutuksen käyttöohje Opiskelijan osio

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

Perustietoja Mietoisten kyläportaalista Yhdistyksen ylläpitäjän kirjautuminen Yhdistyksen etusivun muokkaaminen... 2

Keskustelusivusto. Suunnitteludokumentti

Ilmoitus saapuneesta turvasähköpostiviestistä

Moodle opiskelijan opas. Verkko oppimisympäristön käyttö

EVTEK-PROJEKTORI KÄYTTÖOHJE Tekijä: Teemu Tammivaara VBP04S

opiskelijan ohje - kirjautuminen

Lyseopaneeli 2.0. Käyttäjän opas

Lipas 2.0 käyttöohjeet ( )

Sisällysluettelo 1 Johdanto Root, koko Opalan pääkäyttäjä

Tarjouspalvelu.fi. Käyttöohjeet. Osallistu tarjouskilpailuihin tehokkaasti ja turvallisesti. Tarjouspalvelu.fi -toimittajaportaali

2. Liikennöitsijä saa omaan sähköpostiinsa käyttäjätunnuksen ja salasanan palveluun kirjautumista varten.

AVOIMEN YLIOPISTON MOODLE-OPAS OPISKELIJALLE SISÄLLYS

Nettiposti. Nettiposti käyttöohje

Opettajan pikaopas Opintojaksopalaute-järjestelmään

Osallistu julkisiin kilpailutuksiin helposti ja turvallisesti

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

SQL Buddy JAMK Labranet Wiki

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

LOVe-verkkokoulutuksen käyttöohje Opiskelijan osio

ViLLE Mobile Käyttöohje

opiskelijan ohje - kirjautuminen

AsioEduERP v12 - Tietoturvaparannukset

Tik Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu KÄYTTÖOHJE. LiKe Liiketoiminnan kehityksen tukiprojekti

Käyttöohje. Versiohistoria: versio Mari Kommenttien perusteella korjattu versio

Sähköinen ilmoittautuminen Salibandyliiton tapahtumaan

ORGANISAATION KIRJAUTUMINEN TURVASIRU.FI-PALVELUUN

Raporttiarkiston (RATKI) käyttöohjeet Ohjeet

OHJE 1 (14) Peruskoulun ensimmäiselle luokalle ilmoittautuminen Wilmassa

Käytin tehtävän tekemiseen Xubuntu käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta.

Ohje huoltajille Helmen käytöstä

Lemonsoft SaaS -pilvipalvelu OHJEET

Osallistavan suunnittelun kyselytyökalu

Action Request System

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

ARVI-järjestelmän ohje arvioinnin syöttäjälle

Fingridin säätösähkötarjousohje. Vaksin käyttöohjeet

ARVI-järjestelmän ohje arvioinnin syöttäjälle

Arena-koulutus Sisäänkirjautuminen ja omat sivut. Noora Muurimäki Outi Syväniemi Leila Virta

NTG CMS. Julkaisujärjestelm. rjestelmä

ESRC:n uusiutumassa olevat kotisivut on toteutettu WordPress-ohjelmalla (WP). Samaa ohjelmaa käyttävät menestyksellä ainakin SSql, HSRC ja JSK.

Office 365 palvelujen käyttöohje Sisällys

Hirviö Järjestelmätestauksen testitapaukset ja suoritusloki I1

Kaislanet-käyttöohjeet

SAKU-materiaalit

Uuden Peda.netin käyttöönotto

BLOGGER. ohjeita blogin pitämiseen Googlen Bloggerilla

KÄYTTÖOHJE / Ver 1.0 / Huhtikuu WordPress KÄYTTÖOHJE Sotkamo 2016

1 (5) OPISKELIJAN KÄYTTÖLIITTYMÄ

Opponointitestaus VYM -> LiKe

Asiointipalvelun ohje

Vuoro Sähköisen työaikaraportin käyttöohje

Ensimmäisessä vaiheessa ladataan KGU tietokanta Hallitse tietokantoja toiminnon avulla.

Nettiposti. Nettiposti käyttöohje

Muksunetti. Huoltajan ohje VARHAISKASVATUS. Muksunetti, huoltajan ohje sivu 1/18. Lähde: Tiedon Muksunetti-opas huoltajille

Toimittajaportaalin rekisteröityminen Toimittajaportaalin sisäänkirjautuminen Laskun luonti Liitteen lisääminen laskulle Asiakkaiden hallinta Uuden

SOPPARI. Sopimustoimittajan käyttöohje versio IS-Hankinta Oy

Vehmaan kunta. Wordpress käyttöopas. Betta Digital Oy

Tietokantojen hallinta

KÄYTTÖOHJE YRITYKSILLE

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

KÄYTTÖÖNOTTO-OHJE KONSULTEILLE

Suomen Akatemian verkkoasioinnin käyttöohje toimikuntien ja muiden valmistelu- ja päätöksentekoelinten jäsenille

Www-tallennuksen käyttöohje

Octo käyttöohje 1. Sisältö

Oppilaan opas. Visuaaliviestinnän Instituutti VVI Oy. Versio 0.2 ( )

Yrjö Määttänen Kokemuksia SuLVInetin käytön aloituksen

Käyttöohje. Ticket Inspector. Versio 1.0. Sportum Oy

Fixcom Webmail ohje. Allekirjoitus. Voit lisätä yhden tai useamman allekirjoituksen.

Seutudokumenttien pä ivittä misohje

Maatiaiskanojen säilyttäjän ohjeet Maatiaiskanat-palvelun käyttöön

Vaatimusdokumentti Labra

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

EU Login. EU Login kirjautuminen. EU Login tilin luominen

Lisätty Hintaluokkien käsittely ja näkyminen kohtaan Lisäominaisuudet

Tapahtumakalenteri & Jäsentietojärjestelmä Ylläpito

Käyttötapauksen nimi Lukija: pääsivu Osallistujat Lukija Tuloehdot Käyttäjä on avannut sivuston pääsivun Kuvaus Ruudulle tulostuvat kirjoittajat ja

Matematiikan oppifoorumi Käyttöohje

Ohjeita Omapalvelun käyttöön

Yrityspalvelujärjestelmä

Sähköpostitilin käyttöönotto

Googlen pilvipalvelut tutuksi / Google Drive

ILMOITUSSOVELLUS 4.1. Rahanpesun selvittelykeskus REKISTERÖINTIOHJE. SOVELLUS: 2014 UNODC, versio

Transkriptio:

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