اعتبارسنجی ایمیل در php
در هنگام طراحی سایت اطلاعاتی که از کاربران دریافت میکنید ممکن است ناقص یا نادرست باشند و لازم است تا پیش از ذخیرهسازی آنها را ارزیابی و اعتبارسنجی کنید.
بررسی نشانی ایمیلهای وارد شده در سایت یکی از این نیازمندیها است.
در این نوشته چند روش برای ارزیابی ایمیلها در زبان php را مرور خواهیم نمود.
۱- با استفاده از دستور filter_var
قطعه کد زیر کار ارزیابی ایمیل دریافت شده از کاربر را با کمک دستور فوق به انجام میرساند
1 2 3 4 5 |
$email = isset( $_POST[ 'email' ] ) ? $_POST[ 'email' ] : ''; if( ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) { echo 'ایمیل وارد شده نادرست است'; } |
۲- با استفاده از عبارتهای با قاعده
با کمک عبارتهای باقاعده یا Regular Expressionها نیز میتوانیم این کار را انجام دهیم:
1 2 3 4 5 6 7 |
$email = isset( $_POST[ 'email' ] ) ? strtolower( $_POST[ 'email' ] ) : ''; $pattern = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/'; if( ! (bool)preg_match( $pattern, $email ) ) { echo 'ایمیل وارد شده نادرست است'; } |
نکات جانبی
- استفاده از روشهای فوق تضمین نمیکند که ایمیل دریافت شده واقعی است و تنها بررسی میکند که ظاهر متن وارد شده با قوانین قابل قبول برای آدرس ایمیل مطابقت داشته باشد.
- علاوه بر بررسی شباهت ظاهری آدرس، روشهای تکمیلی دیگری نیز وجود دارند که میتوانند بررسی کنند آیا آدرس دامنهی مشخص شده، به طور کلی ایمیلی دریافت میکند یا خیر.
- قوانین موجود برای درستی آدرس ایمیل نسبتا زیاد هستند و در هر یک از روشهای بالا ممکن است تعداد انگشتشماری از آدرسهای ایمیل در حالتهای خاص، به اشتباه رد شوند.
- در حالت دوم و هنگام استفاده از عبارتهای با قاعده، با جستجوی اینترنت میتوانید کدهای مشابه دیگری که ظاهر متفاوتی دارند را نیز پیدا کنید که در نهایت تفاوت قابل ملاحظهای در عملکرد نهایی وجود نخواهد داشت.
- استفاده از روش اول به دلیل اینکه سرعت اجرای کدهای هسته php بیشتر از پردازش عبارتهای باقاعده است، ممکن است سریعتر از حالت دوم باشد.
- اگر از دستور filter_var استفاده نمایید، ممکن است برخی اشکالات احتمالی در کدهای نوشته شده در نسخههای جدید php برطرف شوند ولی در کدهایی که به صورت دستی نوشته شوند، پیدا شدن و رفع خطای احتمالی کمتر امکانپذیر است.