Kirjautuminen

Haku

Tehtävät

Koodit: PHP: Sähköpostiosoitteen varmistaminen DNS-tietojen avulla

Kirjoittaja: str4nd

Kirjoitettu: 15.12.2006 – 14.12.2011

Tagit: teksti, koodi näytille, vinkki

Sähköpostiosoitteen varmistaminen DNS-tietojen avulla ja säännöllisten lausekkeiden avulla.

Varmistusfunktio

<?php
function tarkista_osoite($osoite) {
  if(
    (preg_match('/(@.*@)|(..)|(@.)|(.@)|(^.)/', $osoite)) ||
    (preg_match('/^.+@(\[?)[a-zA-Z0-9-.]+.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/', $osoite))
  ) {
    $host = explode('@', $osoite);
    if( checkdnsrr($host[1], 'MX') ) return true;
    if( checkdnsrr($host[1], 'A') ) return true;
    if( checkdnsrr($host[1], 'CNAME') ) return true;
  }
  return false;
}
?>

Käyttöesimerkki

<?php
// esim. tarkistetaan mbnet.fi:n toimivuus ja sähköpostiosoite
if ( tarkista_osoite("antti.laaksonen@mbnet.fi") )
  echo "Sähköpostiosoite toimii!"; else echo "Sähköpostiosoite on väärä.";
?>

Kommentit

Blaze [16.12.2006 23:48:15]

#

Hoh, PHP:n standardikirjaston laajuus ei koskaan lakkaa ällistyttämästä mua :P

Lumpio [17.12.2006 12:08:23]

#

Toinen regexpisi on rikki (eka [ pitää escapoida) ja eka regexpisi päästää kaikki vähintään yhden merkin pituiset merkkijonot läpi, joten tällä hetkellä regexptarkistus on aika turha. DNS-tarkistus on kyllä ihan hyvä idea.

feenix [18.12.2006 12:30:37]

#

Mutta tuo ei toimi jos on määritelty CNAME olemattomaan osoitteeseen, eli pitäisi rekursiivisesti jatkaa sitten tarkistusta sen kertomasta osoitteesta.

Myöskin on väärin sanoa että "sähköpostiosoite toimii" tuon perusteella, sillä on edellytykset päästä koneelle, mutta ei vielä tarkoita että siellä olisi postipalvelinta saati että annettu osoite olisi olemassa.

Juhko [18.12.2006 15:11:37]

#

Kiitti vinkistä, tällaista juuri tarvitsin!

renni [23.12.2006 01:08:54]

#

Annettua sähköpostiosoitetta ei oikeasti tietenkään voi tarkistaa muuten, kuin lähettämällä sinne sähköposti, johon pitää vielä saada sopiva kuittaus. Tämäkään ei vielä takaa, että kyseessä olisi ihan oikea ja käytössä oleva sähköpostiosoite. Käytännössä tarkistus on siis melko turha.

str4nd [24.12.2006 17:18:44]

#

renni kirjoitti:

Käytännössä tarkistus on siis melko turha.

En nyt ihan niinkään sanoisi. Alkoi vaan ärsyttämään kavereiden "homail.com"-osoitteet.

Heikki [04.01.2007 23:23:20]

#

Blaze kirjoitti:

Hoh, PHP:n standardikirjaston laajuus ei koskaan lakkaa ällistyttämästä mua :P

Veit jalat suustani.

lahtis [23.01.2007 21:07:31]

#

Voisko samanlaista tarkistusta käyttää esimerkiksi vieraskirjassa kun käyttäjät jättävät linkkejä sivulle.

str4nd [26.01.2007 22:09:14]

#

lahtis kirjoitti:

Voisko samanlaista tarkistusta käyttää esimerkiksi vieraskirjassa kun käyttäjät jättävät linkkejä sivulle.

Tietysti.

miiro [29.01.2007 22:52:29]

#

http://blog.krugle.com/?p=208
tuolla esitettyyn regexpiin vielä yhistää...
monet sähköpostitarkistuksista eivät ole RFC 3696:n mukaisia ;)

miiro [29.01.2007 22:54:29]

#

Mutta kyllä, tuo on ihan hyvä tarkistus, vaikkakin homail.com on varmaankin rekisteröity..eli typo saattaa tarkoittaa silti "oikeaa" osoitetta.

Oho, homail.com on jopa microsoftin...
..tosin ei välttämättä alunperin, mikkisofta varmaankin vain sitten halunnut ostaa itselleen sen.

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta