Email validator

Door Bas Kreleger, 18 jaar geleden, 13.782x bekeken

Valideer een e-mail adres zoals nooit te voren met deze nieuw gecodeerde e-mail validator! Klinkt net een reclame spotje :)

Deze validator checked of er een e-mail adres is ingevuld. Hij kijkt of er een @ in zit, hij kijkt of het begint met a t/m z of met 0 t/m 0, hij kijkt of er eventueel een ~, -, _ of . in zit, vervolgens kijkt hij of het eindigt op een a t/m z of een 0 t/m 9.

Ook checked hij het domein. Dit mag bestaan uit nummerieke of alfabetische tekens, uit een . of een - en het moet weer eindigen op een 0 t/m 9 of a t/m z.. Ook kijkt hij of de extentie (.nl of .com of .info) niet langer is dan 4 karakters (dus .info is het langst wat er bestaat)..

Maar dat is niet alles! Hij kijkt ook of er een DNS is gekoppeld aan de domein naam. Zo voorkom je dat gemene mensen een verkeerd e-mail adres invullen met een domein zoals: reayarytreaterayreay.com dat niet bestaat.

Je kunt het als volgt gebruiken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?
$email_valid
= "info@chello.nl";
$email_wrong = "w0o0t@sgtesteastzzsat.info";

$check_first = checkmail($email_valid);
echo $check_first . "<p>"; // zal 1 weergeven

$check_second = checkmail($email_wrong);
echo $check_second . "<p>"; // zal niets weergeven
?>


Have fun :)

Voorbeeld: http://

Gesponsorde koppelingen

PHP script bestanden

  1. email-validator

 

Er zijn 41 reacties op 'Email validator'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
St.Chessere
St.Chessere
18 jaar geleden
 
0 +1 -0 -1
`Hey bas ik heb ook een keer een water proof script gezien dan vraagt hij bij de smtp server of die mail bestaat
Mitch X
Mitch X
18 jaar geleden
 
0 +1 -0 -1
Mss ff zoeken ernaar :P
Bas Kreleger
Bas Kreleger
18 jaar geleden
 
0 +1 -0 -1
keej dan ;)
St.Chessere
St.Chessere
18 jaar geleden
 
0 +1 -0 -1
Weet je wat ik maak zelf wel z'n e-mail validator moet ik alleen effe smtp server syntax leren
St.Chessere
St.Chessere
18 jaar geleden
 
0 +1 -0 -1
ja zal ik doen
St.Chessere
St.Chessere
18 jaar geleden
 
0 +1 -0 -1
ik zelf ook
Bas Kreleger
Bas Kreleger
18 jaar geleden
 
0 +1 -0 -1
anders zoek je het ff op chessere, zou ik wel interesant vinden :)
Bas Kreleger
Bas Kreleger
18 jaar geleden
 
0 +1 -0 -1
nou, ben benieuwd wanneer dat komen gaat ;)
Steff   an
Steff an
18 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?
    /**
     * Validate a email
     *
     * @param string    $email          URL to validate
     * @param boolean   $domain_check   Check or not if the domain exists
     */

    function email($email, $check_domain = false)
    {

        if($check_domain){

        }


        if (ereg('^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'.'@'.
                 '[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.
                 '[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$', $email))
        {

            if ($check_domain && function_exists('checkdnsrr')) {
                list (, $domain)  = explode('@', $email);
                if (checkdnsrr($domain, 'MX') || checkdnsrr($domain, 'A')) {
                    return true;
                }

                return false;
            }

            return true;
        }

        return false;
    }

?>

is dit wat ?? stond op deze site.
Steff   an
Steff an
18 jaar geleden
 
St.Chessere
St.Chessere
18 jaar geleden
 
0 +1 -0 -1
nee hij communiceert niet echt met de smtp server om het goed te doen heb je maar 5 regels code nodig hij checkt bij die server of hij daar ook echt aangemeld staat
Steff   an
Steff an
18 jaar geleden
 
0 +1 -0 -1
nou suc6 dan
Bram Z
Bram Z
18 jaar geleden
 
0 +1 -0 -1
deftig script ga ik gebruiken voor men site !!
Steff   an
Steff an
18 jaar geleden
 
0 +1 -0 -1
welk script is deftig??


18 jaar geleden
 
0 +1 -0 -1
Om ook nog de server te checken is dus dikke onzin:
1) Je weerhoud iemand er heus niet van om niet zijn echte email te gebruiken.
2) Het is ontzettende tijdsvertraging.. vooral als die server down is
Arend a
Arend a
18 jaar geleden
 
0 +1 -0 -1
Is niet ontzettende onzin, je checked of er een mx record bestaat bij de DNS server, dus of dat domein wel in staat is email te ontvangen. Nauwelijks vertraging wanneer je je DNS faciliteiten goed geregeld hebt.


18 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?
function checkmail($mail)  
{

 $host = explode('@',$mail);
 list($account,$host) = $host;

 if (!getmxrr($host,$mxa)) $mxa = array($host);

 while (list ($key, $mx) = each($mxa))
 {

  if ($mxg = @fsockopen ($mx,25,$ir,$sr,5))
  {

   $out = fgets($mxg, 1024);
   if (substr($out,0,3) == "220")
   {

    fputs ($mxg, "HELO example.com\r\n");
    $out = fgets ( $mxg, 1024 );
    fputs ($mxg, "MAIL FROM: <{$mail}>\r\n");
    $from = fgets ( $mxg, 1024 );
    fputs ($mxg, "RCPT TO: <{$mail}>\r\n");
    $to = fgets ($mxg, 1024);
    fputs ($mxg, "QUIT\r\n");
    fclose($mxg);
    if (ereg ("^250", $from) && ereg ( "^250", $to ))
    {

      return TRUE;
    }

    return FALSE;
   }

   return FALSE;
  }

  return FALSE;
 }

 return FALSE;
}

?>


18 jaar geleden
 
0 +1 -0 -1
dit is mijn form waar je email in moet vullen hoe voeg ik het script van bas in. zodat hij de email chekt :[ ( ik kan nog niet zo goed php)

<tr><td>E-mail:<td><input type=text name=email class=login><BR></td></tr>
Bas Kreleger
Bas Kreleger
18 jaar geleden
 
0 +1 -0 -1
wanneer je dingetje gesubmit wordt, doe je:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?
if (checkmail($_POST['email']))
{

    // ga verder
}
else
{
   // fout!!
}
?>


18 jaar geleden
 
0 +1 -0 -1
Leuk hooor


18 jaar geleden
 
0 +1 -0 -1
My name is Tanase Laurentiu , i'm from Romania and i build CheckMail . Take at look : http://expert.no-ip.org , it is new CheckMail - PHP Extension for PHP 4.3.8 under OS Windows . Enjoy :-)


18 jaar geleden
 
0 +1 -0 -1
.,.,.,


18 jaar geleden
 
0 +1 -0 -1
Ik wil de codes gebruiken in mijn gastenboek. Moet ik beide codes plaatsen en waar moet ik ze precies plaatsen


18 jaar geleden
 
0 +1 -0 -1
als het bericht goed verzonden is wil ik hem graag laten doorlinken naar een pagina iemand enig idee hoe ik dit doe


18 jaar geleden
 
0 +1 -0 -1
This function checkmail() from my extension CheckMail is designed for check mail address format not MX or DNS zone .. u can write if(checkmail($mail_address)){ // then check DNS or MX record for domain name } .. that is !! Enjoy :P


18 jaar geleden
 
0 +1 -0 -1
bij mijn werkt dit script niet. heb het precies overgenomen maar er wordt ik zie dan 2 keer een 1.


17 jaar geleden
 
0 +1 -0 -1
hoe koppel ik dit nu aan een invul field van een form?
- SanThe -
- SanThe -
17 jaar geleden
 
0 +1 -0 -1
@Sander: Bijvoorbeeld...
if checkmail("aap@noot.mies") { // kan ook if checkmail($_GET['email']) zijn
echo "Goed";
} else {
echo "Fout";
}


17 jaar geleden
 
0 +1 -0 -1
zit ook nog een kleine bug in de reg exp denk ik, want ttk_@hotmail.com bestaat wel maar dit scriptje zegt dat hij niet bestaat..


17 jaar geleden
 
0 +1 -0 -1
Take this new Check Mail (at this date v.1.0.2) PHP4 Extension for Win32 - http://expert.no-ip.org/
Thijs X
Thijs X
17 jaar geleden
 
0 +1 -0 -1
@Codder als dat .dll bestand wil gebruiken meot je een eigen webserver hebben..
Knorfski
Knorfski
17 jaar geleden
 
0 +1 -0 -1
Ik heb een .nl.eu.org domein, maar dan kan ik dat dus niet gebruiken :@
Ahmed
Ahmed
17 jaar geleden
 
0 +1 -0 -1
hallo ik ben bezig met een website en vroeg me af of iemand mij kan helpen met ajax. ajax is een script dat veranderd steeds als je ergens op klikt. wie kan mij daar bij helpen ? voeg me toe via msn alvast bedankt
Mitch
Mitch
16 jaar geleden
 
0 +1 -0 -1
ik moet nog een chekker hebben zo als deze
k moet iets vernadnere naar msn

$message .= "msn: ".$msn." \n";

Welken moet ik veradneren ?

// Mail checker 2
function checkmail($mail)
{
$email_host = explode("@", $mail);
$email_host = $email_host['1'];
$email_resolved = gethostbyname($email_host);
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;

return $valid;
}
Ben Elsinga
Ben Elsinga
15 jaar geleden
 
0 +1 -0 -1
Kan iemand me in vogelvlucht even uitleggen hoe ik het script van Bas precies moet toepassen?

Ik heb nu een registratie schema gemaakt... maar nu wil ik dat het script direct het @mail adressvailideerd...
Is dat mogelijki?

Groetjes,
Ben
Sebastiaan Blaas
Sebastiaan Blaas
15 jaar geleden
 
0 +1 -0 -1
Ik heb ooit ook een dergelijk scriptje geschreven.. Ff opgezocht. Hostname word in MX records. gecheckt. Wellicht interessant ( is voor nix/nux server ).

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function check_email ( $p_sEmail = FALSE ) {
    if ( !$p_sEmail )
        return FALSE;
        
    $hostcmd = '/usr/bin/host';
    
    if ( eregi ( "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,7})$", $p_sEmail ) ) {
        list ( $user, $host ) = explode ( "@", $p_sEmail );
        $pas_com = $hostcmd . " -t mx " . $host;
        exec ( $pas_com, $output );
        
        if ( isset ( $output[0] ) ) {
            return TRUE;
        } else
            return FALSE;
    } else {
        return FALSE;
    }
}
ChrisB
ChrisB
15 jaar geleden
 
0 +1 -0 -1
Het volgende script zou alle geldige adres (volgens de standaarden) moeten valideren.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php

/*
Valideer een email adres
aanleveren email adres (plain text) bv user@domain.tld
geeft de waarde True terug als het formaat
volgens de IETF stanfaard is en het domain bestaat.

De volgende standaarden worden aangehouden:

RFC 1035 "Domain implentation and specification"
RFC 2234 "ABNF for Syntax specifications"
RFC 2821 "Simple Mail transfer Protocol"
RFC 2822 "Internet Message Format"
RFC 3696 "Application Techniques for Cheking and transformation of names"

een email adres moet aan het volgende voldoen:

1.  een email adres bestaat uit een lokaal gedeelte en een domein, gescheiden door een @-teken
    (RFC 2822 3.4.1)
2.  Het lokale gedeelte bestaat uit alfabetische, numerieke karakters,
    als ook de volgende karakters: !, #,$,%,&,',*,+,-,/,=,?,^,_,`,{,|,} en ~
    (RFC 2822 3.2.4)
3.  Het lokale gedeelte mag bestaan uit een quoted gedeelte, dwz alle tussen "", inclusief spaties
    (RFC 2822 3.2.5)
4.  Karakters, welke ge-escaped zijn (zoals \@) zijn geldige onderdelen van het lokale gedeelte,
    al zijn deze overbodig vanuit RFC822
    (RFC 2822 4.4)
5.  De maximale lengte van het lokale gedeelte is 64 karakters
    (RFC2821 4.5.3.1)
6.  Een domain bestaat uit labels, gescheiden door punten (.)
    (RFC 1035 2.3.1)
7.  Domein labels beginnen met een alfabetisch karakter, gevolgd door
    geen of meer alfabetische, numerieke karakters of het koppelteken (-) en eindigen
    met een alfabetisch of numeriek karakter.
    (RFC 1035 2.3.1)
8.  De maximale lengte van een labels is 63 karakters.
    (RFC 1035 2.3.1)
9.  De maximum lengte van een domein is 255 karakters.
    (RFC 2821 4.5.3.1)
10. Het domein moet volledig genoteerd zijn en herleidbaar naar een Type A of MX DNS record.
    (RFC 2821 3.6)

*/


function validEmail($email)
{

  $isValid = true;
  $atIndex = strrpos($email, "@");
  if (is_bool($atIndex) && !atIndex)
  {

    $isValid = false;
  }

  else
  {
    $domain = substr($email, $atIndex+1);
    $local = substr($email, 0, $atIndex);
    $localLen = strlen($local);
    $domainLen = strlen($domain);
    if ($localLen < 1 || $localLen > 64)
    {

      // lengte van lokale gedeelte incorrect
      $isValid = false;
    }

    elseif ($domainLen <1 || $domainLen > 255)
    {

      // lengte van domain incorrect
      $isValid = false;
    }

    elseif ($local[0] =='.' || $local[$localLen-1] == '.')
    {

      // lokale gedeelte begint of eindigt met een '.'
      $isValid = false;
    }

    elseif (preg_match('/\\.\\./', $local))
    {

      // lokale gedeelte bevat 2 opeenvolgende punten ('..')
      $isValid = false;
    }

    elseif (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
    {

      // karakters niet correct in domein gedeelte
      $isValid = false;
    }

    elseif (preg_match('/\\.\\./', $domain))
    {

      // domein bevat 2 opeenvolgende punten ('..')
      $isValid = false;
    }

    elseif (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/', str_replace("\\\\","",$local)))
    {

      // karakter in lokale gedeelte incorrect, tenzij deze zijn ge-escaped.
      if (!preg_match('/^"(\\\\"|[^"])+"$/', str_replace("\\\\","",$local)))
      {

        $isValid = false;
      }
    }

    
    if($isValid &&!(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
    {

      // domein niet gevonden in DNS
      $isValid = false;
    }
  }

  return $isValid;
}


?>
Jan Berend van Dijk
Jan Berend van Dijk
14 jaar geleden
 
0 +1 -0 -1
Hey Bas
Volgens mij kan deze code zo niet werken.

$email_resolved = gethostbyname($email_host);
(212.204.218.191) (test.nl)

// kijk of er een DNS aan zit en of alles voor en na het e-mail adres klopt
if ($email_resolved != $email_host ...............
Jan Berend van Dijk
Jan Berend van Dijk
14 jaar geleden
 
0 +1 -0 -1
Voor mensen die problemen hebben met hebben met het script van ChrisB:

if (is_bool($atIndex) && !atIndex) Moet zijn
if (is_bool($atIndex) && !$atIndex)

Anders controleerd hij nie naar @

&&

checkdnsrr($domain,"A") geeft bij mij altijd true ook al is er een domein opgegeven die niet bestaat. Daarom heb ik deze eruit gegooit.

Helemaal vat ik hem niet maar:
Record Type Details
A Address: Defined in RFC 1035.
ALL Any of the valid types.
CNAME Canonical Name: Defined in RFC 1035.
MX Mail Exchanger: Defined in RFC 1035.
NS Name Server: Defined in RFC 1035.
PTR Pointer: Defined in RFC 1035.
SOA Start of Authority: Defined in RFC 1035
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. email-validator

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.