ITV0110 4. töö 2014: Andmebaasiga serverirakendus: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
Resümee puudub
56. rida: 56. rida:
* Vaata [[Vorgurakendused 1 SQL naited loengust]].  
* Vaata [[Vorgurakendused 1 SQL naited loengust]].  
* Vaata [[lihtsaid php ja mysql näiteid]] loengust.  
* Vaata [[lihtsaid php ja mysql näiteid]] loengust.  
Debugimine:
* dijkstras ei näita php süntaksivigade korral mitte midagi. Seepärast logi dijkstrasse sisse ja ütle käsurealt
<pre>
php myprog.php
</pre>
ja siis kuvatakse sulle käsurealt süntaksivead välja. Paranda need ära.
* kasuta oma proges trükkimiseks echo käsku, et tuvastada, kus täpselt ja mis muutujate väärtuste korral viga tekib.


Ideid ja näpunäiteid:
Ideid ja näpunäiteid:

Redaktsioon: 25. november 2014, kell 14:13

Cat
Cat


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:

Debugimine:

  • dijkstras ei näita php süntaksivigade korral mitte midagi. Seepärast logi dijkstrasse sisse ja ütle käsurealt
php myprog.php

ja siis kuvatakse sulle käsurealt süntaksivead välja. Paranda need ära.

  • kasuta oma proges trükkimiseks echo käsku, et tuvastada, kus täpselt ja mis muutujate väärtuste korral viga tekib.

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
SQL, loe selles järjekorras
SQL PHP-s, loe selles järjekorras
Erinevad vormivälja-tüübid peale hariliku <input type=text>


Siit leiad eelmise aasta versiooni: ITV0110 4. töö 2013, ITV0110 4. töö 2012