اعتبارسنجی ایمیل و آدرس (PHP Form URL/E-mail)
اعتبارسنجیِ تخصصی: ایمیل و وبسایت 📧🌐
بررسیِ ساختارِ یک آدرسِ ایمیل یا یک URL فراتر از یک چک کردنِ ساده برایِ خالی نبودن است. خوشبختانه PHP ابزارهایِ بسیار دقیقی برایِ این کار دارد.
۱. استفاده از Filter Var (روشِ پیشنهادی)
بهترین و سادهترین راه. PHP ورژنهایِ مختلفِ این استانداردها را میشناسد.
{code_block('if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {\n $emailErr = "فرمت ایمیل نامعتبر است";\n}')}۲. استفاده از RegEx (برایِ نام و نام خانوادگی)
مثلاً برایِ اینکه مطمئن شویم نام فقط شاملِ حروف و فاصله است:
{code_block('if (!preg_match("/^[a-zA-Z-' ]*$/", $name)) {\n $nameErr = "فقط حروف و فاصله مجاز است";\n}')}اعتبارسنجیِ URL:
برایِ اینکه مطمئن شوید کاربر یک آدرسِ معتبر سایت وارد کرده است:
{code_block('if (!filter_var($website, FILTER_VALIDATE_URL)) {\n $websiteErr = "آدرس سایت اشتباه است";\n}')}FILTER_VALIDATE_IP، FILTER_VALIDATE_INT و حتی FILTER_VALIDATE_BOOLEAN هم دارد.
بخش تخصصی: امنیت و مدیریتِ پیشرفتهیِ فرمها 🐘🛡️
در دنیایِ واقعی، فرمها خطرناکترین بخشِ اپلیکیشنِ شما هستند. هکرها از طریقِ فرمها سعی میکنند کدهایِ مخرب تزریق کنند یا دادههایِ شما را سرقت کنند.
۱. امنیت در برابر XSS (تزریق کد)
هرگز دادهیِ کاربر را بدونِ پاکسازی چاپ نکنید. تابعِ htmlspecialchars() کاراکترهایی مثل < و > را به کدهایِ بیخطر تبدیل میکند تا مرورگر آنها را به عنوانِ تگِ HTML اجرا نکند.
۲. تکنیکِ CSRF Protection
برایِ جلوگیری از این که یک مهاجم از طرفِ کاربرِ شما فرمی را ارسال کند، باید از یک Token امنیتیِ یکبار مصرف در هر فرم استفاده کنید. این توکن در سمتِ سرور چک میشود تا تایید شود فرم واقعاً از سایتِ خودتان ارسال شده است.
۳. استفاده از Filter Extension
PHP دارایِ یک افزونهیِ داخلیِ قدرتمند برایِ اعتبارسنجی است. به جایِ نوشتنِ رگکسهایِ پیچیده برایِ ایمیل، از filter_var($email, FILTER_VALIDATE_EMAIL) استفاده کنید که بسیار دقیقتر و ایمنتر است.
تمرینهای عملی
برای تثبیت یادگیری این درس تمرینهای زیر را حل کنید
با استفاده از تابعِ filter_var و ثابتِ FILTER_VALIDATE_EMAIL، چک کنید آیا "test@example.com" معتبر است؟ اگر بود Valid را چاپ کنید.
<?php
$email = "test@example.com";
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Valid";
}
?>
آماده رفتن به درس بعدی هستید؟
این درس را به پایان رساندید و میتوانید به درس بعدی بروید.