Erinevus lehekülje "ITI0205 2020 3 iseseisev töö" redaktsioonide vahel
Mine navigeerimisribale
Mine otsikasti
1. rida: | 1. rida: | ||
== Mida tuleb teha == | == Mida tuleb teha == | ||
− | Sinu ülesanne on kirjutada mini-Facebook kasutades selleks PHP-d ja MySQL andmebaasi. | + | 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äidetudKasutaja saab teise kasutaja oma sõbralistist eemaldada | ||
+ | |||
+ | * 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 | ||
+ | |||
+ | Lisaks | ||
+ | |||
+ | <pre>* HTML ja CSS eraldi ... | ||
+ | * Valideerv HTML | ||
+ | * Konsoolis ei tohi olla vigu | ||
+ | * TODO: Rääkida faviconist.</pre> | ||
+ | Leht ei tohi olla kole. Vaata ka: http://lambda.ee/wiki/Htmli_kujunduse_%C3%BCldp%C3%B5him%C3%B5tted | ||
+ | |||
+ | '''Äkki see list too-much''' | ||
+ | |||
+ | == Millises järjekorras asju teha == | ||
+ | |||
+ | # Esimese sammuna mõtle välja millised vaated rakendusse üldse peaksid tulema. Tekita tühjad PHP failid nagu <code>index.php</code>, <code>login.php</code> ja <code>register.php</code> | ||
+ | # 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 <code>components/menu.php</code> ja lingi see põhivaatesse, näiteks <code><?php include 'components/menu.php'</code> | ||
+ | # | ||
* Kiire juhend Giti kasutamiseks: https://pydoc.pages.taltech.ee/git/git_ttu.html | * 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 | * Veidi põhjalikum õpetus: https://pydoc.pages.taltech.ee/git/git_general.html | ||
− | * | + | * [https://gist.github.com/nikcub/3833406 | Lekkinud Facebooki lähtekood aastast 2007] |
* [[ Linuxi_Käsurida | Linuxi käsurea kasutamine Turingu serveri näitel ]] | * [[ Linuxi_Käsurida | Linuxi käsurea kasutamine Turingu serveri näitel ]] |
Redaktsioon: 29. oktoober 2020, kell 11:03
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äidetudKasutaja saab teise kasutaja oma sõbralistist eemaldada
- 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
Lisaks
* HTML ja CSS eraldi ... * Valideerv HTML * Konsoolis ei tohi olla vigu * TODO: Rääkida faviconist.
Leht ei tohi olla kole. Vaata ka: http://lambda.ee/wiki/Htmli_kujunduse_%C3%BCldp%C3%B5him%C3%B5tted
Äkki see list too-much
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'
- 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
- Linuxi käsurea kasutamine Turingu serveri näitel