Hallo,

Ik heb een contactformulier waarin de afhandeling en het formulier in hetzelfde PHP bestand zitten. Ik gebruik POST variabelen.


Nu heb ik last van het bekende probleem dat na verzending het formulier opnieuw verzonden wordt als ik de pagina ververs. Voor zover ik weet is het niet mogelijk om de POST variabelen leeg te maken direct na verzending, omdat ze nog in het geheugen van de browser zitten.

Heeft iemand hier een idee wat te doen om dit probleem te voorkomen?

Guido
Ja, dat bedoel ik dus ook.
Dan moet je de $_POST in een sessie opslaan.
We praten langs elkaar heen. Ik vind het juist prima dat de POST array leeg is want het enige wat ik wil tonen als validatie correct is, is een "Dank U" bericht. En een leeg formulier.
Waarom na invoeren een leeg formulier tonen? Dat moedigt spammers juist weer aan om nog een keer wat in te voeren.

En ik denk dat weinig bezoekers van je site het nodig vinden om direct een bericht erachteraan te gooien.
En anders vinden ze de link vast wel ;-)

Op lijn 46 vindt er een redirect plaats naar confirmation.html. Dat is de plek voor het "Dankjewel!" bericht.
Volgens mij is hier inderdaad sprake van enige miscommunicatie :-). Als je mijn voorbeeld aanhoudt dan werkt het inderdaad zoals je wilt. Is de validatie geslaagd en zijn de gegevens verwerkt dan doe je een redirect. Vergeet niet een exit(); achter de redirect te plaatsen overigens.
Frank Nietbelangrijk op 24/09/2018 18:00:10
Vergeet niet een exit(); achter de redirect te plaatsen overigens.


Of introduceer hiervoor een functie.
Vriendelijk dank voor jullie reacties. Weer veel geleerd.

Guido
Nog een optie:

Doe een "algemene pre-check" met javascript om de "normale bezoekers" te faciliteren.
Pas als je door de pre-check heen komt, verstuur je het formulier werkelijk en check het het met PHP.
Scheelt een hoop onnodig gePOST naar je server.

<form action="" method="" onsubmit="javascript: return checkForm(this);">

</form>

<script type="text/javascript">

function checkForm(oFormElement)
{
	var bErrorFound = false;

	if(????) // Is er een error gevonden
	{
		bErrorFound = true;
	}

	return (bErrorFound == false);
}

</script>

Reageren