Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Formien tyhjeneminen

auttakee [26.09.2016 03:05:15]

#

if (isset($_POST["nimi"]) AND isset($_POST["otsikko"]) AND isset($_POST["teksti"]) ) {
  if($_POST["nimi"] == "" or $_POST["teksti"] == "" or $_POST["otsikko"] == ""){
echo 'Nimi, otsikko ja viesti kentät ovat pakolliset!';
}
else{
echo 'Viestin lähetys onnistui!';

$nimi = strip_tags($_POST["nimi"]);
$otsikko = strip_tags($_POST["otsikko"]);
$teksti = strip_tags($_POST["teksti"]);
$sahkoposti = strip_tags($_POST["sahkoposti"]);
$kuittaus = strip_tags($_POST["kuittaus"]);

Elikkäs mulla on noin. Ongelmana tuossa, että jos tulee tuo "error" viesti ja tieto ei lähde tietokantaan niin nuo tekstilaatikot tyhjenevät ja haluaisin välttää tämän. Miten saan ne jäämään siihen?

Grez [26.09.2016 07:39:01]

#

Tuossahan ei ole mitään sellaista koodia näkyvissä, mikä liittyisi lomakkeen näyttämiseen, joten suoraan on vaikea sanoa miten koodia pitäisi muuttaa.

Mutta jos oletetaan, että virheen tapauksessa lomake näytetään uudelleen, niin sitten vaan laitat nuo $_POST -taulukossa tulevat arvot lomakkeelle valmiiksi.

multigamerr85 [26.09.2016 07:59:19]

#

Vastauksen kysymykseesi löydät tästä Stack Overflown keskustelusta: http://stackoverflow.com/questions/5198304/how-to-keep-form-values-after-post

groovyb [26.09.2016 08:10:13]

#

Sinun pitää palauttaa epävalidi data takaisin näkymääsi, jotta saat kenttien tiedot takaisin formille. Eli nykyisen mallin sijaan, mäppää formi olioon, ja postaa se serverille. mikäli data on epävalidia, palauta oliosi takaisin näkymään.

Metabolix [27.09.2016 18:19:20]

#

Fiksu ratkaisu olisi käyttää HTML-attribuutteja ja JavaScriptia lomakkeen esitarkastukseen, jotta käyttäjä saisi heti tiedon, jos jotain puuttuu. Esimerkiksi pakolliset kentät voi merkitä required-attribuutilla, kuten tälläkin sivulla on tehty.

groovyb [27.09.2016 19:02:36]

#

Clientside tarkistus on aina lisä. Validoinnit pitää aina, ja poikkeuksetta toteuttaa myös palvelinpäähän.

Metabolix [27.09.2016 19:42:17]

#

groovyb kirjoitti:

Clientside tarkistus on aina lisä. Validoinnit pitää – –

Tietenkin pitää. Kysymys kuitenkin koski lomakkeen tyhjenemistä virhetilanteessa, ja siihen selainpuolen tarkastus on käyttökokemukseltaan yleensä hyvä ratkaisu.

Jos kaikki lomakkeen täyttämiseen liittyvät virheet käsitellään jo selaimessa, voidaan palvelimella olettaa, että mahdollinen virhetilanne on tahallaan aiheutettu. Silloin palvelin voi vain ilmoittaa virheen, ja lomakkeen näyttäminen uudestaan (ja arvojen säilyttäminen) ei ole tärkeää. Itse asiassa virhesivulta pääsee sitten selaimen back-napilla takaisin täytettyyn lomakkeeseen, jos sivu on järkevästi toteutettu.

Toki sopivalla kirjastolla lomakkeen virheiden näpertely on ihan helppo myös palvelimella, mutta jos koodataan alkeellista PHP:tä, kuten aloittaja ilmeisesti tekee, lomakkeen aiempien tietojen näyttäminen ilman bugeja voi olla haastavaa (etenkin select, checkbox ym.). Siksi kannattaa palvelimella panostaa tietoturvaan ja selainpuolella käyttökokemukseen.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta