Jul
04
2010

Eposta adresi doÄŸrulama

Genellikle eposta doğrulamak için kullanılan yöntem , bir düzenli ifade ile verile adresi doğrulamaktır :

1
2
3
if(!preg_match('/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $email)) {
  echo  'geçersiz eposta';
}

Ama , bu sadece eposta adresinin belirli standartta yazılmasını sağlar, boyle@biradresyok.com yazdığınızda yukarıdaki kontrolü devredışı bırakır. Siz epostanın doğru olduğunu kabul edersiniz.

Eposta doğrulamanın bir başka yolu daha var . Verilen eposta adresine ait mx kaydının olup olmadığını kontrol etmek :

1
2
3
4
5
6
7
8
9
10
11
12
$email='boyle@biradresyok.com';

$sunucu= substr($email,strpos($email,'@')+1);

$sonuc= array();
getmxrr($sunucu,$sonuc);

if(count($sonuc)>0){
 echo 'adres gecerli';
}else {
 echo 'adres gecersiz';
}

Bu yöntemin bir dezavantajı, mx kaydını kontrol ederken, mx kaydı olmayan bir adres olduğu zaman bir süre bekletmesidir (birkaç saniye). Bunun haricinde mx kaydı kontrol ederek eposta doğrulaması , diğer yöntemlere göre çok daha yüsek doğruluk payı olan sonuçlar verebilir.

5 Yorum »

  • Call to undefined function getmxrr()
    hatası alıyorum localde.Sebebi Nedir acaba ?

  • Ersin says:

    Bir fikrim yok, bu fonksiyon php ile birlikte gelmekte ve herhangi bir eklenti aktif etmeniz gerekmemekte.

  • Bende öyle biliyordum ama sanırım localhostumla ilgili bir sorun,ilginiz için teÅŸekkür ederim ersin bey.

  • Åženol Yıldız says:

    Aşağıdaki gibi de kontrol yapılabilir. Regex bilmeyenler için daha basit bir yöntem.

    $user_email = ‘hello@shenol.info’;
    if (!filter_var($user_email, FILTER_VALIDATE_EMAIL)) {
    echo “Hatalı e-posta adresi”;
    }

  • Ersin says:

    Burda amaç filtrelemek değil, bu yüzden regex veya filter_var kullanmak aynı kapıya çıkıyor.

RSS feed for comments on this post. TrackBack URL


Yorum yaz

Powered by WordPress | conserio | xoppla | TheBuckmaker