मैं सिर्फ एक फॉर्म के लिए सत्यापन स्थापित कर रहा था जिसमें मैंने अपने ईमेल पते की वैधता की जांच करने के लिए filter_var फ़ंक्शन का उपयोग करने का प्रयास करने का निर्णय लिया था। मुझे पता नहीं चल सकता कि फ़िल्टर_var वास्तव में कहीं भी अनुमति देता है (क्योंकि दस्तावेज़ीकरण बहुत आसान है), और मुझे पता चला कि यह एक ईमेल पता जैसे टेस्ट @ टेस्ट की इजाजत दे रहा है। डोमेन में .com, .net आदि होना आवश्यक नहीं है?
उत्तर
व्यवहार अप्रैल के आसपास कहीं बदल गया है। bug #49576 और revision 297350 देखें।
वह ई-मेल वास्तव में अमान्य है, या कम से कम यही है कि PHP डेवलपर्स समझ गए।
/*
* The regex below is based on a regex by Michael Rushton.
* However, it is not identical. I changed it to only consider routeable
* addresses as valid. Michael's regex considers [email protected] a valid address
* which conflicts with section 2.3.5 of RFC 5321 which states that:
*
* Only resolvable, fully-qualified domain names (FQDNs) are permitted
* when domain names are used in SMTP. In other words, names that can
* be resolved to MX RRs or address (i.e., A or AAAA) RRs (as discussed
* in Section 5) are permitted, as are CNAME RRs whose targets can be
* resolved, in turn, to MX or address RRs. Local nicknames or
* unqualified names MUST NOT be used.
changelog पीएचपी 5.3.3 और PHP 5.2.14 के लिए इस बग समाधान का उल्लेख है: स्रोत इस नोटिस किया जाता है।
इस बग के लिए टिकट को PHP5.3.3 और PHP5.2.14 – Gordon
ग्रेट कैच आर्टेफैक्टो के रूप में चिह्नित किया गया है। तो मुझे लगता है कि नियम बदल गए हैं? यह क्यों बदल गया है? काश वे फ़िल्टर करेंगे कि वे filter_var दस्तावेज में क्या देख रहे हैं। तो क्या यह 5.3.3 से पहले सच होगा और 5.3.3 के बाद झूठा होगा? जिस प्रणाली का मैं उपयोग कर रहा हूं वह 5.2.12 – Metropolis
@ मेट्रो है यह इंटरनेट मानकों के अनुपालन के लिए ई-मेल की जांच करता है। एक बग था इससे पहले तथ्य 'टेस्ट @ टेस्ट' की अनुमति थी। – Artefacto
यह एक वैध ईमेल पता है। यह इंटरनेट पर काम नहीं करेगा (कम से कम, आज नहीं), लेकिन यह स्थानीय पते के लिए ठीक है।
मुझे लगता है कि डेवलपर्स ईमेल पते की जांच करने के लिए समझदार दृष्टिकोण ले रहे हैं और खुद को एक ऐसी प्रणाली नहीं बना रहे हैं जो एक नई टीएलडी शुरू होने के तुरंत बाद बाहर जाने की गारंटी है। हमारे पास पर्याप्त ईमेल पता सिंटैक्स चेकर्स हैं जो [email protected]
को अस्वीकार करते हैं।
क्या आपको लगता है कि आरएफसी 5321 का सेक्शन 2.3.5 लागू नहीं होता है? – Artefacto
नहीं, test
स्थानीय/आंतरिक नेटवर्क डोमेन हो सकता है, जिससे यह काम करेगा। मुझे यह पसंद है कि उदाहरण के लिए विकास करते समय यह सही ढंग से [email protected]
मान्य करता है।
एक सामान्य nonexistentdomain.foo
एक ही समस्या होगी। यदि आप परीक्षण करना चाहते हैं कि मेजबान के लिए कुछ डिलीवर करने योग्य है, तो getmxrr
का उपयोग करें (और यह विफल रहता है कि gethostbyname()
पर वापस आना)।
तो स्थानीय पते की अनुमति देना सबसे अच्छा है? या अगर मैं test @ test की तरह कुछ अनुमति देना नहीं चाहता हूं तो क्या मुझे getmxrr का उपयोग करना चाहिए? – Metropolis
चेकडेंसर का उपयोग करके जांचना बेहतर होगा? क्योंकि अगर उनका सर्वर नीचे है, या कुछ और है, तो getmxrr झूठी वापसी करेगा। सही? – Metropolis
यदि आप चाहते हैं कि उनको संभालने की उम्मीद/स्थानीय स्थानीय पते (ज्यादातर ज्ञात आईपी-श्रेणियों में) की अनुमति होगी। आप वास्तव में checkdnsrr ('hostname', 'ANY') का उपयोग कर सकते हैं, मेरे साथ नहीं हुआ (हालांकि एमएक्स या ए रिकॉर्ड के लिए जांच कर रहा है (यदि कोई एमएक्स परिभाषित नहीं किया गया है तो फॉलबैक होना चाहिए) अधिक विश्वसनीय होगा: एक पंजीकृत डोमेन हो सकता है कि कोई ए और एमएक्स रिकॉर्ड न हो, जिससे उन्हें अविभाज्य बना दिया जा सके)। checkdnsrr/gethostbyname/getmxrr सभी एक ही तंत्र का उपयोग करते हैं, इसलिए यदि कोई DNS सर्वर डाउन या धीमा है, तो यह सभी विकल्पों के लिए विफल/धीमा हो जाएगा। – Wrikken
परीक्षण @ परीक्षण वाक्य रचनात्मक रूप से मान्य है।
आरएफसी 5321 से:
एक शीर्ष स्तर एक ईमेल पते में अपने आप में उपयोग किया गया डोमेन के मामले में, एक एकल स्ट्रिंग जाने वाले बिंदु के बिना किया जाता है।
इस के बाद केवल यह कहना है:
केवल समाधान योग्य, पूरी तरह से योग्य डोमेन नाम (FQDNs) अनुमति दी जाती है जब डोमेन नाम एसएमटीपी में किया जाता है। दूसरे शब्दों में, को एमएक्स आरआर या पता (यानी, ए या एएएए) आरआर (जैसा कि धारा 5 में पर चर्चा की गई है) के लिए हल किया जा सकता है, जैसे कि सीएनएन आरआर जिनके लक्ष्य हो सकते हैं, बदले में, एमएक्स को हल किया जा सकता है या पता आरआरएस। स्थानीय उपनाम या अयोग्य नामों का उपयोग नहीं किया जाना चाहिए।
यह आवश्यक रूप से टीएलडी-केवल डोमेन नामों को रोकता नहीं है। वास्तव में, निम्न कोड चलाएँ:
checkdnsrr('ua', 'MX') // Returns true
getmxrr('ua', $array) // Returns true
टीएलडी-केवल डोमेन नाम (कर सकते हैं) MX रिकॉर्ड है और उपयोग में हैं: http://www.to/ एक उदाहरण है।और यहाँ कुछ वैध टीएलडी-केवल डोमेन नाम ईमेल पतों है:
विन्स @ एअर इंडिया
पॉल @ कब
जड़ @ किमी
जूस्ट @ TK
व्यवस्थापक @ टीटी
होस्टमास्टर @ ua
उदाहरण का स्रोत ईमेल एड्रे sses: Tony Finch – TLDs with MXs
- 1. परीक्षण अमान्य ईमेल Rspec
- 2. फ़िल्टर_वार FILTER_VALIDATE_REGEXP
- 3. "धूम्रपान परीक्षण" क्यों कहा जाता है "धूम्रपान परीक्षण"?
- 4. क्या FILTER_VALIDATE_EMAIL डेटाबेस में सम्मिलन के लिए एक स्ट्रिंग सुरक्षित बनाता है?
- 5. यूनिट परीक्षण ईमेल भेजने के लिए कैसे?
- 6. बदलें स्प्रिंग ईमेल देव/परीक्षण/prod मोड
- 7. ईमेल सर्वर के बिना ईमेल भेजने का परीक्षण
- 8. मेरा यूनिट परीक्षण आर कंसोल में सफलतापूर्वक क्यों चलाता है लेकिन "परीक्षण करें" के साथ एक त्रुटि देता है?
- 9. यह संग्रहAssert.AreEquivalent() परीक्षण क्यों विफल रहता है?
- 10. django मेरे परीक्षण क्यों नहीं देखता है?
- 11. कैसे asp.net ईमेल का परीक्षण करने भेजा जा रहा है
- 12. अलग परिणाम क्यों "जी" संशोधक देता है जब परीक्षण() दो बार कहा जाता है?
- 13. परीक्षण जावास्क्रिप्ट का परीक्षण
- 14. Asp.net एमवीसी परीक्षण परीक्षण?
- 15. मेकअप परीक्षण मोचा परीक्षण
- 16. परीक्षण
- 17. परीक्षण
- 18. परीक्षण
- 19. परीक्षण
- 20. कितना परीक्षण पर्याप्त है?
- 21. परीक्षण है कि सिर
- 22. "फ़ज़ परीक्षण" और "बंदर परीक्षण"
- 23. यूआई परीक्षण बनाम यूनिट परीक्षण
- 24. परीक्षण स्टूडियो एक्सटेंशन का परीक्षण
- 25. मैन्युअल परीक्षण वीएस स्वचालित परीक्षण
- 26. परीक्षण शुरू होने पर परीक्षण
- 27. PHPUnit परीक्षण वास्तविक उदाहरण
- 28. क्या PHP का FILTER_VALIDATE_EMAIL पर्याप्त सुरक्षा प्रदान करता है?
- 29. जावास्क्रिप्ट: परीक्षण बनाम exec
- 30. सर्वश्रेष्ठ परीक्षण धावक? (यूनिट परीक्षण, .NET)
तकनीकी रूप से, 'परीक्षण' स्थानीय नेटवर्क में एक वैध होस्ट नाम हो सकता है, इसलिए मुझे लगता है कि यह सही है। –
क्या आप अपना कोड पोस्ट कर सकते हैं? var_dump (filter_var ('test @ test।', FILTER_VALIDATE_EMAIL)); मेरे लिए झूठा रिटर्न देता है! – Youssef
परीक्षण @ परीक्षण के बिना डॉट रिटर्न झूठी भी – Youssef