Avatar billede tingholm Mester
14. september 2009 - 13:39 Der er 9 kommentarer og
1 løsning

validere mailadresse

Hej Eksperter

Findes der i PHP en funktion til at validere mail?
isvalidmail("test@domain.com") som returnerer true/false eller lign?

Alternativt, er der muligvis nogen der har noget hjemmegjort liggende, så jeg slipper for at opfinde den dybe tallerken endnu engang?
Avatar billede olebole Juniormester
14. september 2009 - 14:16 #1
Avatar billede paro Nybegynder
14. september 2009 - 14:39 #2
Her er en javascript funktion der validerer en email. Den returnerer true eller false.

function checkEmail(email){
        var at="@";
        var dot=".";
        var lat=email.indexOf(at);
        var lstr=email.length;
        var ldot=email.indexOf(dot);
       
        if (email.indexOf(at)==-1){
          alert("Invalid E-mail")
          return false
        }

        if (email.indexOf(at)==-1 || email.indexOf(at)==0 || email.indexOf(at)==lstr){
          alert("Invalid E-mail")
          return false
        }

        if (email.indexOf(dot)==-1 || email.indexOf(dot)==0 || email.indexOf(dot)==lstr){
            alert("Invalid E-mail")
            return false
        }

        if (email.indexOf(at,(lat+1))!=-1){
            alert("Invalid E-mail")
            return false
        }

        if (email.substring(lat-1,lat)==dot || email.substring(lat+1,lat+2)==dot){
            alert("Invalid E-mail")
            return false
        }

        if (email.indexOf(dot,(lat+2))==-1){
            alert("Invalid E-mail")
            return false
        }
       
        if (email.indexOf(" ")!=-1){
            alert("Invalid E-mail")
            return false
        }
        return true                   
    }
Avatar billede olebole Juniormester
14. september 2009 - 15:11 #3
JavaScript kan kun bruges i forbindelse med at øge brugervenligheden - men er ikke en tøddel værd som alm. datavalidering. Den slags tjek skal udføres med serverkode, da ethvert JavaScript er lige til at omgå  =)
Avatar billede danm Nybegynder
14. september 2009 - 22:42 #4
Brug altid javascript først.. Det gør nemmere for brugeren, og dig selv. Men ja php tjek bagefter er vigtigt:

Et par funktioner jeg har støvet sammen:

Javascript email tjek:
-----------------------------
function validate(email) {
  var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
 
  if(reg.test(email) == false) {
      alert('Invalid Email Address');
      return false;
  }
}

PHP email tjek
----------------------------
function isemailvalid ($email) {
  if (eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]", $email))
  {
    return FALSE;
  } else {
    return TRUE
  }
}

PHP email tjek udvidet (tjekker DNS)
------------------------------------
function isValidEmail($address)
{
  $address = trim($address);
  list(,$host) = split('@',$address);
  if (!preg_match('/^[-!#$%&\'*+\\.\/0-9=?A-Z^_`{|}~]+' . // username
      '@' .                                  // 'at'
      '([-0-9A-Z]+\.)+' .                    // domain name(s)
      '([0-9A-Z]){1,6}\.?$/i',                // tld
      $address))
  {
      // Return true if it's an IP
      return preg_match( "/^\[(\d{1,3}\.){3}\d{1,3}\]$/", $host );
  }
  $host .= '.'; // DNS style address
  return (getmxrr($host,$mxrecords) || checkdnsrr($host,'ANY'));
}
Avatar billede psychopixi Nybegynder
14. september 2009 - 23:49 #5
Dette script tjekker for korrekt e-mail syntax:

<?php
$email = "someone@domain.com";
if (preg_match("/^[a-zA-Z0-9._-]+@([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,4}+$/", $email)){
    echo "$email is considered a <b>valid</b> email address.<br/>";
}
else{
    echo "$email is considered an <b>invalid</b> email address<br/>";
}
?>


Scriptet tager højde for alle tilladte tegn til e-mail, samt at top-level-domain (TLD) skal være mellem 2 og 4 tegn langt. Det tager højde for alle TLD, bortset fra .museum og .travel, der dog begge er meget lidt brugte.
Se mere her: http://en.wikipedia.org/wiki/List_of_Internet_top-level_domains
Avatar billede olebole Juniormester
15. september 2009 - 13:33 #6
Ingen af de viste scripts kan som sagt bruges til at validere en e-mail-adresse. Inden af de to vil f.eks. tillade den helt valide ole@eksempel.museum - omend den ikke er særlig almindelig.

Eksemplet viser til gengæld med al ønskelig tydelighed, at man skal passe på med at være for nøjeregnende. De fleste ubrugelige e-mail-adresser, man finder i newsletter databaser o.lign. er på formen bla@bla.dk og test@test.dk. Derfor betaler det sig ofte at lave et mere 'afslappet' tjek
Avatar billede tingholm Mester
22. oktober 2009 - 10:33 #7
ok, tak for hjælpen allesammen
psychopixi og danm, smider i svar til points? Det var vist de mest konkrete svar.
Avatar billede psychopixi Nybegynder
22. oktober 2009 - 13:56 #8
Hermed svar
Avatar billede tingholm Mester
26. oktober 2009 - 13:55 #9
danm: skynd dig lige at smide et svar så du kan få points også. Vil gerne lukke spm :)
Avatar billede tingholm Mester
28. oktober 2009 - 15:50 #10
Så blev der dømt nøl... Håber danm overlever ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester