[php] Terug bij formulier

Pagina: 1
Acties:

  • Vulpecula
  • Registratie: April 2001
  • Nu online
Ik heb een formulier. Als ik deze submit en controleer of alles wel is ingevuld, en als dit niet het geval is, en terug ga, moet ik alles weer geheel opnieuw invullen. Ik ben erachter gekomen hoe dit komt. Het formulier wordt naar hetzelfde bestand gesubmit en als ik dan terug ga is alles verdwenen. Als ik het controleer gedeelte in een andere bestand zet dan blijven deze gegevens wel behouden. Weet iemand hoe ik dit kan oplossen zonder dat ik een extra bestand moet aanmaken?

Verwijderd

Controles doe ik het liefst met javascript. Dan heb je dat probleem niet. Je kan ook gewoon een history.back() linkje maken. Dan staat meestal al het ingevulde (behalve password input velden) er nog.

Verwijderd

PHP:
1
2
3
4
5
6
7
8
<?
if(!$HTTP_SUBMIT_VARS["optie1"] OR !$HTTP_SUBMIT_VARS["optie2"]) {
   echo "Sorry, niet goed";
}
else {
   echo "Goed zo!";
}
?>

  • Vulpecula
  • Registratie: April 2001
  • Nu online
Op zondag 17 februari 2002 14:43 schreef cyberjoy het volgende:
Controles doe ik het liefst met javascript. Dan heb je dat probleem niet. Je kan ook gewoon een history.back() linkje maken. Dan staat meestal al het ingevulde (behalve password input velden) er nog.
Ik gebruik ook history.back() en toch wordt alles gewist.

  • Vulpecula
  • Registratie: April 2001
  • Nu online
Op zondag 17 februari 2002 14:44 schreef CowMike het volgende:
PHP:
1
2
3
4
5
6
7
8
<?
if(!$HTTP_SUBMIT_VARS["optie1"] OR !$HTTP_SUBMIT_VARS["optie2"]) {
   echo "Sorry, niet goed";
}
else {
   echo "Goed zo!";
}
?>
Het controleer gedeelte heb ik af en dat werkt.

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Alle variablen worden wel weer 'teruggevoerd' aan je script.

Je zou dus (bijv.)

<INPUT TYPE='Text' Name='EMail' VALUE='$EMail'>
kunnen gebruiken, waarbij (als EMail al ingevuld is) en je terugtuurd omdat iets anders fout is de waarde van $EMail alvast ingevuld....

[edit - verduidelijking (hoop ik :P)]
PHP:
1
2
3
4
5
6
<?
print("<TR>");
      print("<TD>$MGS[1]</TD>");
      print("<TD><INPUT Type='Text' Name='EMail' Value='$EMail' Size='20'></TD>");
print("</TR>\n");
?>

Als iets anders dan $E_Mail niet goed is ingevuld en een gebruiker wordt naar het form teruggestuurd 'onthoudt' het form dat $E_Mail al ingevuld is...

Verwijderd

Je kan alle variabelen weer echo'en in de input veldjes, als je de eerste keer erop komt zijn de variableen niet geset, als je iets niet heb ingevuld en je maakt een knopje "terug" (zorg wel dat je je variabelen in hidden fields zet) en dan staan de variabelen in de veldjes.

<input type="text" name="voornaam" value="$voornaam">

zoiets dus....

edit: haha tegelijk TheRookie ;)

Verwijderd

Anders pak je daar je form elementen weer op en submit je die weer naar het formulier (met een bepaalde check of zo). Daar zou je ze ook weer in de value kunnen terugzetten.

- Edit: anchorman en therookie waren me net voor :) -

Verwijderd

als je gewoon op 'vorige' knop drukt blijftie ook staan

  • Anders
  • Registratie: December 2000
  • Laatst online: 24-08 18:29
Als je op "back" [ = history.go(-1) ] vorige drukt wordt soms inderdaad alles gewist, ik ken het probleem. Ik weet helaas niet waar dat nou aan ligt.

Een javascript-check zal dit in de meeste gevallen ondervangen. Is het echt van belang dat het foolproof wordt, zou ik no-cache-headers meegeeven en de gesubmitte waarden bij een submit in sessie-variabelen zetten, en die ophalen als reeds ingevulde waarden als je het formulier toont. Dan worden ze ook bij een back-actie opgehaald en ingevuld. Bestaan die sessie-variabelen niet, dan wordt niks ingevuld. Wel belangrijk is dat je de sessie-variabelen aan een timeframe vindt (timestamp opslaan) en dat je ze tevens wist wanneer de submit succesvol is om de voorkomen dat iemand anders op dezelfde computer die informatie kan zien.

Ik spoor veilig of ik spoor niet.


  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Ik heb dat probleem ook gehad, toen ik werkte met sessions. Het heeft waarschijnlijk met caching te maken. Bij mij stond standaard de session_cache_limiter op nocache. Hierdoor slaat de browser de ingevulde gegevens dus niet op en herlaad de pagina gewoon, na een history.go(-1).

De mooiste manier om het op te lossen is idd je formulier gewoon opnieuw afdrukken met de ingevulde waarden.
Pagina: 1