login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Probleem html en php contactformulier validatie

Offline gamertje - 04/05/2014 14:21 (laatste wijziging 04/05/2014 16:30)
Avatar van gamertjeNieuw lid Beste mensen,

Ik zal graag willen dat als ik op versturen klik en er is niks ingevuld of het is niet volledig ingevuld dat er dan een foutmeldingen direct eronder wordt weergegeven. (Zoals op de onderstaande foto bijvoorbeeld)

http://i59.tinypic.com/21oplko.png

Ik heb dus geen zin om op op een lege pagina te komen zoals nu waar staat wat er fout is.

Iemand die mij hiermee kan helpen of een goede tutorial kan geven.


Alvast bedankt!

7 antwoorden

Gesponsorde links
Offline Jointjeff - 04/05/2014 15:04 (laatste wijziging 04/05/2014 15:07)
Avatar van Jointjeff HTML interesse Je kan het formulier, de validatie en het verzenden in één file zetten: bijvoorbeeld contact.php.

Hier een simpel voorbeeld:

Plaatscode: 142337

De e-mailvalidatie nog even aanpassen naar dit:
  1. if ($_POST['email']=='') {
  2. $error .= "E-mail is niet ingevuld<br>";
  3. }
Bedankt door: gamertje
Offline gamertje - 04/05/2014 15:21 (laatste wijziging 04/05/2014 15:22)
Avatar van gamertje Nieuw lid
Jointjeff schreef:
Je kan het formulier, de validatie en het verzenden in één file zetten: bijvoorbeeld contact.php.

Hier een simpel voorbeeld:

Plaatscode: 142337

De e-mailvalidatie nog even aanpassen naar dit:
[..code..]


Ga er even naar kijken!
Offline Thomas - 04/05/2014 15:45
Avatar van Thomas Moderator
Citaat:
Zal ik graag willen dat als ik op versturen klik en er is niks ingevuld of het is niet volledig ingevuld dat er dan een foutmeldingen direct eronder wordt weergegeven.

Citaat:
Ik heb dus geen zin om op op een lege pagina te komen zoals nu waar staat wat er fout is.
Als je hier een PHP-pagina van maakt, dan kun je de eerder ingevoerde (onvolledige/foute) inhoud terugplaatsen in het formulier, bijvoorbeeld door gebruikmaking van sessies. Let er bij het terugplaatsen in het formulier wel op dat je deze invoer ontdoet van enige speciale (HTML) betekenis, gebruik hiervoor bijvoorbeeld htmlspecialchars(). Zorg er hierbij ook voor dat je met één character set werkt en specificeer deze (zowel in je HTML document, als in de accept-charset property in je formulier alsook in enige escape-functie.

Wellicht een betere manier om te controleren of een formulier-element niet is ingevuld is de getrimde invoer vergelijken met de lege string. Ook kun je de foutmeldingen opslaan in een array. Als je de key van het error-array dezelfde waarde geeft als de naam van het formulierveld dan kun je in het formulier de foutmelding bij dit veld plaatsen. Persoonlijk vind ik niets zo irritant als een formulier dat aangeeft dat er iets fout is, maar niet precies wat (of waar).

  1. $errors = array();
  2. if (trim($_POST['veld']) == '') {
  3. $errors['veld'] = 'veld is verplicht';
  4. }


Ook kun je met de PHP-functie filter_var (PHP versie 5.2.0 en later) controleren of het e-mail adres klopt qua vorm.

  1. if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) {
  2. $errors['email'] = 'het e-mailadres heeft niet het juiste formaat';
  3. }
Offline gamertje - 04/05/2014 16:33 (laatste wijziging 04/05/2014 16:36)
Avatar van gamertje Nieuw lid
FangorN schreef:
[..quote..]Als je hier een PHP-pagina van maakt, dan kun je de eerder ingevoerde (onvolledige/foute) inhoud terugplaatsen in het formulier, bijvoorbeeld door gebruikmaking van sessies. Let er bij het terugplaatsen in het formulier wel op dat je deze invoer ontdoet van enige speciale (HTML) betekenis, gebruik hiervoor bijvoorbeeld htmlspecialchars(). Zorg er hierbij ook voor dat je met één character set werkt en specificeer deze (zowel in je HTML document, als in de accept-charset property in je formulier alsook in enige escape-functie.

Wellicht een betere manier om te controleren of een formulier-element niet is ingevuld is de getrimde invoer vergelijken met de lege string. Ook kun je de foutmeldingen opslaan in een array. Als je de key van het error-array dezelfde waarde geeft als de naam van het formulierveld dan kun je in het formulier de foutmelding bij dit veld plaatsen. Persoonlijk vind ik niets zo irritant als een formulier dat aangeeft dat er iets fout is, maar niet precies wat (of waar).

[..code..]

Ook kun je met de PHP-functie filter_var (PHP versie 5.2.0 en later) controleren of het e-mail adres klopt qua vorm.

[..code..]


Bedankt het is inmiddels al gelukt!

Iemand toevallig nog een tips hoe ik ervoor zorg dat ze niet 20 mails per keer kunnen versturen doormiddel van de F5 toets?
Offline ecoracer - 04/05/2014 17:15
Avatar van ecoracer Nieuw lid ik had ook graag een eenvoudig maar veilig contactformulier gehad, vandaar dat ik erbij heb gezet in mijn topic, verzenden pas mogelijk maken om de 5 minuten b.v.b. zo voorkom je m.i. dat iemand zoals boven aangehaald 20 keer op de F5 toets kan drukken, mijn topic
Offline Jointjeff - 04/05/2014 17:46 (laatste wijziging 04/05/2014 17:48)
Avatar van Jointjeff HTML interesse Wat je kan doen is, wanneer de verzending succesvol is gebleken, een header location definiëren.

  1. // het versturen van de mail met de mail() functie en dan vervolgens...
  2.  
  3. header('location: deurlvanjepaginametsuccesbericht.php?msg=succes');
  4.  
  5. ?>
Offline Thomas - 04/05/2014 20:59
Avatar van Thomas Moderator Zet na een header('Location: ...'); altijd een exit; om verdere uitvoer van code te voorkomen.

Je kunt code overzichtelijker maken door deze op te delen in acties. Meestal zit een contactformulier in een van de drie volgende "toestanden":

- toon het formulier (al dan niet met reeds ingevulde velden en foutmeldingen)
- verwerk het formulier (waarna je of terug wordt gestuurd naar het formulier indien er fouten waren, of je wordt doorgestuurd naar de bedankpagina als het formulier verwerkt is)
- toon de bedankpagina

De action van het formulier verwijst naar de verwerk-actie. Vervolgens wordt het formulier afgekeurd (je wordt middels een header+exit teruggestuurd naar de formulierpagina) of goedgekeurd (verwerken en doorsturen middels header+exit naar bedankpagina).

Als je naar een andere "actie" wordt doorverwezen ben je (de inhoud van) $_POST kwijt, dus kun je ook niet meer eindeloos posten via refresh.
Bedankt door: Jointjeff
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.203s