دوره‌ها / آموزش جامع PHP (از صفر تا استادی) / فیلترها (PHP Filters)

فیلترها (PHP Filters)

30 دقیقه Article

فیلترها: بازرسیِ نهاییِ داده‌ها 🔬🛡️

فیلترها یکی از تمیزترین و حرفه‌ای‌ترین راه‌ها برایِ چک کردن (Validation) و پاکسازی (Sanitization) ورودی‌ها هستند.

اعتبارسنجی (Validation)

آیا این داده از نوعِ خاصی هست یا نه؟

{code_block('if (filter_var($int, FILTER_VALIDATE_INT)) { ... }')}

پاکسازی (Sanitization)

حذفِ کاراکترهایِ غیرمجاز از متن.

{code_block('$clean_url = filter_var($url, FILTER_SANITIZE_URL);')}

چرا از Filter استفاده کنیم؟

  • سرعتِ بسیار بالا (نوشته شده در زبان C توسط هسته‌ی PHP).
  • کاهشِ نیاز به نوشتنِ عباراتِ باقاعده‌‌یِ پیچیده (RegEx).
  • پشتیبانی از انواعِ متنوع مثل ایمیل، IP، URL و غیره.
filter_has_var(): قبل از فیلتر کردن، می‌توانید چک کنید که آیا اصلاً آن متغیر در ورودی (مثل POST) وجود دارد یا خیر.

چک کردن عدد در محدوده:

{code_block('$options = ["options" => ["min_range" => 1, "max_range" => 100]];\nfilter_var($val, FILTER_VALIDATE_INT, $options);')}
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: مهندسی پیشرفته و امنیت در PHP 🐘⚙️

درکِ عمیقِ مفاهیمِ پیشرفته، تفاوتِ بینِ یک کدنویسِ معمولی و یک معمارِ نرم‌افزار را رقم می‌زند.

۱. بهینه‌سازی I/O و بافرینگ

در هنگامِ کار با فایل‌هایِ حجیم، هرگز کلِ فایل را به یکباره در حافظه (RAM) بارگذاری نکنید. استفاده از Streams و توابعِ fopen/fgets به شما اجازه می‌دهد فایل را خط به خط پردازش کنید که باعث می‌شود مصرفِ حافظه همیشه در کمترین سطحِ ممکن باقی بماند.

۲. امنیتِ نشست‌ها (Session Security)

مهم‌ترین خطر در مدیریتِ کاربران، Session Hijacking است. همیشه بعد از لاگین کردنِ کاربر، از session_regenerate_id(true) استفاده کنید تا شناسه‌یِ نشستِ قبلی باطل شود. همچنین فلگ‌هایِ HttpOnly و Secure را برای کوکی‌ها فعال کنید.

۳. استانداردهایِ مدرن و Autoloading

در پروژه‌هایِ بزرگ، استفاده از include دستی فاجعه‌بار است. استانداردِ PSR-4 و استفاده از Composer به شما اجازه می‌دهد کلاس‌ها را فقط در زمانی که واقعاً نیاز هستند بارگذاری کنید (Lazy Loading)، که سرعتِ لود شدنِ کلِ اپلیکیشن را به شدت بالا می‌برد.

نکته استراتژیک: به جایِ استفاده از توابعِ سنتی، سعی کنید به سمتِ Object-Oriented Programming (OOP) حرکت کنید. اکثرِ کتابخانه‌هایِ پیشرفته‌یِ PHP مثل DateTime و PDO از این پارادایم استفاده می‌کنند.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

فیلتر کردن عدد صحیح Medium
سوال تمرین

با استفاده از تابعِ filter_var، چک کنید آیا متغیر $v = 100 یک عددِ صحیح معتبر است؟

پاسخ تمرین
PHP
<?php
$v = 100;
if (filter_var($v, FILTER_VALIDATE_INT)) {
  echo "Valid";
}
?>

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.