2008-10-02 17 views
7

मुझे अपने उपयोगकर्ताओं के ईमेल पते को सत्यापित करने की आवश्यकता है। दुर्भाग्य से, एक सत्यापनकर्ता कि comforms to standards कठिनक्या ईमेल पता सत्यापन के लिए कोई PHP लाइब्रेरी है?

Here है बनाने मानक

कोई पीएचपी पुस्तकालय (अधिमानतः, मुक्त स्रोत) उस ईमेल पते की पुष्टि करता है करने के लिए comform की कोशिश करता है कि एक regex अभिव्यक्ति का एक उदाहरण है? http://code.google.com/p/php-email-address-validation/

वहाँ किसी भी अन्य हैं:

+0

क्या हम ई-मेल या ईमेल पते से बात कर रहे हैं? – Sietse

+0

मेरा मतलब ईमेल पता था। मैंने इसे प्रतिबिंबित करने के लिए अपना प्रश्न सही कर दिया है। धन्यवाद – MrValdez

उत्तर

5

मैं गूगल कोड में एक पुस्तकालय पाया?

+0

मैं कई परियोजनाओं में अपने पूर्ववर्ती का उपयोग करता हूं और अब तक कोई समस्या नहीं है। मेरा कहना है कि इसे कर ही दो. – Lasar

16

क्या आपने PHP's filter_ functions पर देखा है? वे सही नहीं हैं, लेकिन वे मेरे अनुभव में काफी सभ्य नौकरी करते हैं।

उदाहरण उपयोग (रिटर्न बुलियन):

filter_var($someEmail, FILTER_VALIDATE_EMAIL);

+0

मैं एक साधारण (गैर-एंटरप्राइज़) ऐप को कोडिंग कर रहा हूं जिसके लिए मूल सत्यापनकर्ता की आवश्यकता है। जबकि FILTER_VALIDATE_EMAIL पूरी तरह से spec को लागू नहीं कर रहा है - उदाहरण के लिए, यह http://code.iamcal.com/php/rfc822/rfc822.phps पर कुछ परीक्षणों में विफल रहता है - ऐसा लगता है कि "पर्याप्त अच्छा" मेरी वर्तमान जरूरतों के लिए। धन्यवाद! –

12

AFAIK, एक ई-मेल को मान्य करने के केवल अच्छा तरीका एक ई-मेल भेजने के लिए और देखने के उपयोगकर्ता का उपयोग कर साइट के लिए वापस चला जाता है, तो करने के लिए करने के लिए है इस ई-मेल में एक लिंक। यही वह साइट है जो बहुत सी करती है।

जैसा कि आप प्रसिद्ध ज्ञात रेगेक्स के लिंक के साथ इंगित करते हैं, ई-मेल पते के सभी रूपों को मान्य करना असंभव है। यह गलत काम करना इतना आसान है, यहां तक ​​कि छोटी शैली के ई-मेल के लिए भी (मुझे ई-मेल पते में कैप्स को अस्वीकार करने वाली बहुत सी साइटें मिलीं! और सबसे पुरानी रेगेक्स ने 4 से अधिक अक्षरों के टीएलडी को अस्वीकार कर दिया!)।

AFAIK, "जीन-लुक बी O'Grady" @ example.com और e = mc^2 @ [82.128.45.117] दोनों मान्य पते हैं ... जबकि I-Made-It-Up @ Absurd- डोमेन-Name.info अमान्य होने की संभावना है।

तो किसी भी तरह, मैं सिर्फ यह जांचूंगा कि हमारे पास कुछ है, एक अद्वितीय @, कुछ और, और इसके साथ जाएं: इसमें अधिकांश उपयोगकर्ता त्रुटियां (जैसे खाली फ़ील्ड या ई-मेल पते के बजाय उपयोगकर्ता नाम) को पकड़ लिया जाएगा।
यदि उपयोगकर्ता फर्जी पता देना चाहता है, तो यह कुछ यादृच्छिक दिखने वाला सही होगा ([email protected] या [email protected])। और कोई वैधकर्ता [email protected] के बजाय typos ([email protected]) पकड़ लेगा।

यदि कोई वास्तव में पूर्ण आरएफसी के खिलाफ ई-मेल मान्य करना चाहता है, तो मैं regexes को @ के आसपास विभाजित करने की सलाह दूंगा, फिर अलग-अलग स्थानीय नाम और डोमेन नाम की जांच करें। स्थानीय मामलों का अलग-अलग मामला "अन्य मामलों से, आदि से शुरू होता है। [अन्य मामलों से आदि डोमेन नाम का अलग मामला, छोटे विशिष्ट डोमेन में समस्या को विभाजित करें, और केवल एक अच्छी तरह परिभाषित, सरल मामलों पर रेगेक्स का उपयोग करें।
यह सलाह regex का उपयोग करता है, निश्चित रूप से बहुत करने के लिए लागू किया जा सकता ...

+0

यह एक वैध उत्तर है और मैं आमतौर पर क्या करता हूं। लेकिन इस विशेष ग्राहक के लिए, मुझे यह जांचने का एक तरीका चाहिए कि कोई ईमेल मान्य है या नहीं। ईमेल सत्यापन का विकल्प उपयोगकर्ता को अपने ईमेल दो बार इनपुट करने के लिए कह रहा है, जिसे मैं दृढ़ता से अस्वीकार करता हूं। उम्मीद है कि, मैं उन्हें ऐसा करने के लिए मना कर सकता हूं। – MrValdez

+0

डबल-एंट्री के साथ क्या गलत है? यह सुनिश्चित करने के लिए एक त्वरित, सस्ता और आसान तरीका है कि उपयोगकर्ता ने इसे टाइप करते समय अपने ईमेल पते को वसा-उंगली नहीं दी। अगर आपको * वास्तव में * सत्यापित करने की आवश्यकता है कि एक ईमेल पते का वैध प्रारूप है, तो डोमिनिक का जवाब (और लिंक साइट) में अभी तक देखी गई सबसे व्यापक जानकारी शामिल है। – afrazier

+2

@afrazier: "डबल-एंट्री के साथ क्या गलत है?" ठीक है, अगर लोग मेरे जैसे करते हैं, तो वे पहले प्रविष्टि को दूसरी बार कॉपी/पेस्ट करते हैं, इसलिए लाभ शून्य है ... – PhiLho

1

Zend_Validate एक ईमेल सत्यापनकर्ता शामिल

वहाँ सत्यापित करने के लिए चारों ओर नियमित अभिव्यक्ति के बहुत सारे हैं -। वास्तव में बहुत करने के लिए बुनियादी बहुत ही उन्नत से सब कुछ आप। कुछ ऐसा चुनना चाहिए जो आपके आवेदन में एक वैध ईमेल के महत्व से मेल खाता हो।

0

मैं Zend_Validate_EmailAddress [source] के स्रोत कोड को देखने की अनुशंसा करता हूं।

$mail_validator = new Zend_Validate_EmailAddress(); 
$mail_validator->isValid($address); // returns true or false 

सबसे अच्छा SVN बाहरी के माध्यम से अपने प्रोजेक्ट में पूर्ण Zend लाइब्रेरी मिलता है और इसे करने के लिए शामिल पथ बात करने के लिए किया जाएगा ...

:

एक बार आप अपने निर्भरता तय कर दी है तो आप बस निम्न कर सकते हैं

लेकिन आप केवल आवश्यक फ़ाइलें (1, 2, 3, 4, 5, 6) डाउनलोड करें, और उन सब को शामिल कर सकते हैं (require_once कॉल निकालने)

8

Cal Henderson (फ़्लिकर के) ने RFC822 compliant email address matcher लिखा, आरएफसी की व्याख्या के साथ और ईमेल पते से मेल खाने के लिए आरएफसी का उपयोग करने वाला कोड। मैं अब कुछ शिकायतों के साथ इसका उपयोग कर रहा हूं।

RFC822 (1982 में प्रकाशित) को परिभाषित करता है, अन्य बातों के साथ इंटरनेट पाठ संदेश (ईमेल) पतों के लिए प्रारूप। आप आरएफसी के गुगलिंग द्वारा पा सकते हैं - की कई प्रतियां उन्हें ऑनलाइन उपलब्ध कराती हैं। वे थोड़ा terse हैं और अजीब रूप से स्वरूपित हैं, लेकिन के साथ थोड़ा प्रयास हम कुछ हद तक कर सकते हैं कि वे पर हो रहे हैं।

... अद्यतन ...

रूप Porges टिप्पणी में कहा, लिंक पर पुस्तकालय पुरानी हो चुकी है, लेकिन उस पृष्ठ एक updated version लिए एक लिंक है।

+0

अच्छा, लिंक के लिए धन्यवाद। –

+0

उल्लेखनीय है कि आरएफसी 822 प्राचीन है, जैसा उद्धरण पहचानता है। असल में, आरएफसी जो 822 (2822) को अप्रचलित करता है * भी * अप्रचलित है, जो आपको दिखाता है कि यह कितना पुराना है :) ईमेल पते के लिए वर्तमान आरएफसी 5322 है, इस उत्तर के महीने को प्रकाशित किया गया है! – porges

10

[अद्यतन] मैंने यहां ईमेल पता सत्यापन के बारे में जो कुछ भी पता है, उसे मैंने एकत्रित किया है: http://isemail.info, जो अब केवल मान्य नहीं है बल्कि ईमेल पते के साथ समस्याओं का निदान भी करता है। मैं यहां कई टिप्पणियों से सहमत हूं कि सत्यापन केवल उत्तर का हिस्सा है; http://isemail.info/about पर मेरा निबंध देखें।

अब मैंने कैल हैंडर्सन, डेव चाइल्ड, फिल हैक, डौग लोवेल और आरएफसी 36 9 6 से टेस्ट केस एकत्र किए हैं। सभी में 158 टेस्ट पते।

मैंने उन सभी सत्यापनकर्ताओं के खिलाफ इन सभी परीक्षणों को चलाया जो मुझे मिल सके। तुलना यहां है: http://www.dominicsayers.com/isemail

मैं इस पृष्ठ को अद्यतित रखने की कोशिश करूंगा क्योंकि लोग अपने वैधकर्ताओं को बढ़ाते हैं। कैल, डेव और फिल के लिए इन परीक्षणों और my own validator की रचनात्मक आलोचना संकलित करने में उनकी सहायता और सहयोग के लिए धन्यवाद।

लोगों को विशेष रूप से errata against RFC 3696 से अवगत होना चाहिए। तीन कैनोलिक उदाहरण वास्तव में अमान्य पते हैं। और पते की अधिकतम लंबाई 254 या 256 वर्ण है, 320.

+0

ऐसा करने के लिए धन्यवाद; केवल अटकलों की बजाय काम करने के लिए वास्तविक डेटा होना अद्भुत है। क्या आप इस पृष्ठ पर उल्लिखित अन्य पुस्तकालयों को भी शामिल कर सकते हैं? – Anirvan

संबंधित मुद्दे