Erinevus lehekülje "ITI0205 2020 3 iseseisev töö" redaktsioonide vahel
Mine navigeerimisribale
Mine otsikasti
5. rida: | 5. rida: | ||
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. | 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. | + | 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 === | === Rakenduse põhifunktsionaalsus === | ||
35. rida: | 35. rida: | ||
* Leht ei tohi välja näha väga jube. Vaata ka: http://lambda.ee/wiki/Htmli_kujunduse_%C3%BCldp%C3%B5him%C3%B5tted | * Leht ei tohi välja näha väga jube. Vaata ka: http://lambda.ee/wiki/Htmli_kujunduse_%C3%BCldp%C3%B5him%C3%B5tted | ||
− | == Lisaks rakenduse põhifunktsionaalsusele == | + | === Lisaks rakenduse põhifunktsionaalsusele === |
Iga realiseeritud nõue annab ühe punkti, kokku 10p. | Iga realiseeritud nõue annab ühe punkti, kokku 10p. |
Redaktsioon: 29. oktoober 2020, kell 11:09
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
- 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.
- Registreeritud kasutaja peab saama sisestada enda kirjeldusteksti, asukoha (linn) ja laadima ülesse foto.
- 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.
- Kui kasutaja on juba sisse logitud, siis näeb ta enda uudisvoos oma sõprade postitusi ajalises järjestuses.
- Sisselogitud kasutaja saab lisada postituse milles on tekst. Skripte, embed-elemente, formaaditud tektsi ja muud HTMLi seal ei näidata.
- Kasutaja saab sõprade postitusele lisada reaktsiooni (like) Reaktsioone näidatakse iga postituse juures. Kasutaja saab enda antud reaktsiooni tagasi võtta.
- Kasutaja saab lisada oma sõprade postitusele kommentaari. Sarnaselt postitusele seal HTMLi, skripte ja muud ei näidata.
- Kasutaja saab teise kasutaja oma sõbralistist eemaldada
- 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:
- HTML ja CSS peaksid olema eraldi. Nii on sul mugav seda hallata ja muuta.
- Lehtede HTML peaks olema valideeruv ja javascripti kasutamisel ei tohi konsoolis olla veateateid.
- Leht ei tohi välja näha väga jube. Vaata ka: http://lambda.ee/wiki/Htmli_kujunduse_%C3%BCldp%C3%B5him%C3%B5tted
Lisaks rakenduse põhifunktsionaalsusele
Iga realiseeritud nõue annab ühe punkti, kokku 10p.
- 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.
- 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
- 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.
- Registreeritud kasutaja saab postituses lisada ka pildi
- Edasiarendatud sõbrakutsete korral peab enne sõbralisti lisamist see kellele kutse saadeti selle aktsepteerima.
- Kasutaja saab sõprade postitusi oma seinale edasi postitada.
- Rakendus on kasutatav ka mobiilis
- 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
- Realiseeritud ja kujundatud on vealeht, mida näidatakse siis kui soovitud lehte ei leita või süsteem kokku jookseb
- Kasutatud on üht või enamat Composeri teeki vabal valikul.
Kumbki täiendus annab ühe lisapunmkti
- Kasutaja saab registreerida ja sisse logida saab päris-Facebookiga
- Rakenduse vaated on realieeritud mingil templeidimootoril a'la Twig, Blade
Millises järjekorras asju teha
- Esimese sammuna mõtle välja millised vaated rakendusse üldse peaksid tulema. Tekita tühjad PHP failid nagu
index.php
,login.php
jaregister.php
- 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.
- Mõtle läbi ühes vaates - näiteks kasutaja uudisvoos - olevad elemendid. Realiseeri see HTMLis/CSSis. Seda saad kasutada alusesks muudes vaadetes.
- 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
- Kiire juhend Giti kasutamiseks: https://pydoc.pages.taltech.ee/git/git_ttu.html
- Veidi põhjalikum õpetus: https://pydoc.pages.taltech.ee/git/git_general.html
- Lekkinud Facebooki lähtekood aastast 2007: https://gist.github.com/nikcub/3833406
- Linuxi käsurea kasutamine Turingu serveri näitel