اعتبارسنجی ایمیل در PHP با استفاده از Regex و DNS

استفاده از Regex برای بررسی ساختار ایمیل و تأیید DNS و رکوردهای MX به عنوان دو روش مکمل، می‌تواند جلوی ورود بسیاری از ایمیل‌های جعلی و غیر معتبر را بگیرد.......

انتشار: , زمان مطالعه: 4 دقیقه
اعتبارسنجی ایمیل در PHP با استفاده از Regex و DNS
دسته بندی: برنامه نویسی تعداد بازدید: 50

در دنیای امروز که وب‌سایت‌ها و سرویس‌های آنلاین به ثبت‌نام کاربران وابسته هستند، جلوگیری از ورود ایمیل‌های جعلی و غیر معتبر بسیار مهم است. استفاده از روش‌های مختلف برای اطمینان از صحت و اعتبار ایمیل‌ها می‌تواند جلوی بسیاری از مشکلات امنیتی و هرزنامه‌ها را بگیرد. در این مقاله، دو روش پرکاربرد برای جلوگیری از ورود ایمیل‌های جعلی و نحوه پیاده‌سازی آن‌ها در PHP را آموزش می‌دهیم: استفاده از عبارات منظم (Regex) و تأیید DNS با استفاده از رکوردهای MX.

روش اول: استفاده از Regex برای بررسی ساختار ایمیل

یکی از ساده‌ترین و رایج‌ترین روش‌ها برای بررسی اولیه صحت ایمیل‌ها، استفاده از عبارات منظم (Regular Expressions یا Regex) است. با استفاده از Regex می‌توان ساختار یک ایمیل را از لحاظ رعایت قواعد کلی بررسی کرد. این روش به ما کمک می‌کند تا اطمینان حاصل کنیم که ایمیلی که توسط کاربر وارد شده، از نظر فرمت صحیح است.

نحوه پیاده‌سازی بررسی ساختار ایمیل با Regex در PHP

در PHP می‌توان از تابع preg_match برای اعتبارسنجی ایمیل با استفاده از Regex استفاده کرد. به عنوان مثال، برای بررسی صحت یک ایمیل مانند [email protected]، می‌توانید از عبارت منظم زیر استفاده کنید:

<?php
// -------------------------------------------------------------------
// Programmer       : Ebrahim Shafiei (EbraSha)
// Email                     : [email protected]
// -------------------------------------------------------------------

$mail_address = "[email protected]";

// Regular expression to validate email format
if (preg_match("/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/", $mail_address)) {
    echo "The email address format is valid.";
} else {
    echo "Invalid email address format.";
}
?>

توضیحات مربوط به Regex:

  • ^[a-zA-Z0-9._%+-]+: این بخش از عبارت منظم مشخص می‌کند که بخش قبل از @ باید شامل حروف، اعداد و برخی کاراکترهای مجاز مانند نقطه، خط زیر (_)، درصد (%)، بعلاوه (+) و خط تیره (-) باشد.
  • @[a-zA-Z0-9.-]+: این قسمت از عبارت بعد از @ بررسی می‌شود و باید شامل حروف، اعداد، نقطه و خط تیره باشد.
  • \.[a-zA-Z]{2,}$: این بخش از عبارت اطمینان حاصل می‌کند که دامنه سطح بالا (مانند .com) حداقل دو حرف داشته باشد.

این روش می‌تواند برای بررسی سریع و آسان ایمیل‌ها مورد استفاده قرار گیرد، اما باید توجه داشت که استفاده از Regex تنها ساختار ایمیل را بررسی می‌کند و به تنهایی نمی‌تواند جلوی ایمیل‌های جعلی یا غیر معتبر را بگیرد.

روش دوم: تأیید DNS و بررسی رکوردهای MX

پس از تأیید ساختار ایمیل با استفاده از Regex، باید اطمینان حاصل کنیم که دامنه ایمیل معتبر است و می‌تواند ایمیل دریافت کند. برای این کار از رکوردهای DNS و به خصوص رکوردهای MX (Mail Exchange) استفاده می‌کنیم.

نحوه تأیید DNS و رکوردهای MX در PHP

برای بررسی اینکه آیا دامنه ایمیل وارد شده، قابلیت دریافت ایمیل را دارد یا خیر، می‌توان از تابع checkdnsrr() در PHP استفاده کرد. این تابع بررسی می‌کند که آیا دامنه ایمیل دارای رکورد MX معتبر است یا خیر.

در مثال زیر، ابتدا دامنه ایمیل استخراج شده و سپس رکورد MX آن بررسی می‌شود:

<?php
// Check if the domain has a valid MX record
$domain = substr(strrchr($mail_address, "@"), 1);

if (checkdnsrr($domain, "MX")) {
    echo "The email domain has a valid MX record.";
} else {
    echo "Invalid email domain.";
}
?>

مراحل عملکرد:

  1. استخراج دامنه از ایمیل: با استفاده از تابع substr، بخش دامنه ایمیل (بعد از @) استخراج می‌شود.
  2. بررسی رکورد MX: تابع checkdnsrr() بررسی می‌کند که آیا دامنه دارای رکورد MX معتبر است یا خیر. اگر رکورد MX وجود داشته باشد، به این معناست که دامنه قابلیت دریافت ایمیل را دارد.

این روش یک گام اضافی پس از بررسی ساختار ایمیل است و به اطمینان از معتبر بودن دامنه کمک می‌کند.

ترکیب دو روش برای جلوگیری از ایمیل‌های جعلی

برای جلوگیری از ورود ایمیل‌های جعلی به سیستم، بهترین راهکار این است که از هر دو روش به صورت ترکیبی استفاده شود. ابتدا با استفاده از Regex ساختار ایمیل بررسی می‌شود و سپس با استفاده از تأیید DNS و بررسی رکوردهای MX، از معتبر بودن دامنه اطمینان حاصل می‌شود. این ترکیب می‌تواند تا حد زیادی جلوی ورود ایمیل‌های جعلی را بگیرد.

مکانیزم‌های امنیتی مکمل

علاوه بر دو روش ذکر شده، می‌توانید از روش‌های دیگری مانند تأیید دو مرحله‌ای (Double Opt-in) و بررسی بلک‌لیست‌های عمومی برای بهبود امنیت سیستم خود استفاده کنید.

  • تأیید دو مرحله‌ای: پس از ثبت ایمیل، یک ایمیل تأییدیه به کاربر ارسال کنید و کاربر تنها پس از کلیک بر روی لینک تأیید می‌تواند ثبت‌نام را تکمیل کند.
  • بررسی بلک‌لیست‌های عمومی: با استفاده از سرویس‌های آنلاین، ایمیل‌های وارد شده را در برابر بلک‌لیست‌های عمومی بررسی کنید تا ایمیل‌های مشکوک یا مخرب شناسایی شوند.

 


دیدگاه های مربوط به این مقاله (برای ارسال دیدگاه در سایت حتما باید عضو باشید و پروفایل کاربری شما تکمیل شده باشد)