هل توجد مكتبة PHP للتحقق من صحة عنوان البريد الإلكتروني؟[مغلق]

StackOverflow https://stackoverflow.com/questions/161342

سؤال

أحتاج إلى التحقق من صحة عنوان البريد الإلكتروني للمستخدمين.لسوء الحظ، مما يجعل المدقق ذلك يتوافق مع المعايير انه صعب

هنا هو مثال على تعبير regex الذي يحاول التوافق مع المعيار

هل هناك أي مكتبة PHP (ويفضل أن تكون مفتوحة المصدر) تتحقق من صحة عنوان البريد الإلكتروني؟

هل كانت مفيدة؟

المحلول 5

ولقد وجدت مكتبة في مدونة جوجل: http://code.google كوم / ع / فب البريد الإلكتروني عنوان التحقق من صحة /

هل هناك أي أشخاص آخرين؟

نصائح أخرى

هل نظرت في PHP في ؟ انهم يست مثالية، ولكنها لا وظيفة لائقة إلى حد ما في تجربتي.

والاستخدام مثال (عوائد منطقية):

وfilter_var($someEmail, FILTER_VALIDATE_EMAIL);

وAFAIK، والطريقة الوحيدة الجيدة للتحقق من صحة البريد الإلكتروني هو لإرسال البريد الإلكتروني ومعرفة ما اذا كان يذهب المستخدم إلى الموقع باستخدام الرابط في هذا البريد الإلكتروني. هذا ما يفعله الكثير من المواقع.

وكما ذكرتم مع وصلة إلى التعبير المعتاد العملاقة المعروفة والتأكد من صحتها جميع أشكال عنوان البريد الإلكتروني من الصعب، بالقرب من المستحيل. فمن السهل جدا أن تفعل ذلك الخطأ، حتى بالنسبة لأسلوب تافهة رسائل البريد الإلكتروني (لقد وجدت الكثير من المواقع رفض القبعات في عناوين البريد الإلكتروني! وregexes الأكثر القديمة ترفض نطاقات TLD من الرسائل أكثر من 4!).

وAFAIK "جان لوك B. أ'غردي" @ example.com و ه = مولودية ^ 2 @ [82.128.45.117] على حد سواء عناوين صالحة ... وبينما أنا صنع-والمتابعة @ العبثية-المجال ومن المرجح أن تكون غير صالحة -Name.info.

وهكذا بطريقة أو بأخرى، وأود أن تحقق فقط أن يكون لدينا شيء، و @فريدة من نوعها، شيء آخر، وتذهب معها: أنه قبض معظم أخطاء المستخدم (مثل حقل فارغ أو اسم المستخدم بدلا من عنوان البريد الإلكتروني) <ر. > إذا كان المستخدم يريد أن يعطي عنوان وهمية، وأنه سيكون مجرد إعطاء شيء عشوائي تبحث صحيح (see@on.tv أو bill.gates@microsoft.com). ولا المصادقة سيمسك الأخطاء المطبعية (jhon.b@example.com بدلا من john.b@example.com).

إذا واحد تريد حقا للتحقق من رسائل البريد الإلكتروني ضد RFC الكامل، وأنصح لاستخدام regexes لتقسيم حول @، ثم التحقق من اسم والمجال المحلي بشكل منفصل الاسم. قضية منفصلة من الاسم المحلي بدءا "من الحالات الأخرى، الخ قضية منفصلة من اسم النطاق بدءا [من الحالات الأخرى، وما إلى ذلك مشكلة انقسام في مجالات محددة أصغر، وregexes استخدام فقط على واضحة المعالم، وحالات أبسط.
ويمكن تطبيق هذه النصيحة إلى الكثير من الاستخدامات التعبير العادي، وبطبيعة الحال ...

[محدث] لقد قمت بجمع كل ما أعرفه حول التحقق من صحة عنوان البريد الإلكتروني هنا: http://isemail.info, ، والذي لا يقوم الآن بالتحقق من صحة المشكلات المتعلقة بعناوين البريد الإلكتروني فحسب، بل يقوم أيضًا بتشخيصها.وأنا أتفق مع العديد من التعليقات هنا بأن التحقق ليس سوى جزء من الإجابة؛انظر مقالتي في http://isemail.info/about.

لقد قمت الآن بجمع حالات الاختبار من كال هندرسون وديف تشايلد وفيل هاك ودوغ لوفيل وRFC 3696.158 عنوان اختبار في المجموع.

لقد أجريت كل هذه الاختبارات على كل المدققين الذين أمكنني العثور عليهم.المقارنة هنا : http://www.dominicsayers.com/isemail

سأحاول إبقاء هذه الصفحة محدثة حيث يقوم الأشخاص بتعزيز أدوات التحقق الخاصة بهم.شكرًا لكال وديف وفيل لمساعدتهم وتعاونهم في تجميع هذه الاختبارات والنقد البناء لها المدقق الخاص بي.

يجب أن يكون الناس على علم أخطاء ضد RFC 3696 بخاصة.ثلاثة من الأمثلة الأساسية هي في الواقع عناوين غير صالحة.والحد الأقصى لطول العنوان هو 254 أو 256 حرفًا، لا 320.

كال هندرسون (ومن فليكر) كتب <لأ href = "HTTP: //www.iamcal كوم / نشر / المواد / فب / parsing_email "يختلط =" نوفولو noreferrer "> RFC822 متوافقة مع عنوان البريد الإلكتروني المنظر ، مع شرح للRFC ورمز الاستفادة من RFC لمطابقة عناوين البريد الإلكتروني. لقد تم استخدامه لبعض الوقت الآن مع أية شكاوى.

<اقتباس فقرة>   

وRFC822 (نشرت عام 1982) ويعرف،   من بين أمور أخرى، وشكل ل   رسالة نصية الإنترنت (البريد الإلكتروني)   عناوين. يمكنك العثور على وRFC من قبل   غوغلينغ - هناك العديد والعديد من نسخ   على الانترنت. انهم قليلا مقتضب   وتنسيق بغرابة، ولكن مع   القليل من الجهد يمكننا seewhat انهم   الحصول على.

... تحديث ...

وكما أشار بورغيس في التعليقات، المكتبة على صلة قديمة، ولكن تلك الصفحة يحتوي على رابط ل و .

Zend_Validate يتضمن المصادقة على البريد الإلكتروني.

وهناك الكثير من التعابير العادية حول للتحقق من صحة - كل شيء من أساسية جدا متقدمة جدا. هل حقا ينبغي أن اختيار ما يتطابق مع أهمية وجود بريد إلكتروني صالح في التطبيق الخاص بك.

أوصي بإلقاء نظرة على الكود المصدري لـ Zend_Validate_EmailAddress [مصدر].

بمجرد إصلاح تبعياتك، يمكنك ببساطة القيام بما يلي:

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

الأفضل هو الحصول على مكتبة Zend الكاملة في مشروعك عبر svn خارجي وتوجيه مسار التضمين إليها...

ولكن يمكنك فقط تنزيل الملفات الضرورية (1,2,3,4,5,6)، وقم بتضمينها جميعًا (قم بإزالة مكالمات require_once)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top