ITV0110 4. töö 2014: Andmebaasiga serverirakendus: erinevus redaktsioonide vahel
Resümee puudub |
Resümee puudub |
||
| 11. rida: | 11. rida: | ||
* Kõik kasutajad saavad valida ka teise kasutaja ja näha tema fotosid. | * Kõik kasutajad saavad valida ka teise kasutaja ja näha tema fotosid. | ||
* Kõik sisseloginud kasutajad saavad kõiki fotosid kommenteerida. | * Kõik sisseloginud kasutajad saavad kõiki fotosid kommenteerida. | ||
* Kõik sisseloginud kasutajad saavad kõiki fotosid hinnata. | |||
* Iga kasutaja saab näha kõige kõrgemini hinnatud fotot. | |||
== Praktikumi arvestamine ja hindamine == | == Praktikumi arvestamine ja hindamine == | ||
| 17. rida: | 19. rida: | ||
Edukaks arvestuseks pead realiseerima baasfunktsionaalsuse lihtsamad osad: | Edukaks arvestuseks pead realiseerima baasfunktsionaalsuse lihtsamad osad: | ||
* Oma accoundi tegemine ja oma info sisestamine (parooli pole vaja realiseerida, kasutajatunnus aga küll). Accoundis pead saama anda vähemalt oma kasutajatunnuse, nime ja emaili vabatekstina. | * Oma accoundi tegemine ja oma info sisestamine (parooli pole vaja realiseerida, kasutajatunnus aga küll). Accoundis pead saama anda vähemalt oma kasutajatunnuse, nime ja emaili vabatekstina. | ||
* ... | * Fotode uploadimine ja foto baasinfo salvestamine andmebaasi. | ||
* Oma fotode loetelu kuvamine (fotode info võtta andmebaasist). | |||
* Loetelus kuvatud foto nö normaalkujul vaatamine. | |||
Nende osade korralik realiseerimine annab 7 punkti. Praktikumi ei arvestata, kui nendes osades on suuremad puudujäägid. | Nende osade korralik realiseerimine annab 7 punkti. Praktikumi ei arvestata, kui nendes osades on suuremad puudujäägid. | ||
| 24. rida: | 29. rida: | ||
Järgmiste funktsionaalsuste lisamine annab täiendavalt punkte, kuni maksimaalse 15-ni: | Järgmiste funktsionaalsuste lisamine annab täiendavalt punkte, kuni maksimaalse 15-ni: | ||
* ... | * Sisselogimine parooliga. 2p | ||
* Oma fotode kustutamine (vajab sisselogimist). 1p. | |||
* Teiste fotode vaatamine (ei vaja sisselogimist). 1p. | |||
* Teiste fotode kommenteerimine ja hindamine (vajab sisselogimist). 2p. | |||
* Kõige kõrgemini hinnatud foto vaatamine (ei vaja sisselogimist). 2p. | |||
Lisaks neile funktsionaalsustele (ja ka nende asemel) võib lisada muid huvitavaid mittetriviaalseid funktsionaalsusi, mis annavad siis samuti punkte lisaks baas-seitsmele. | Lisaks neile funktsionaalsustele (ja ka nende asemel) võib lisada muid huvitavaid mittetriviaalseid funktsionaalsusi, mis annavad siis samuti punkte lisaks baas-seitsmele. | ||
Reaalses rakenduses hädavajalikud asjad, millega meie praksis aga <b>ei pea</b> tegelema (kuid ei ole ka keelatud ja korralikult tehtuna võib anda lisapunkte): | Reaalses rakenduses hädavajalikud asjad, millega meie praksis aga <b>ei pea</b> tegelema (kuid ei ole ka keelatud ja korralikult tehtuna võib anda lisapunkte): | ||
* Juba sisestatud info muutmine ja kustutamine. | * Juba sisestatud info muutmine ja kustutamine. | ||
* Paroolid ja turvaküsimused ([http://xkcd.com/327/ sql injection] jne) | * Paroolid ja turvaküsimused ([http://xkcd.com/327/ sql injection] jne) | ||
| 36. rida: | 46. rida: | ||
== Tehnoloogilised nõuded == | == Tehnoloogilised nõuded == | ||
* Kõik serverirakendused tuleb realiseerida [http://www.php.net/ PHP-s] ja andmeid tuleb hoida | * Kõik serverirakendused tuleb realiseerida [http://www.php.net/ PHP-s] ja andmeid tuleb hoida [http://www.mysql.com MySQL-s] | ||
* Rakendus peab olema võrgus vabalt brauseriga ligipääsetav, mitte lihtsalt töötama näiteks sinu laptopis. | * Rakendus peab olema võrgus vabalt brauseriga ligipääsetav, mitte lihtsalt töötama näiteks sinu laptopis. | ||
* Serverarvutina võid | * Serverarvutina võid kasutada kas dijkstrat või omaenda vabalt valitud lemmikserverit. | ||
== Abi ja soovitusi == | == Abi ja soovitusi == | ||
Redaktsioon: 25. november 2014, kell 13:36

Mis tuleb teha
Neljanda praktikumi ülesandeks on ehitada mini-instagram, kasutades selleks PHP-d ja MySQL-i. Konkreetselt:
- Sisse logida. Ilma sisse logimata uploadida ja kommenteerida ei saa.
- Uploadida oma fotosid. Fotol on optsionaalselt nimi ja kirjeldus, mis tuleb/saab anda uploadimise ajal.
- Kustutada oma fotosid.
- Kõik kasutajad saavad valida ka teise kasutaja ja näha tema fotosid.
- Kõik sisseloginud kasutajad saavad kõiki fotosid kommenteerida.
- Kõik sisseloginud kasutajad saavad kõiki fotosid hinnata.
- Iga kasutaja saab näha kõige kõrgemini hinnatud fotot.
Praktikumi arvestamine ja hindamine
Praktikum annab maksimaalselt 15 punkti.
Edukaks arvestuseks pead realiseerima baasfunktsionaalsuse lihtsamad osad:
- Oma accoundi tegemine ja oma info sisestamine (parooli pole vaja realiseerida, kasutajatunnus aga küll). Accoundis pead saama anda vähemalt oma kasutajatunnuse, nime ja emaili vabatekstina.
- Fotode uploadimine ja foto baasinfo salvestamine andmebaasi.
- Oma fotode loetelu kuvamine (fotode info võtta andmebaasist).
- Loetelus kuvatud foto nö normaalkujul vaatamine.
Nende osade korralik realiseerimine annab 7 punkti. Praktikumi ei arvestata, kui nendes osades on suuremad puudujäägid.
Järgmiste funktsionaalsuste lisamine annab täiendavalt punkte, kuni maksimaalse 15-ni:
- Sisselogimine parooliga. 2p
- Oma fotode kustutamine (vajab sisselogimist). 1p.
- Teiste fotode vaatamine (ei vaja sisselogimist). 1p.
- Teiste fotode kommenteerimine ja hindamine (vajab sisselogimist). 2p.
- Kõige kõrgemini hinnatud foto vaatamine (ei vaja sisselogimist). 2p.
Lisaks neile funktsionaalsustele (ja ka nende asemel) võib lisada muid huvitavaid mittetriviaalseid funktsionaalsusi, mis annavad siis samuti punkte lisaks baas-seitsmele.
Reaalses rakenduses hädavajalikud asjad, millega meie praksis aga ei pea tegelema (kuid ei ole ka keelatud ja korralikult tehtuna võib anda lisapunkte):
- Juba sisestatud info muutmine ja kustutamine.
- Paroolid ja turvaküsimused (sql injection jne)
- Pikkade loetelude jagamine lehekülgedeks.
- Kasutajakonto tegemise kontrollid emaili ja captcha-ga.
Tehnoloogilised nõuded
- Kõik serverirakendused tuleb realiseerida PHP-s ja andmeid tuleb hoida MySQL-s
- Rakendus peab olema võrgus vabalt brauseriga ligipääsetav, mitte lihtsalt töötama näiteks sinu laptopis.
- Serverarvutina võid kasutada kas dijkstrat või omaenda vabalt valitud lemmikserverit.
Abi ja soovitusi
Esiteks: tutvu PHP ja SQL materjalidega, kas kursuse esilehelt või koopiana siitsamast:
- Vaata Vorgurakendused 1 SQL naited loengust.
- Vaata lihtsaid php ja mysql näiteid loengust.
Ideid ja näpunäiteid:
- Kõige lihtsam on teha kogu rakendus üheainsa php failina. Keerulisemate programmide puhul ei ole see hea mõte, meie lihtsal juhul aga on päris mugav.
- Kui tahad siiski oma php faili struktureerida (näiteks hoida eraldi failis päis ja jalus) siis selleks on php include käsk.
- Erinevad tegevused (a la sisse/väljalogimine foto lisamine, fotode otsimine) saad realiseerida nii, et php lehel vaadatakse, mis argumendid on antud (näiteks fotod.php?username=xx&password=yy peale tehakse sisse logimine, fotof.php?op=logout peale väljalogimine jne). Alati on võimalik võtta ka kasutusele eraldi parameeter, ntx op, mille väärtus ütleb siis, et mis tegevus tuleb ette võtta.
- Debugimise jaoks on lihtsam kasutada vormidel method="get", siis näed brauserist, et mis parameetrid saadeti.
- Samuti on debugimise juures abiks trükkida välja (echo) kokkuklopsitud sql päring tervikuna, et kontrollida, kas sai selline, nagu tahtsid.
- Sisselogimise jaoks (tee seda alles siis, kui baasfunktsionaalsus olemas!) on mõistlik kasutada php session funktsiooni (lihtsa tutoriali leiad siit) ja seada sessioonis sisselogimisel $_SESSION['username'] ja edaspidi alati kontrollida, kas on isset($_SESSION['username']) ja kui jah, siis kasutada seda väärtust, kui ei, siis kuvada sisselogimise vorm. Väljalogimisel piisab siis session_destroy() kasutamisest.
Sobivad õpetused lugemiseks
Umbes selles järjekorras:
- PHP
- Väikese ajaloolise ülevaate leiad wikipeediast
- Põhiõpetus on php oma saidil: loe sealt kõigepealt sissejuhatavat tutoriali
- W3school-si php tutorial on samuti päris OK.
- SQL, loe selles järjekorras
- SQL hea esimene kiirsissejuhatus
- enamateks detailideks loe w3schools'i tutoriali
- hea pikem tutorial alternatiivina eelmistele ja selle sees alternatiivne cheat-sheet
- mysql esmane tutorial ja vaata veidi mysql manuaali
- SQL injection vt ka seda ja seda ja seda
- SQL PHP-s, loe selles järjekorras
- Erinevad vormivälja-tüübid peale hariliku <input type=text>
- w3schools vormi-sissejuhatus
- väga mahukas ka detailne info: vormid html standardis ja selle eriti oluline osa
- suhteliselt ok vorminäide php kontekstis
Siit leiad eelmise aasta versiooni: ITV0110 4. töö 2013, ITV0110 4. töö 2012