E-mailadres valideren (jQuery & PHP)

Waar de eindgebruiker zijn gegeven kan invoeren, is het vaak ook nodig om het e-mailadres in te laten voeren. Indien je wilt voorkomen dat de gebruiker een verkeerd e-mailadres invoert kan het soms lastig zijn hier een goede functie voor te vinden. Speciaal daarvoor heb ik deze tutorial geschreven, om dit soort problemen te voorkomen.

PHP

PHP 5 < 5.2.0

Bij nieuwere PHP versies is er al een functie hiervoor ingebouwd, bij oudere PHP versies zul je dit zelf moeten regelen. Het makkelijkste is om dit met een zogenaamde reguliere expressie te regelen. De code ziet er dan als volgt uit:

  1. ereg("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]", $email);

Dit kan ook eenvoudig in een functie gegoten worden:

  1. function checkEmail($email) {
  2.         return ereg("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]", $email);
  3. }

Deze functie kan dan als volgt worden aangeroepen:

  1. if(checkEmail('email@adres.nl')) {
  2.         echo 'Het e-mail adres is goed';
  3. } else {
  4.         echo 'U heeft een incorrect e-mail adres opgegeven!';
  5. }

PHP 5 >= 5.2.0

Vanaf PHP versie 5.2.0 is er een ingebouwde functie waarmee e-mail adressen gecontroleerd kunnen worden: filter_var. Hiermee kan vrij eenvoudig een e-mail adres gecontroleerd worden:

  1. filter_var('email@adres.nl', FILTER_VALIDATE_EMAIL);

Ook deze optie kan in een functie gegoten worden:

  1. function checkEmail($email) {
  2.         return filter_var($email, FILTER_VALIDATE_EMAIL);
  3. }

Combineren

Om een goede comptabiliteit van je script te garanderen, kun je beter allebei de functies gebruiken. Dat gaat zo in zijn werk:

  1. function checkEmail($email) {
  2.         if(function_exists('filter_var')) {
  3.                 return filter_var($email, FILTER_VALIDATE_EMAIL);
  4.         } else {
  5.                 return ereg("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]", $email);1
  6.         }
  7. }

Deze functie zal altijd werken, ongeacht de gebruikte PHP versie.

jQuery

Om de gebruiker te waarschuwen voor een verkeerd e-mail adres bij het invullen hiervan, kan een jQuery functie uitkomst bieden. De functie ziet er als volgt uit:

  1. function checkEmail($email) {
  2.         var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
  3.         return emailReg.test($email);
  4. }

Deze functie kan als volgt worden toegepast:

  1. if(!checkEmail($("input[name=email]").val())) {
  2.         alert('Verkeerd e-mail adres (' + $("input[name=email]").val() + ')');
  3. }

Live demo