Hei te kokeneemmat PHP-koodaajat minulla olisi pieni ongelma mihin toivoisin löytäväni apua.
Alla on projekti mihin olen yrittänyt löytää ratkaisuja mutta taitoni eivät vain riitä ratkaisemaan tätä, olen kyllä saanut luotua taulukoita yms. mutta niiden käsittely ei olekkaan niin helppoa.
Tee yksinkertainen järjestelmä jossa työntekijä voi kirjata omia työsuorituksiaan.
Työntekijä merkitsee nimensä, päivämäärän, työn alkamis- ja päättymisajan sekä työn kuvauksen.
Työnjohtaja voi, kirjautumisen jälkeen, valita yksittäisen työntekijän merkinnät tarkasteltavaksi.
Tulostuksessa näkyy työntekijän nimi, päiväkohtaiset merkinnät ja kokonaistyöaika (= työajat yhteensä)
Toinen toiminto, jonka työnjohtaja voi tehdä, on poistaa yksittäisen työntekijän tietty merkintä.
Työssä huomioitava/on tehtävä:
sivujen ulkoasu tulee olla määritetty (värit, fontit jne)
koodi tulee olla tarkoituksenmukaisesti kommentoitu.
toimintojen suorittamisesta annetaan käyttäjälle selkeä ja havainnollinen palaute, joka on ulkoasultaan samankaltainen muiden sivujen kanssa.
virhetilanteissa tulostetaan erillinen virheilmoitus, joka on ulkoasultaan samankaltainen muiden sivujen kanssa.
tietoturva on huomioitu
o salasanojen tallentamisessa
o syötteissä
o muissa tarkoituksenmukaisissa kohdissa
toteutuksessa on käytetty MVC mallia.
Siinä olisi kriteerit mitkä pitäisi projektissa täyttyä.
Toivoisin että saisin apua tämän kanssa koska tämä on minulle todella tärkeä projekti.
Kiitos ajastanne.
Mikä projektissa tuottaa vaikeuksia, vai onko ongelma lähinnä se että miten teet/suunnittelet asian hyvin?
Asiaa kannattaa lähteä pilkkomaan osiin:
Tietokannan suunnittelu, ulkoasu, luokat/funktiot, näkymät (sivut jotka näkyvät)
Imperatiiveista päätellen tämä on jonkinlainen toimeksianto. Onko kyse rahasta vai opintopisteistä? Miksi olet ottanut harteillesi näin suuren projektin, jos taitosi rajoittuvat alkeelliseen taulukoiden käpistelyyn? Projekti on toki helposti yhden ihmisen toteuttavissa (tiedän, koska olen itse tehnyt tällaisen järjestelmän), mutta ei näitä voi kuitenkaan lähteä tekemään opettelumielessä ilman pohjataitoja ja alustavaa kokemusta kokonaisten tietojärjestelmien toteuttamisesta.
Projekti on minulle haastava joten minun taitoni eivät riitä kaikkien ominaisuuksien luomiseen.
Olen saanut luotua projektista alun johon olen lisänyt työntekijöiden nimiä ja mihin aikaan he ovat aloittaneet työt ja mitä ovat tehneet.
Mutta vaikeuksia on tuottanut projektin loppuosiot eli tietojen poistaminen ja salasanojen tallennus yms.
Itse pidän tätä projektia haasteellisena mutta se voi tuntua helpolta kokeneemalle henkilölle.
Pahoittelen mahdollisia kirjoitusvirheitä ja epäkäteviä ilmaisuja koska, minulla on paha lukihäiriö joka vaikeuttaa oikeinkirjoitustani ja luetunymmärtämistäni.
Lisäys: Hei The Alchemist tämä on loppu projekti alani harjoituksissa ja php on ollut minulle aina vaikeaa joten ajattelin kääntyä tietävämpien puoleen koska olisi tärkeää ettei valmistumiseni jäisi vain tämän projektin takia väliin :/ tiedän että tämä on iso projekti varsinkin minunlaiselleni vähän tietävälle mutta yritän sinnikkäästi oppia ja tehdä vaadittavat asiat mitä minulta pyydetään koska en halua päästä helpommalla vain sen takia että olen erityisopiskelija.
Salasanat tallennetaan omaan sarakkeeseensa tietokantaan ja poistaminen tapahtuu esim. kutsumulla delete.php-tiedostoa (vaikka ihan normaali linkki siis), jossa tarkastetaan käyttöoikeudet ja
sitten suorittetaan poisto-komento (poistetaan kokonaan rivi tai asetetaan deleted-sarakkeeseen aikaleima koska poistettu).
ps.
lainaus:
minulla on paha lukihäiriö
No ei kyllä siltä vaikuta, mikä on tietty hyvä juttu
Kyllä tässä on joka tapauksessa saatava se koodi nettiin, mikäli asiassa on mitään edistystä tarkoitus tehdä. Mielellään Githubiin tai vastaavaan palveluun. Mielestäni sinun pitäisi kuitenkin ensisijaisesti yrittää löytää apua opintopiiristäsi tai neuvottelemalla ohjaajasi kanssa. Koska kyse on koulutehtävästä, niin silloin voi karsia epäoleellisempaa työtä pois, joten projektin vaativuustasokin laskee hieman.
p99o kirjoitti:
Salasanat tallennetaan omaan sarakkeeseensa tietokantaan ja poistaminen tapahtuu esim. kutsumulla delete.php-tiedostoa (vaikka ihan normaali linkki siis), jossa tarkastetaan käyttöoikeudet ja
sitten suorittetaan poisto-komento (poistetaan kokonaan rivi tai asetetaan deleted-sarakkeeseen aikaleima koska poistettu).
Jättäisin kyllä kaikki arvailut järjestelmän arkkitehtuurista ja sopivista valinnoista tekemättä tasan niin kauan kunnes se koodi on näkyvillä. Tämmöiset "lottovinkit" ovat nopea tapa ampua itseään jalkaan.
Kiitos paljon avusta :) menen kokeilemaan jos nyt onnistuisin saamaan toimimaan neuvoillasi ja hyvä että ei vaikuta kun koitan keskittyä kovin että kirjoituksissani ei olisi virheitä ettei tule väärinymmärryksiä.
Lisäys:
Nyt kun näin sinunkin viestisi The Alchemist kiitos neuvoista ja kiitoskia kummallekin auttajalleni.
Menen huomenna selvittämään asiaa luokanvalvojani kanssa :) ja vielä kerran kiitosksia avustuksistanne
p99o kirjoitti:
esim. kutsumulla delete.php-tiedostoa (vaikka ihan normaali linkki siis),
GET-pyyntöjä ei pidä käyttää asioihin, jotka aiheuttavat olennaisia muutoksia järjestelmässä. Kuten nimikin sanoo, GET-pyyntö on tiedon hakemista varten. Tietojen lisääminen ja poistaminen tehdään yleensä POST-pyynnöillä. Myös PUT ja DELETE sopivat, mutta niiden käyttö on vaikeampaa.
PHP-harjoittelija kirjoitti:
olisi tärkeää ettei valmistumiseni jäisi vain tämän projektin takia väliin
Toisaalta on tärkeää myös, että suoritat opintosi itse ja saat niistä omien taitojesi mukaisen arvosanan. Olisi kai aika noloa joutua työpaikalla selittelemään, miksi todistuksen mukaan osaat hienosti PHP:tä mutta töissä homma ei suju alkuunkaan.
Voisi selventää sen verran, ettei get- ja post-pyynnöistä niuhottaminen esimerkiksi rivejä poistaessa ole pelkkää semantiikkaa. Get-pyyntöjä on helppo väärentää, koska ne ovat käytännössä tavallisia linkkejä / www-osoitteita. Periaatteessa silloin on mahdollista, että joku lähettää vaikka sähköpostiin linkin, jota klikkaamalla tulee suorittaneeksi jossain tärkeässä tietojärjestelmässä haitallisia toimintoja. (Jos sattuu olemaan kirjautuneena hyökkäyksen kohteena olevalle sivustolle.)
totta turiset, unohtakaa ehdotukseni.
Lopputyötä ajatellen (jos työ dokumentoidaan) niin tämän(kin) asian kirjoittaminen on varmaankin ihan hyvä asia lukuun jossa käsitellään tietoturvaa yms.
The Alchemist kirjoitti:
Voisi selventää sen verran, ettei get- ja post-pyynnöistä niuhottaminen esimerkiksi rivejä poistaessa ole pelkkää semantiikkaa. Get-pyyntöjä on helppo väärentää, koska ne ovat käytännössä tavallisia linkkejä / www-osoitteita. Periaatteessa silloin on mahdollista, että joku lähettää vaikka sähköpostiin linkin, jota klikkaamalla tulee suorittaneeksi jossain tärkeässä tietojärjestelmässä haitallisia toimintoja. (Jos sattuu olemaan kirjautuneena hyökkäyksen kohteena olevalle sivustolle.)
Pakko antaa positiivista palautetta! Näinkin itsestään selvä asia on jäänyt minulta tajuamatta, mutta kun tarkemmin asiaa mietiin niin näinhän se on!
Pyynnön tyypillä ei ole käytännössä mitään tekemistä tietoturvan kanssa tässä suhteessa. Molempia voidaan yhtä lailla väärentää.
Juttua aiheesta: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)
timoh: Totta on, että csrf-token pitää välittää molemmissa tapauksissa, mutta väärennettyä get-pyyntöä on huomattavasti helpompi käyttää hyväkseen kuin väärennettyä post-pyyntöä.
Metabolix kirjoitti:
p99o kirjoitti:
esim. kutsumulla delete.php-tiedostoa (vaikka ihan normaali linkki siis),
GET-pyyntöjä ei pidä käyttää asioihin, jotka aiheuttavat olennaisia muutoksia järjestelmässä. Kuten nimikin sanoo, GET-pyyntö on tiedon hakemista varten. Tietojen lisääminen ja poistaminen tehdään yleensä POST-pyynnöillä. Myös PUT ja DELETE sopivat, mutta niiden käyttö on vaikeampaa.
Mutta GET-pyyntöjen tekeminen on paljon helpompaa. Esim.
<a href="delete.php?id=10">Poista sivu</a>
Jos alat säätämään samaa POSTilla, tarvitset tuohon esim. lomakkeen tai javascriptiä. Huomattavasti enemmän koodia!
Olli kirjoitti:
Jos alat säätämään samaa POSTilla, tarvitset tuohon esim. lomakkeen tai javascriptiä. Huomattavasti enemmän koodia!
Koodin pituus on typerä perustelu, kun puhutaan noin kahdesta lisärivistä:
<form action="delete.php" method="post"> <button name="id" value="10">Poista sivu</button> </form>
Linkit ovat siirtymistä varten. Linkistä ei kuulu tapahtua peruuttamattomia toimintoja, vaan linkin klikkaamisen pitäisi olla lähtökohtaisesti turvallista. Linkin käyttäminen poistamiseen on siis hämäävää ja häiritsee sivuston loogista käyttöä.
Mun mielestä on pyynnön tyypistä välittämättä huono idea sallia rivin poisto yhden vahinkoklikkauksen perusteella, olipa kyse linkistä tai submit-napista.
The Alchemist kirjoitti:
Mun mielestä on pyynnön tyypistä välittämättä huono idea sallia rivin poisto yhden vahinkoklikkauksen perusteella, olipa kyse linkistä tai submit-napista.
Ainahan "poisto" -toiminto voi olla vain tietokannasta yhden "julkaistu"-kentän arvon muuttaminen, jolloin tieto ei oikeasti poistu minnekään, vaan piilotetaan vain silmiltä. Tällöin on mahdollista tehdä vaikka "undo"-toiminto poistetuille tiedoille.
Aihe on jo aika vanha, joten et voi enää vastata siihen.