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
Hoh, PHP:n standardikirjaston laajuus ei koskaan lakkaa ällistyttämästä mua :P
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.
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.
Kiitti vinkistä, tällaista juuri tarvitsin!
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.
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.
Blaze kirjoitti:
Hoh, PHP:n standardikirjaston laajuus ei koskaan lakkaa ällistyttämästä mua :P
Veit jalat suustani.
Voisko samanlaista tarkistusta käyttää esimerkiksi vieraskirjassa kun käyttäjät jättävät linkkejä sivulle.
lahtis kirjoitti:
Voisko samanlaista tarkistusta käyttää esimerkiksi vieraskirjassa kun käyttäjät jättävät linkkejä sivulle.
Tietysti.
http://blog.krugle.com/?p=208
tuolla esitettyyn regexpiin vielä yhistää...
monet sähköpostitarkistuksista eivät ole RFC 3696:n mukaisia ;)
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.