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

فیلترهای پیشرفته (PHP Filters Advanced)

30 دقیقه Article

فیلترهایِ پیشرفته: قدرتِ شخصی‌سازی ⚙️💎

گاهی اوقات نیاز دارید فراتر از چک کردنِ ساده بروید، مثلاً چک کردنِ اینکه آیا یک آدرسِ IPv6 درست است یا فیلتر کردنِ یک محدوده‌یِ خاصِ عددی.

کار با Flags (پرچم‌ها)

پرچم‌ها به شما اجازه می‌دهند رفتارِ فیلتر را تغییر دهید. مثلاً برای حذفِ کاراکترهایِ خاص از اسکی (ASCII):

{code_block('filter_var($str, FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH);')}

چک کردنِ IPv6:

{code_block('filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6);')}

استفاده از Callback:

قدرتمندترین قابلیتِ فیلترها! می‌توانید یک تابعِ شخصی بنویسید و از فیلتر بخواهید آن را رویِ داده اجرا کند.

{code_block('filter_var($str, FILTER_CALLBACK, ["options" => "strtoupper"]);')}
فیلتر کردنِ همزمانِ کلِ آرایه: با تابعِ filter_input_array() می‌توانید کلِ داده‌هایِ یک فرم را با یک دستور و با فیلترهایِ مختلف پردازش کنید.
امنیتِ شبکه: با فیلترها می‌توانید به راحتی جلویِ ورودِ IPهایِ مشکوک یا داخلی (Private IPs) را به سیستمِ خود بگیرید.
<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 از این پارادایم استفاده می‌کنند.

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

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

فیلتر IPv6 Hard
سوال تمرین

با استفاده از FILTER_VALIDATE_IP و پرچمِ مناسب، چک کنید آیا یک IP از نوع IPv6 است.

پاسخ تمرین
PHP
<?php
if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
  echo "IPv6";
}
?>

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

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