اعتبارسنجی ایمیل در php
اطلاعاتی که کاربران در سایتها وارد میکنند همیشه صحیح نیست و قبل از ذخیرهسازی و استفاده، باید ارزیابی شوند تا فرمت و محتوای صحیح داشته باشند. ایمیل کاربران یکی از موارد مهم برای ارزیابی است چون مسیر ارتباطی شما با آنها است و بازیابی دسترسی به حسابهای کاربری که ایمیل اشتباه دارند، ممکن است با مشکلات مهمی روبرو شود.
در این نوشته چند روش برای ارزیابی ایمیلها در زبان php را مرور خواهیم نمود.
۱- با استفاده از دستور filter_var
قطعه کد زیر کار ارزیابی ایمیل دریافت شده از کاربر را با کمک دستور فوق به انجام میرساند.
1 2 3 4 5 |
$email = isset( $_POST[ 'email' ] ) ? $_POST[ 'email' ] : ''; if( ! filter_var( $email, FILTER_VALIDATE_EMAIL ) ) { echo 'ایمیل وارد شده نادرست است'; } |
این روش، گزینهای خوب است چون همیشه با آخرین رفع اشکالهای احتمالی که در کدهای php انجام میشود، خیال شما آسوده است.
۲- با استفاده از عبارتهای با قاعده
با کمک عبارتهای باقاعده یا 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 برطرف شوند ولی در کدهایی که به صورت دستی نوشته شوند، پیدا شدن و رفع خطای احتمالی کمتر امکانپذیر است.
- برای ذخیرهسازی ایمیل در پایگاه داده فضای کافی در نظر بگیرید. گاهی افراد ایمیلهایی طولانی برای خود انتخاب میکنند که اگر فضای ذخیرهسازی شما ناکافی باشد، باعث ایجاد مشکلاتی خواهد شد.