ITV0110 4. töö: Andmebaasiga serverakendus: erinevus redaktsioonide vahel
| 48. rida: | 48. rida: | ||
== Abi ja soovitusi == | == Abi ja soovitusi == | ||
Esiteks: tutvu PHP ja SQL materjalidega kursuse | 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. | |||
; SQL, loe selles järjekorras: | |||
* [http://web.njit.edu/~song/courses/is698/SQL_tutorials.ppt SQL hea esimene sissejuhatus] | |||
* [http://www.w3schools.com/sql/default.asp täiendavalt on OK w3schools'i tutorial] | |||
* [http://dev.mysql.com/doc/refman/5.0/en/tutorial.html mysql esmane tutorial] ja | |||
[http://dev.mysql.com/doc/refman/5.0/en/index.html vaata veidi mysql manuaali] | |||
* [http://blogs.techrepublic.com.com/security/?p=2368 SQL injection] vt ka [http://lh6.ggpht.com/_5YF7KQZuZS0/S6dvFXu5OoI/AAAAAAAACWM/qTcVpMxcDnA/licence%20plate%20camera%20sql%20injection_2%5B3%5D.jpg?imgmax=800 seda] ja [http://www.schneier.com/blog/archives/2010/10/pen-and-paper_s.html seda] ja [http://alicebobandmallory.com/articles/2010/09/23/did-little-bobby-tables-migrate-to-sweden seda] | |||
; SQL PHP-s, loe selles järjekorras: | |||
* [http://dmsa.concordia.ca/tutorial_files/shortsql.ppt mysql PHP-s: ppt] | |||
* [http://www.tizag.com/mysqlTutorial/ mysql PHP-s: veebitutorial] | |||
* [http://www.w3schools.com/php/default.asp w3schools PHP tutorial all vasakul Mysql blokk] | |||
* [[Vorgurakendused 1 SQL naited loengust]] | |||
; Erinevad vormivälja-tüübid peale hariliku <input type=text>: | |||
* [http://www.w3schools.com/html/html_forms.asp w3schools vormi-sissejuhatus] | * [http://www.w3schools.com/html/html_forms.asp w3schools vormi-sissejuhatus] | ||
Redaktsioon: 15. november 2011, kell 17:23
Mis tuleb teha
Neljanda praktikumi ülesandeks on ehitada mini-reddit, kasutades selleks PHP-d ja MySQL-i (või Postgresqli).
Arusaadavalt on sinu loodav süsteem väga palju lihtsam, kui päris reddit, kuid baasfunktsionaalsus on tal sama.
Kui sa juhtumisi ei ole Redditi kasutaja, siis tee endale konto, upvote/downvote, lisa mõni link ja kommentaar ja tutvu süsteemiga: see ei ole praksi jaoks hädavajalik, kuid tuleb kasuks.
Praktikumi arvestamine ja hindamine
Praktikum annab maksimaalselt 15 punkti.
Edukaks arvestuseks pead realiseerima baasfunktsionaalsuse lihtsamad osad:
- Lingi lisamine.
- Lisatud linkide sorteeritud vaatamine: paremad eespool, kuvatakse korraga piiratud arv. "Parem" on lihtsamal juhul selline, millel upvotes-downvotes skoor on suurem.
- Lingi upvote ja downvote.
- Lingile kommentaari lisamine (ühel lingil võib neid olla kuipalju tahes), salvestatakse lameda listina ilma vastuste hierarhiata.
- Lingi kommentaaride vaatamine lisamisaja järgi sorteeritult, jällegi lameda listina ilma vastuste hierarhiata.
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:
- Oma accoundi tegemine: kasutajanimi ja parool.
- Sisselogimine (sisselogitult peab siis olema näha kasutajanimi), väljalogimine ja lingi/kommentaari ning upvote/downvote lubamine ainult sisseloginud kasutajalt.
- Kommentaari ja lingi juures lisaja kasutajanime ja lisamisaja kuvamine.
- Lingi sisestamisel tagi lisamine lingile. Tag on umbes seesama, mis subreddit ja tagi võib alati vabalt valida/sisestada.
- Tagide järgi linkide otsimine: kuvatakse ainult neid linke, millel on valitud/sisestatud tag.
- Tagide listi kuvamine.
Reaalses rakenduses hädavajalikud asjad, millega meie praksis aga ei pea tegelema (kuid ei ole ka keelatud):
- Mõistliku, aega arvestava rankingu algoritmi tegemine: vt redditi rankingualgoritmi ja hacker newsi rankingualgoritmi.
- Juba sisestatud info muutmine ja kustutamine.
- Erinevad turvaküsimused (sql injection jne).
- Kasutajakonto tegemise kontrollid emaili ja captcha-ga.
- Pikkade loetelude jagamine lehekülgedeks.
- Teksti/kasutaja/jne otsingud.
- Oma accoundi eelistused ja nende kasutamine kuvamisel.
- Kommentaaride esitamine hiearhiana.
Tehnoloogilised nõuded
- Kõik serverirakendused tuleb realiseerida PHP-s ja andmeid tuleb hoida kas MySQL-s või Postgresis. Kui oled andmebaasinduses algaja, kasuta pigem MySQL-i, kui aga oled juba kogemusi omandanud ja sul on server, kus ise oled adminiõigustega, võiksid proovida Postgresi.
- Rakendus peab olema võrgus vabalt brauseriga ligipääsetav, mitte lihtsalt töötama näiteks sinu laptopis.
- Serverarvutina võid - nagu teises praktikumis - 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.
- SQL, loe selles järjekorras
- SQL injection vt ka seda ja seda ja seda
- SQL PHP-s, loe selles järjekorras
- mysql PHP-s: ppt
- mysql PHP-s: veebitutorial
- w3schools PHP tutorial all vasakul Mysql blokk
- Vorgurakendused 1 SQL naited loengust
- 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
Muud kasulikud näpunäited lisatakse siia jooksvalt hiljem.
Siit leiad eelmise aasta versiooni: ITV0110 4. töö 2010