SORU
2 Mayıs 2011, PAZARTESİ


Nasıl PHP bir e-Posta doğrulamak için?

Nasıl değeri geçerli bir e-posta adresi php5 kullanarak giriş doğrulamak. Şimdi bu kodu kullanıyorum

function isValidEmail($email){ 
     $pattern = "^[_a-z0-9-] (\.[_a-z0-9-] )*@[a-z0-9-] (\.[a-z0-9-] )*(\.[a-z]{2,3})$"; 

     if (eregi($pattern, $email)){ 
        return true; 
     } 
     else { 
        return false; 
     }    
} 

ancak itiraz hatayı gösterir. Bu sorunu nasıl düzeltebilirim. Bana yardım edin lütfen.

CEVAP
2 Mayıs 2011, PAZARTESİ


Kullanışlı doğrulama ve sanitasyon seçenekleri bir sürü verir filter_var() işlevini kullanabilirsiniz.

filter_var($email, FILTER_VALIDATE_EMAIL)

Eğer kodunuzu değiştirmek istiyorsanız eğer bu fonksiyon, sadece dayanıyordu:

function isValidEmail($email){ 
    return filter_var($email, FILTER_VALIDATE_EMAIL);
}

NotDiğer kullanır Düzenli gerekir (burada), ereg fonksiyon kaldırılan aile (POSIX Düzenli ifade Fonksiyonları) preg aile (PCRE Regex Functions) tarafından değiştirilmelidir. Farklar küçük bir miktar, Manuel yeterli olacaktır okuma vardır.

Güncelleme 1: @binaryLV tarafından belirttiği gibi:

PHP 5.3.3 ve 5.2.14 bug bir ilişkin vardı Doğrularken segfault sonuçlanan FİLTER_VALİDATE_EMAİL, büyük değerler. Bunun için basit ve güvenli Çözüm strlen()kullanıyor filter_var() önce. 5.3.4 son, ama emin değilim 5.3.4-anlık bazı sürümleri de etkilendi yazılı.

Bu hata çoktan düzeltildi.

Güncelleme 2Bu yöntem tabii ki aslında geçerli bir e-posta adresi olduğundan geçerli bir e-posta adresi olarak bazmega@kapa doğrulamak olacaktır. Ama internette çoğu zaman, size de e-posta adresi bir KARŞILIK istiyorum: bazmega@kapa.com. Olarak önerilen bu blog post (bağlantı Gönderen @Istiaque Ahmed), artırmak filter_var() ile bir düzenli ifade bu olacak onay için varlığı bir nokta da, bir etki alanı bölümü (olmaz kontrol etmek içingeçerliAma KARŞILIK:

function isValidEmail($email) {
    return filter_var($email, FILTER_VALIDATE_EMAIL) 
        && preg_match('/@. \./', $email);
}

@Eliseo Ocampos belirttiği gibi, bu sorun sadece 5.3, 23* *PHP önce var ve şimdi gerekmez böylece kontrol bunu yapıyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ASUS North America

    ASUS North A

    12 AĞUSTOS 2008
  • IGN

    IGN

    19 EYLÜL 2006
  • Nickcidious

    Nickcidious

    6 HAZİRAN 2011