ওয়ার্ডপ্রেস এবং পিএইচপি কোর
is_email()
ফাংশন উত্স একটি টিপিক্যাল ওয়ার্ডপ্রেস বাস্তবায়ন আর কোনটা সাথে সম্পূর্ণরূপে কাজ করে না বোঝায় যা RFC 6531 পারেন। একটি কারণ হতে পারে, ডিফল্ট পিএইচপি FILTER_VALIDATE_EMAIL
ধ্রুবক ইন্টারনেট ইঞ্জিনিয়ারিং টাস্ক ফোর্স (আইইটিএফ®) নির্দেশিকা filter_var()
অনুসারে কোনও কিছুকে বৈধতা দেওয়ার পক্ষে আরও ভাল নয় ।
স্ট্যান্ডার্ড
পয়েন্টটি হ'ল আরএফসি 6531 "ASCII সীমার বাইরে ইউনিকোড অক্ষর" এর অনুমতি দেয় । যথা: সেগুলি (স্থানীয় অংশের জন্য - এর আগে @
):
- বড় হাতের এবং ছোট হাতের অক্ষরের ইংরেজি অক্ষর (a – z, A – Z) (এএসসিআইআই: 65-90, 97–122)
- সংখ্যা
0
থেকে 9
(হওয়া ASCII: 48-57)
- এই বিশেষ চরিত্রগুলি:
! # $ % & ' * + - / = ? ^ _ ` { | } ~
- অক্ষর
.
(বিন্দু, পিরিয়ড, পুরো স্টপ) (এএসসিআইআই: 46) শর্ত দেয় যে এটি প্রথম বা শেষ অক্ষর নয় এবং এটি সরবরাহ করে যে এটি ক্রমাগতভাবে প্রদর্শিত না হয় (যেমন John..Doe@example.com
অনুমোদিত নয়)।
- বিশেষ অক্ষরগুলি সীমাবদ্ধতার সাথে অনুমোদিত। তারা হ'ল:
- স্পেস এবং
"(),:;<>@[\]
(এএসসিআইআই: 32, 34, 40, 41, 44, 58, 59, 60, 62, 64, 91-93)
- বিশেষ অক্ষরের জন্য বিধিনিষেধগুলি হ'ল এগুলি কেবলমাত্র উদ্ধৃতি চিহ্নের মধ্যে থাকা অবস্থায় ব্যবহার করা আবশ্যক এবং তাদের মধ্যে দুটি (ব্যাকস্ল্যাশ \ এবং উদ্ধৃতি চিহ্ন "(এএসসিআইআই: 92, 34)) অবশ্যই ব্যাকস্ল্যাশ
\
(যেমন "\\"
এবং "\""
) এর আগে হওয়া উচিত ।
- স্থানীয় অংশের উভয় প্রান্তে বন্ধনীর সাহায্যে মন্তব্যগুলি অনুমোদিত; উদাহরণস্বরূপ
john.smith(comment)@example.com
এবং (comment)john.smith@example.com
উভয় সমতুল্য "john.smith@example.com"
, তবে john.(comment)smith@example.com
এটি অবৈধ হবে।
U+007F
ইউটিএফ -8 হিসাবে এনকোডযুক্ত উপরের আন্তর্জাতিক অক্ষরগুলি আরএফসি 6531 দ্বারা অনুমোদিত, যদিও মেল সিস্টেমগুলি স্থানীয় অংশগুলি বরাদ্দ করার সময় কোন অক্ষর ব্যবহার করতে হবে তা সীমাবদ্ধ করতে পারে।
এবং গ্লোবাল / ডোমেন অংশের জন্য:
ইমেল ঠিকানার ডোমেন নাম অংশটি কঠোর নির্দেশিকা মেনে চলতে হয়: এটি অবশ্যই একটি হোস্টনামের সাথে প্রয়োজনীয়তার সাথে মেলে, অক্ষর, অঙ্ক, হাইফেন এবং বিন্দু সমন্বিত। এছাড়াও, ডোমেন অংশটি একটি আইপি ঠিকানা আক্ষরিক হতে পারে, বর্গাকার ধনুর্বন্ধনী দ্বারা বেষ্টিত, যেমন jsmith@[192.168.2.1]
বা jsmith@[IPv6:2001:db8::1]
[…]
সূত্র: উইকিপিডিয়া
বৈধ কি?
এটি নিম্নলিখিতগুলির মতো অদ্ভুত, তবে বৈধ ইমেল ঠিকানাগুলিতে নিয়ে যেতে পারে:
localpart.ending.with.dot.@example.com
(comment)localpart@example.com
"this is v@lid!"@example.com
"much.more unusual"@example.com
postbox@com
admin@mailserver1
"()<>[]:,;\\@\"\\\\!#$%&\'*+-/=?^_`{}| ~.a"@example.org
" "@example.org
সূত্র: php.net / লেখক gt@kani.hu - উদাহরণটি এই পোস্টের লেখক দ্বারা স্থির করা হয়েছে
সীমা
স্থানীয় এবং ডোমেন দৈর্ঘ্যের সীমাও রয়েছে:
ইমেল ঠিকানাগুলির ফর্ম্যাটটি local-part@domain
যেখানে স্থানীয় অংশটি 64৪ টি অক্ষর পর্যন্ত দীর্ঘ হতে পারে এবং ডোমেন নামটিতে সর্বাধিক 253 অক্ষর থাকতে পারে - তবে একটি ফরোয়ার্ড বা বিপরীত পথের সর্বাধিক 256-অক্ষরের দৈর্ঘ্য পুরো ইমেল ঠিকানাটিকে সীমাবদ্ধ করে ২৫৪ টির বেশি অক্ষরের চেয়ে বেশি লম্বা হবেন না । [২] আনুষ্ঠানিক সংজ্ঞাগুলি আরএফসি 5322 (বিভাগ 3.3.3 এবং 3.4.1) এবং আরএফসি 5321 - ইন তথ্য সম্পর্কিত আরএফসি 3696 [3] এবং সম্পর্কিত ত্রুটিযুক্ত দেওয়া হয়েছে আরও পাঠযোগ্য ফর্ম সহ ।
সূত্র: উইকিপিডিয়া
ওয়ার্ডপ্রেস বিধিনিষেধ
এবং এটিই ওয়ার্ডপ্রেস যাচাই করে:
- ন্যূনতম দৈর্ঘ্যের পরীক্ষা ইমেল হতে পারে:
strlen( $email ) < 3
- প্রথম অবস্থানের পরে @ চরিত্রের জন্য পরীক্ষা করুন:
strpos( $email, '@', 1 ) === false
- অবৈধ অক্ষরের জন্য পরীক্ষা:
!preg_match( '/^[a-zA-Z0-9!#$%&\'*+\/=?^_`{|}~\.-]+$/', $local )
- পিরিয়ডের ক্রমগুলির জন্য পরীক্ষা:
preg_match( '/\.{2,}/', $domain )
- শীর্ষস্থানীয় এবং পিছনের পিরিয়ড এবং সাদা স্থানের জন্য পরীক্ষা:
trim( $domain, " \t\n\r\0\x0B." ) !== $domain
- ধরে নিন ডোমেনটিতে কমপক্ষে দুটি সাব থাকবে:
$subs = explode( '.', $domain );
এবং তারপরে
2 > count( $subs )
trim( $sub, " \t\n\r\0\x0B-" ) !== $sub
!preg_match('/^[a-z0-9-]+$/i', $sub )
সূত্র: ডাব্লুপি কোর ভি 4.0
ফিল্টার এবং কাস্টম বৈধতা
উল্লিখিত সমস্ত ক্ষেত্রেই is_email()
মিথ্যা ফিরে আসতে ট্রিগার করবে । ফলাফলটি ফিল্টার-সক্ষম (একটি কলব্যাক সংযুক্ত করা যেতে পারে) এবং ফিল্টারটিতে তিনটি আর্গুমেন্ট থাকবে, যেখানে শেষ যুক্তির কারণ। উদাহরণ:
return apply_filters( 'is_email', false, $email, 'sub_hyphen_limits' );
যার অর্থ আপনি নির্দিষ্ট পরীক্ষায় ফিরে আসা ফলাফলগুলিকে ওভাররাইড করতে পারেন।
এটি আপনাকে বিশেষ চেক যোগ করার অনুমতি দেয়, উদাহরণস্বরূপ উমলাউট-ডোমেনগুলি, কেবলমাত্র টিএলডি-র জন্য কেবল ডোমেন পার্টস ইত্যাদির অনুমতি দেওয়া etc.
উপসংহার
ওয়ার্ডপ্রেস বেশিরভাগ ক্ষেত্রে নিরাপদ, তবে মেল সার্ভার হিসাবে আরও বিধিনিষেধকটি আরএফসির অনুগত হতে হবে। মনে রাখবেন যে প্রতিটি মেল সার্ভার আরএফ 6531 নির্দেশিকাগুলির সাথে একত্রিত হবে না।
সম্পাদন করা
মজাদার পার্শ্ব ফ্যাক্ট: ভিতরে দুটি সম্পর্কিত ফাংশন রয়েছে ~/wp-includes/formatting
: is_email()
এবং sanitize_email()
। তারা কার্যত একই ফাংশন। আমার ধারণা নেই যে কেন কেউ সিদ্ধান্ত নিয়েছে যে কেবলমাত্র অন্যটি সরবরাহকারী ফিল্টারগুলিতে কলব্যাক হিসাবে একটি যুক্ত করার পরিবর্তে ফাংশন সামগ্রীটি এক থেকে অন্যটিতে অনুলিপি করা ভাল ধারণা। হিসাবে v0.71 যেহেতু এবং v1.5 যেহেতু একই রকম, আমি ব্যক্তিগতভাবে পরে ব্যবহার আপনি একটি পরিষ্কার স্ট্রিং পেতে হবে। নোট করুন এমনকি এমনকি এটি আরএফসি অনুগত নয় বলেও জানিয়েছে।is_email()
sanitize_email()
is_email()