Erinevus lehekülje "ITI0205 2020 3 iseseisev töö" redaktsioonide vahel

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti
13. rida: 13. rida:
 
# Sarnaselt "päris" Facebookiga pead postituste vaatamiseks või ise postitamiseks olema süsteemi sisse logitud e-posti aadressi parooliga. Minimaalses versioonis võid kasutajad (sh kasutaja võtme ja fotod) otse andmebaasi kirjutada.
 
# Sarnaselt "päris" Facebookiga pead postituste vaatamiseks või ise postitamiseks olema süsteemi sisse logitud e-posti aadressi parooliga. Minimaalses versioonis võid kasutajad (sh kasutaja võtme ja fotod) otse andmebaasi kirjutada.
 
# Kasutajal on kasutajanimega seotud profiilivaade kus on näha tema profiili andmed ja postitused. Postitusi näidatakse ajalises järjestuses - hilisemad postitused enne ja varasemad hiljem.
 
# Kasutajal on kasutajanimega seotud profiilivaade kus on näha tema profiili andmed ja postitused. Postitusi näidatakse ajalises järjestuses - hilisemad postitused enne ja varasemad hiljem.
# Registreeritud kasutaja peab saama sisestada enda kirjeldusteksti, asukoha (linn) ja laadida ülesse foto.
+
# Registreeritud kasutaja peab saama sisestada enda kirjeldusteksti, asukoha (linn). Baasversiooni juures fotot ülesse laadima ei pea vaid võib kuvada vaikepilti.
 
# Sisselogitud kasutaja saab otsida teisi kasutajaid nimeosa ja/või asukoha järgi. Suur ja väiketähtede kasutaja ei ole oluline.
 
# Sisselogitud kasutaja saab otsida teisi kasutajaid nimeosa ja/või asukoha järgi. Suur ja väiketähtede kasutaja ei ole oluline.
 
# Registreeritud kasutaja saab saata teisele kasutajale sõbrakutse. Baasversioonis aktsepteeritakse sõbraktuse automaatselt.
 
# Registreeritud kasutaja saab saata teisele kasutajale sõbrakutse. Baasversioonis aktsepteeritakse sõbraktuse automaatselt.

Redaktsioon: 29. oktoober 2020, kell 11:14

ITI0205 3. iseseisev töö - andmebaasiga serverirakendus

Mida tuleb teha

Sinu ülesanne on kirjutada mini-Facebook kasutades selleks PHP-d ja MySQL andmebaasi. Kui oskad võid kasutada CSS raamistikke. Puhta Javascripti ja jQuery kasutamine on samuti lubatud.

Rakendus on vaja paigaldada turing.cs.ttu.ee serverisse aadressile http://turing.cs.ttu.ee/~uni-id/prax3 ja rakenduse lähtekood Gitlab.cs.ttu.ee kesskkonda.

Rakenduse põhifunktsionaalsus

Nende nõuete realiseerimine on arvestuse saamiseks kohustuslik ja need annavad 5 punkti

  1. Sarnaselt "päris" Facebookiga pead postituste vaatamiseks või ise postitamiseks olema süsteemi sisse logitud e-posti aadressi parooliga. Minimaalses versioonis võid kasutajad (sh kasutaja võtme ja fotod) otse andmebaasi kirjutada.
  2. Kasutajal on kasutajanimega seotud profiilivaade kus on näha tema profiili andmed ja postitused. Postitusi näidatakse ajalises järjestuses - hilisemad postitused enne ja varasemad hiljem.
  3. Registreeritud kasutaja peab saama sisestada enda kirjeldusteksti, asukoha (linn). Baasversiooni juures fotot ülesse laadima ei pea vaid võib kuvada vaikepilti.
  4. Sisselogitud kasutaja saab otsida teisi kasutajaid nimeosa ja/või asukoha järgi. Suur ja väiketähtede kasutaja ei ole oluline.
  5. Registreeritud kasutaja saab saata teisele kasutajale sõbrakutse. Baasversioonis aktsepteeritakse sõbraktuse automaatselt.
  6. Kui kasutaja on juba sisse logitud, siis näeb ta enda uudisvoos oma sõprade postitusi ajalises järjestuses.
  7. Sisselogitud kasutaja saab lisada postituse milles on tekst. Skripte, embed-elemente, formaaditud tektsi ja muud HTMLi seal ei näidata.
  8. Kasutaja saab sõprade postitusele lisada reaktsiooni (like) Reaktsioone näidatakse iga postituse juures. Kasutaja saab enda antud reaktsiooni tagasi võtta.
  9. Kasutaja saab lisada oma sõprade postitusele kommentaari. Sarnaselt postitusele seal HTMLi, skripte ja muud ei näidata.
  10. Kasutaja saab teise kasutaja oma sõbralistist eemaldada
  11. Kasutaja saab süsteemist välja logida.

Lisaks peavad olema täidetud elementaarsed turvanõuded

  • Ei kuvata otse, nö puhastamata välja kasutaja sisestatud tekste (javascript injection ehk XSS takistatud)
  • Ei kasutata otse, nö puhastamata, kasutaja sisestatud tekste SQL päringute kokkupanekul (sql injection takistatud)
  • Parool peab olema salvestatud andmebaasi krüpteeritult

Lisaks:

Lisaks rakenduse põhifunktsionaalsusele

Iga realiseeritud nõue annab ühe punkti, kokku 10p.

  1. Saad registreerida uue kasutaja. Kasutaja registreerimisel pead saama anda enda nime, e-posti ja parooli koos parooli kordusega. E-posti aadress peab olema unikaalne ja parooli valimisel süsteem kontrollima parooli kordust.
  2. Pärisnime põhjal loob süsteem kasutaja võtme - näiteks kui kasutaja nimi on Peeter Kask, siis kasutajanimi on peeter.kask. Lisa: Kui samanimeline aga teise e-posti aadressiga kasutaja juba eksisteerib, siis genereerib süsteem kasutajanime peeter.kask.1
  3. Lisaks kirjeldustekstile ja asukohale saab kastuada ülesse laadida oma foto. Fotot kuvatakse sarnaselt päris-Facebookiga kasutajaprofiili juures. Juhul kui fotot pole lisatud kuvatakse selle asemel vaikepilti.
  4. Registreeritud kasutaja saab postituses lisada ka pildi
  5. Edasiarendatud sõbrakutsete korral peab enne sõbralisti lisamist see kellele kutse saadeti selle aktsepteerima.
  6. Kasutaja saab sõprade postitusi oma seinale edasi postitada.
  7. Rakendus on kasutatav ka mobiilis
  8. Realiseeritud on rakenduse ruutimine, s.t kättesaadav mitte ainult parameetritega antud asukohtadest, s.t profiilisvaate jaoks profile.php?user=peeter.kask vaid /profile/peeter.kask
  9. Realiseeritud ja kujundatud on vealeht, mida näidatakse siis kui soovitud lehte ei leita või süsteem kokku jookseb
  10. Kasutatud on üht või enamat Composeri teeki vabal valikul.

Kumbki täiendus annab ühe lisapunmkti

  1. Kasutaja saab registreerida ja sisse logida saab päris-Facebookiga
  2. Rakenduse vaated on realieeritud mingil templeidimootoril a'la Twig, Blade

Millises järjekorras asju teha

  1. Esimese sammuna mõtle välja millised vaated rakendusse üldse peaksid tulema. Tekita tühjad PHP failid nagu index.php, login.php ja register.php
  2. Mõtle läbi millistesse kataloogidesse erinevad failid paigutada. Kui neid ühes kataloogis hoida võib faile tekkida palju ja neid on tülikas leida.
  3. Mõtle läbi ühes vaates - näiteks kasutaja uudisvoos - olevad elemendid. Realiseeri see HTMLis/CSSis. Seda saad kasutada alusesks muudes vaadetes.
  4. Mõtle välja millised oleksid korduvad osad - kindlasti on seda menüü. Tõsta menüü-HTML eraldi faili, näiteks components/menu.php ja lingi see põhivaatesse, näiteks <?php include 'components/menu.php'

...

Abimaterjale ja viiteid