Viikkotehtävä 5
Tällä viikolla harjoitellaan PHP:n sessioiden ja evästeiden käyttämistä sekä tiedostojen käsittelyä ja tiedoston latausta palvelimelle lomakkeen avulla.
Tehtäville yhteiset vaatimukset:
- Käytetään PHP-kieltä.
- Kommentoikaa koodin oleellisimpia osia!
- Kaikkien sivujen on oltava validia XHTML 1.0 Strictiä.
- Valmiin PHP-ohjelman pitää toimia users.jyu.fi:ssä.
- Tietokantojen käyttäminen on kielletty.
Taso 1
- Mallikuva:
- Käyttäjä voi lisätä muistilistaan haluamansa määrän muistiinpanoja.
- Muistilista on voimassa kymmenen minuuttia muistilistan tallentamishetkestä lukien.
- Muistilistan koostaminen tapahtuu sessiomuuttujien avulla.
- Käyttäjän valitessa "Tallenna" tallennetaan muistilistan sisältö tekstitiedostoon ja poistetaan muistilista sessiomuuttujista.
- Käyttäjän tallentaessa muistilistan tallentaa WWW-palvelin käyttäjän selaimeen evästeen, jonka voimassaoloaika on sama kuin muistilistan voimassaoloaika. Eväste sisältää tallennetun muistilistan tunnisteen. Muistilista poistuu siis automaattisesti siinä vaiheessa, kun käyttäjän selain vanhentaa siihen liittyvän evästeen. Vanhentuneeseen muistilistaan liittyviä merkintöjä ei tarvi poistaa WWW-palvelimelta (eli tallennettua tiedostoa tai tiedostoja ei tarvitse poistaa).
- Käyttäjän palatessa muistilistasivulle näyttää sivu käyttäjän selaimen antamaan evästeeseen liittyvän muistilistan. Jos tällöin muistilistaan lisätään uusia muistiinpanoja, menevät ne aiemman muistilistan jatkoksi (ei siis tehdä uutta listaa vanhan päälle).
- Jos käyttäjällä ei vielä ole muistilistaa sivulle tullessa, niin muistilistan sisältö on tyhjä.
- Muistilistoja pystyy tekemään useita käyttämällä eri selaimia tai samaa selainta eri koneella, koska evästeet ovat aina selainkohtaisia. Huomioi tämä muistilistan tallentamisen yhteydessä.
Taso 3
- Mallikuva:
- Käyttäjä voi lisätä muistilistaan haluamansa määrän muistiinpanoja.
- Käyttäjä määrää kuinka kauan muistilista on voimassa.
- Muistilistan koostaminen tapahtuu sessiomuuttujien avulla.
- Käyttäjä voi lisätä muistilistaan myös tiedostoja, jotka näytetään muistilistauksessa lisättyyn tiedostoon kohdistuvina linkkeinä. Ohjelman pitää toimia vaikka muistilistaan yritettäisiin lisätä useita samannimisiä, mutta sisällöltään erilaisia tiedostoja.
- Käyttäjän valitessa "Tallenna" tallennetaan muistilistan sisältö tekstitiedostoon ja poistetaan muistilista sessiomuuttujista.
- Käyttäjän tallentaessa muistilistan tallentaa WWW-palvelin käyttäjän selaimeen evästeen, jonka voimassaoloaika on sama kuin muistilistan voimassaoloaika. Eväste sisältää tallennetun muistilistan tunnisteen. Muistilista poistuu siis automaattisesti siinä vaiheessa, kun käyttäjän selain vanhentaa siihen liittyvän evästeen. Vanhentuneeseen muistilistaan liittyviä merkintöjä ei tarvi poistaa WWW-palvelimelta (eli tallennettua tiedostoa tai tiedostoja ei tarvitse poistaa).
- Käyttäjän palatessa muistilistasivulle näyttää sivu käyttäjän selaimen antamaan evästeeseen liittyvän muistilistan. Jos tällöin muistilistaan lisätään uusia muistiinpanoja, menevät ne aiemman muistilistan jatkoksi (ei siis tehdä uutta listaa vanhan päälle).
- Jos käyttäjällä ei vielä ole muistilistaa sivulle tullessa, niin muistilistan sisältö on tyhjä.
- Ohjelman pitää toimia, vaikka sitä käyttäisi useampi käyttäjä eri selaimilla. Jokaista selainta kohti pitää pystyä luomaan oma muistilista (eväste per selain).
- Yksittäisiä muistilistamerkintöjä voi poistaa, mutta ei muokata.
Taso 5
Kirjoita muistilistaohjelma, joka toimii seuraavasti:
- Mallikuvat:
- Käyttäjä voi lisätä muistilistaan haluamansa määrän muistiinpanoja.
- Käyttäjä voi luoda haluamansa määrän muistilistoja samalla selaimella (eväste per muistilista).
- Käyttäjä määrää kuinka kauan yksittäinen muistilista on voimassa.
- Käyttäjä voi lisätä muistilistaan myös kuvia tai mitä tahansa muita tiedostoja. Muistilistaan liittyvät kuvat (png-, gif- tai jpg-muotoiset) näytetään suoraan muistilistamerkintöjen seassa. Muut tiedostot vain linkitetään mukaan muistilistaan.
- Muistilistan koostaminen tapahtuu sessiomuuttujien avulla.
- Yksittäisiä muistilistamerkintöjä voi poistaa, mutta ei muokata.
- Käyttäjän valitessa "Tallenna" tallennetaan muistilistan sisältö tekstitiedostoon ja poistetaan muistilista sessiomuuttujista.
- Käyttäjän tallentaessa muistilistan tallentaa WWW-palvelin käyttäjän selaimeen muistilistakohtaisen evästeen, jonka voimassaoloaika on sama kuin muistilistan voimassaoloaika. Tallentamisen yhteydessä palataan muistilistasivun etusivulle. Muistilista poistuu siis automaattisesti siinä vaiheessa, kun käyttäjän selain vanhentaa siihen liittyvän evästeen. Vanhentuneisiin muistilistoihin liittyviä tiedostoja ei tarvitse poistaa WWW-palvelimelta.
- Käyttäjän palatessa muistilistasivulle näyttää sivu listauksen niistä muistilistoista, joita vastaavat evästeet käyttäjän selain lähettää. Käyttäjä voi valita haluamansa muistilistan nähtäväksi ja muokattavaksi.
- Ohjelman pitää toimia, vaikka eri käyttäjät lisäilisivät muistilistoihin samannimisiä, mutta erilaisia kuvia ja tiedostoja!
- Muistilistaan lisätyt kuvat pitää esittää muistilistassa pienennettyinä enintään 140x120 pikselin kokoon. Kuvasta pitää olla linkki täysikokoiseen kuvaan. Käytä apuna PHP:n kuvankäsittelykirjastoja.

Käyttäjien kommentit
Saisiko vähän apuja listamerkki-mysteerin ratkaisemiseksi? Siis tuo mallikuvan listan musta vinoneliö. Ei ole määritetävissä css:llä muttei myöskään merkistöstä taida löytyä? Ei nimittäin ole ainakaan ♦ eikä ◊. Onko se kuva joka on listamerkkinä?
"Mysteeri" on se, että screenshot on otettu sellaisella selaimella, joka sattuu näyttämään oletuslistamerkin (normaalisti pyöreä) tuollaisena enemmän salmiakin muotoisena. :-) Eli tässä tehtävässä listamerkki voi olla ihan selaimen oletus, eikä sitä tarvitse alkaa itse muuttamaan.