6. labor, PHP/MySQL II.

Vissza a labor főoldalára.

  1. Indítsd el a Ampps-t.
  2. Indítsd el a MySQL Workbench-et, csatlakozz a lokális MySQL szerverhez
  3. A labor5-9i.html és searchi.php fileok a múltkori 9. feladat egy megoldását tartalmazza, amibe viszont több biztonsági rés is került.
    A múltkori mintában ezek persze nem voltak benne. Ezeket fogjuk most kipróbálni, ehhez töltsd le ezeket a file-okat (a php kiterjesztést txt-ről php-re kell változtatni, ez minden további letöltendő php-re vonatkozik) és másold be a szokásos www mappába, próbál ki, hogy működik-e a keresés: localhost/labor5-9i.html
    (A keresési eredményen kívül - segítségképp - kiírja a végrehajtott SQL utasítást is.)
  4. A keresési mezőbe most másold be a következőt:

    Kov%'; SELECT 'aaa' as memberid, 'bbb' as name, 'ccc' as levelofmember -- xxx%

    Mi történik? Miért?
  5. Írj olyan keresési mintát, ami lekérdezi a  hr séma empolyees táblájának valamely 3 oszlopát. (Hogy mik vannak ott, azt a MySQL Workbench-ben meg tudod nézni).
  6. Írj olyan keresési mintát, ami beszúr a videos séma members táblájába egy új tagot, tetszőleges adatokkal. (Hogy a beszúrás tényleg megtörtént, azt szintén a Workbench-ben meg tudod nézni).

    Ezt hívják SQL injection támadásnak. Érdemes tudni erről, a Google segítségével sok hasznosat meg lehet róla tudni, milyen további trükkös dolgokat lehet csinálni ill. hogyan kell ellene védekezni.

    A legfontosabb eszközök:
    $username megfelelő beállításai, real_escape_string(), multi_query() helyett query() és a prepared statement.

  7. Az OpenStreetMap egy nyilvános szolgáltatás, amivel meg lehet keresni egy cím GPS koordinátáit. Pl:
    http://nominatim.openstreetmap.org/search?q=1111%20egry%20j%C3%B3zsef%20utca%201&format=json&polygon=1&addressdetails=1 (a q=... részbe kell a keresendő címet írni, ezt a rawurlcode() fügvénnyel kell megfelelő formára alakítani.) Az ilyen szolgáltatások outputja kétféle szokott lenni: XML vagy JSON. Használjuk most a JSON-t.
    Készíts egy HTML oldalt, ami egy táblázatban listázza a tagok nevét, címét és a cím GPS koordinátáit (azaz a lat és lon értékeit).
    Itt egy példa, hogyan lehet kinyerni az adatokat: gpssearch.php 

    Szorgalmi: legyen a helyre egy GoogleMaps link is, pl.: https://www.google.com/maps/search/?api=1&query=47.4784103,19.0596001

  8. Az OMDb API segítségével listázd ki a filmeket és hozzájuk tartozó értékeket: Genre, Actors, imdbRating. (Szorgalmi: beágyazva a plakát képe és link az IMDb oldalra.) A lekérdezéshez kell regisztrálni és kérni egy APIkey-t. Ez csomó hasonló ilyen szolgáltatásnál hasonlóan működik. De most lehet használni az enyémet is, pl. így:
    http://www.omdbapi.com/?t=Dogma&i=tt3896198&apikey=ab88bfa4

  9. A MySQL Workbenchben a videos séma members tábláját bővítsd ki egy username (VARCHAR(50)) és egy password (VARCHAR(255)) attribútummal.
    Készíts egy HTML oldalt, ahol be lehet írni egy új tag adatait és egy Register gomb megnyomásával hozzáadja az adatbázishoz az új tagot. Fontos, hogy a jelszót nem szabad eredeti formájában tárolni (pl. BKK rendszer), hanem a password_hash() függvénnyel titkosítani kell. (Később majd a password_verify() segítségével lehet ellenőrizni, hogy megfelelő-e a jelszó.)
    Az alap változatban elég a memberid, név, username, password.

    Szorgalmi nehezítések:
    A többi mező is legyen kitöltve.
    A deteofbirth és a levelofmember értékét legördülő menüből választjuk ki.
    A memberid-t ne kelljen beírni, az automatikusan a legkisebb szabad 10000-nél nagyobb szám legyen.
    Ellenőrizze, hogy a username még nem szerepel a táblában, ha igen, írja ezt ki.

  10. Készíts egy HTML oldalt, ahol be lehet írni egy új kölcsönzést. Az első változatban a megfelelő id-k és a dátum begépelésével.
    Szorgalmi nehezítések:
    A dateofcreation az aktuális dátum legyen.
    A videókat és a tagokat is legördülő menüből lehessen kiválasztani.
    A menüben csak az éppen nem kikölcsönzött videók szerepeljenek.
    A memberid helyett a taghoz tartozó username és password értékeket kérje és csak akkor engedélyezze a kölcsönzést, ha a jelszó helyes.