Door
gerhard timmerman
op 18-04-2012 10:39
gewijzigd op 18-04-2012 11:07
3.172 views
ik heb een form geschreven en een pagina die deze verstuurd waarop een foutmelding komt als iets niet is ingevuld maar hoe geef ik nu de foutmelding op de zelfde pagina weer zodat de persoon de gegevens niet opnieuw hoeft in te voeren als hij wat vergeten is het script is.
Laat je action in je form leeg zo blijft de form op dezelfde pagina, doe hier bovenaan de controle van het formulier.
Bij de input velden doe je dan bijv:
maar dat houd dus in dat ik me tweede pagina van het script waar hij naartoe moet op de zelfde pagina moet doen. sorry dat het script er een beetje romelig hier boven uit ziet maar als ik ze op 1 of andere manier allebij plaats dan doet de pagina raar de andere pagina is
Je hebt in feite de volgende opties:
1) vanuit het form direct posten naar een andere pagina, waarbij je als er een fout is de user via een redirect terug stuurt.
2) vanuit het form posten naar dezelfde pagina en als alles goed is de user via een redirect doorsturen naar de volgende pagina.
3) een eerste check in javascript uitvoeren zodat je voor normale gebruikers (lees: geen hackers die moedwillig fouten invoeren) alles nog in de browser kan controleren en je dus zeker weet dat als je echt post alles ook voldoet aan je eisen.
3 is de mooiste manier voor de gebruiker, omdat de pagina niet hoeft te herladen. Het kost je alleen wel meer werk, omdat je nog steeds OOK de check op de server moet doen. Bij normale gebruiker zal de browser check wel goed gaan, maar bij iemand die moedwillig die check omzeilt krijg je alsnog corrupte data binnen.
ja 1 lijkt me de makelijkste optie maar daar staat wel in tegen dat de gegevens niet meer ingevuld zijn die ze eerder hadden ingevuld. of is hier een oplossing voor
Dit kan je natuurlijk niet doen met heel veel data, or met gevoelige data. Dat soort data zou je normaal met een POST meegeven, dus enige voorzichtigheid is wel geboden.
maar hoe geef ik dat mee terug dat van header location dat zegt mij genoeg van terugsturen maar ik dacht als je iets in de link wil doen dat je dat met get de boel moet versturen maar kun je mij een wat groter voorbeeld geven. of optie 3 lijkt mij ook wel wat dan moet ik het maar aan de kant zetten van dat de database het checkt hoe doe ik deze
Of.... bedenk ik me nu, je kan het tijdelijk in een sessie stoppen. Dus als je de gebruiker terug moet sturen dat stop je alle info die in POST stond in een sessie, redirect de user terug en op de pagina waar je het form opbouwt check je voor de info in de POST array. Wel daarna direct alles daar weer uit halen, anders blijft de gebruiker hetb elke keer weer terug zien.
ja dat zou kunnen maar mijn inlog systeem werkt ook met sessies dus zodra ik die ga vernietigen is de gebruiker ook uitgelogd en dat is niet de bedoeling