käytetäänkö php-kielisissä webbisovelluksissa yleensä varmistuskysymystä tietueiden poistossa (esim form: poistanappi => poistetaanko tietue k/e)? muissa järeämmissä kielissähän hyvä ohjelmointitapa edellyttää tälläistä varmistusta.
miten tälläisen varmistuksen saa tehtyä ja mihin se kannattaisi liittää (lomakkeeseen vai poistavaa php:n puolelle)?
pieni esimerkkikoodi valaisee asiaa mukavasti!
Jos se liitetään lomakkeeseen, se ei voi olla PHP:tä. Olettaen, että se pitää tehdä nappia painettaessa. Silloin siihen voi käyttää esimerkiksi Javascriptiä.
Alkeellinen, tietoturvaa huomioimaton esimerkki ilman koodia:
katso.php?id=123 -sivulla on linkki sivulle poista.php?id=123
poista.php-koodissa:
- katsot, että poistettava id on olemassa
- jos $_POST['poista'] on asetettu, poista tietue ja tulosta poiston onnistuminen
- jos ei, tulosta tietueen tiedot ja varmistusta kysyvä lomake, joka lähetettäessä asettaa $_POST['poista']:n
lainaus:
Jos se liitetään lomakkeeseen, se ei voi olla PHP:tä. Olettaen, että se pitää tehdä nappia painettaessa. Silloin siihen voi käyttää esimerkiksi Javascriptiä.
entäs toiminta silloin kun Javascript-toiminta on estetty selaimessa?
volume kirjoitti:
lainaus:
Jos se liitetään lomakkeeseen, se ei voi olla PHP:tä. Olettaen, että se pitää tehdä nappia painettaessa. Silloin siihen voi käyttää esimerkiksi Javascriptiä.
entäs toiminta silloin kun Javascript-toiminta on estetty selaimessa?
No, silloin se ei toimi. Harvalla vain on Javascript pois käytöstä. Se riippuu tietenkin ihan tarkoituksesta, että mihin sitä teet.
Itse olen yleensä yhdistänyt javascriptin ja Chimanin selostuksen mukaisen. Eli jos JS on päällä niin se kysyy vahvistuksen ja asettaa myöntävästi vastattuna "poista" kentän valmiiksi. Jos JS on pois päältä niin varmistus tulee palvelimelta.
Tosin nykyisin kyllä tulee tehtyä enemmän systeemeitä jotka ei toimi ollenkaan ilman JS:ää. Mutta kyllä jos on sellainen systeemi, missä JS ei ole oikeasti välttämätön, niin pyrin varmistamaan toimivuuden ilman sitäkin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.