Home Ontwerp je site PHP Een e-mailformulier maken (gevorderd)

Een e-mailformulier maken (gevorderd)

Na het doornemen van het artikel over het versturen van een e-mailformulier ben je in staat om een eenvoudig formulier vanaf je site te laten versturen naar een e-mailadres. We kunnen dit e-mailformulier echter nog meer gaan uitbreiden.

Zo kunnen we onze invoercheck gaan uitbreiden en ons mailbericht meer opties meegeven.

Invoer controleren

In het basisartikel hebben we al geleerd dat je altijd eerst moet controleren of de gebruiker wel iets heeft ingevuld. Dit is echter geen volledig realistische situatie.

Stel dat de gebruiker overal 1 letter invoert, dan wordt dit beschouwd als geldige invoer en wordt het formulier verstuurd.

Dat willen we natuurlijk vermijden. We gaan dit oplossen door het aantal ingevoerde karakters te gaan tellen.

In het tekstveld naam moet de gebruiker minimaal 2 karakters invoeren. We gaan ervan uit dat "An", "Jo",... de kortste namen zijn die kunnen ingevoerd worden.

Om karakters te tellen, kunnen we gebruik maken van de ingebouwde PHP-functie strlen(). Het tellen van het invoerveld gebeurt dan zo:

<?php 
strlen
($naam);
?>

We koppelen hieraan de controle met de gekende if-structuur:

<?php 
if(strlen($naam) < 2)

  echo 
"<p>Je hebt geen naam ingevuld.</p>";

?>

Omdat we onze invoercheck nu gedetailleerder hebben opgesteld, kunnen we de check met empty() achterwege laten. Wanneer het veld leeg is, krijgen we ook met strlen() de foutmelding te zien, want 0 tekens is ook kleiner dan 2.

In het tweede veld moet een gebruiker een leeftijd invullen. Hier moet een gebruiker dus steeds een numerieke waarde invullen. Hiervoor bestaat de ingebouwde PHP-functie is_numeric().

<?php 
if(!is_numeric($leeftijd))

  echo 
"<p>Je hebt geen geldige leeftijd opgegeven.</p>";
}
?>

Wanneer de gebruiker een letter invoert, zal hij dus een foutmelding krijgen en wordt het formulier niet doorgestuurd. We kunnen de controle op de leeftijd echter nog uitbreiden.

Een mens kan nooit ouder worden dan een getal met 3 getallen (in de 100 is het maximum). Met behulp van de operator AND kunnen we beide checks samenvoegen:

<?php 
if(!is_numeric($leeftijd) || strlen($leeftijd) > 3)

  echo 
"<p>Je hebt geen geldige leeftijd opgegeven.</p>";
}
?>

Tot slot verfijnen we nog onze controle op het berichtveld. Laten we zeggen dat een bericht minimaal uit 15 tekens moet bestaan. De code is dan analoog met die voor tekstveld naam en ziet er zo uit:

<?php 
if(strlen($bericht) < 15)
{
  echo 
"<p>Je hebt geen bericht ingevuld.</p>";

?>

Ook hier valt de check met empty() dan weg. Onze totale invoercontrole ziet er nu zo uit:

<?php 
if(strlen($naam) < 2)

  echo 
"<p>Je hebt geen naam ingevuld.</p>";
}
elseif(!
is_numeric($leeftijd) || strlen($leeftijd) > 3)

  echo 
"<p>Je hebt geen geldige leeftijd opgegeven.</p>";
}
elseif(
strlen($bericht) < 15)

  echo 
"<p>Je hebt geen bericht ingevuld.</p>";

?>

Als de gebruiker nu 2 velden leeg laat, zal hij toch maar één foutmelding te zien krijgen (diegene die eerst voorkomt). Dit kunnen we voorkomen door alle foutmeldingen in 1 variabele te stoppen.

Op het einde drukken we dan die variabele af. Deze variabele noemen we gemakkelijkheidshalve $error.

De totale controle ziet er dan zo uit:

<?php 
if(strlen($naam) < 2)

  
$error .= "<p>Je hebt geen naam ingevuld.</p>";

if(!
is_numeric($leeftijd) || strlen($leeftijd) > 3
  { 
  
$error .= "<p>Je hebt geen geldige leeftijd opgegeven.</p>";
  }
if(
strlen($bericht) < 15)
  { 
  
$error .= "<p>Je hebt geen bericht ingevuld.</p>";
  } 

if (isset(
$error)) 

  
// error afdrukken
  
echo "<p><strong>Je bericht is niet verzonden.</strong></p>"
  echo 
$error "<br />"
  echo 
"<p><a href=\"javascript&amp;#058;history.back()\">Probeer opnieuw</a>.<br /><br /></p>";

?>

Zo ziet je PHP-code er meteen veel ordelijker uit en krijg je al een pak minder ongeldige mails binnen!

U kan het vervolg lezen in dit artikel: "html mail versturen"


9 + 4 =
 

GOOGLE adsense