فیلتر کردن داده (اعتبارسنجی و پاک سازی) در PHP 7

PHP 7 Filters

0 252

فیلتر کردن داده ها با تابع ()filter_var

در جلسات قبل در رابطه با دو مفهوم اصلی صحبت کردیم:

  • اعتبارسنجی داده (Validating data): بررسی اینکه داده در قالب صحیح باشد.
  • پاکسازی داده (Sanitizing data): بررسی اینکه داده ها دارای کاراکتر های غیر مجاز و کد های مخرب نباشند.

یکی از توابعی که در هر دو زمینه به کمک ما می آید تابع تابع ()filter_var در PHP است. این تابع برای بررسی سریع تر داده ها طراحی شده است و می تواند با کدهای پیش فرضی که دارد انواع داده ها را چک کند. لیستی از قابلیت های این تابع را در جدول زیر می بینید:

مشاهده ی خروجی

سوال: چرا از از filter ها استفاده کنیم؟

پاسخ: بسیاری از وب سایت ها و برنامه های تحت وب از یک منبع خارجی داده می گیرند (مثلا فرمی از سمت کاربران ارسال می شود) و این داده ها می توانند شکل های زیر را به خود بگیرند:

  • فرم های ارسال شده از سمت کاربر
  • کوکی ها
  • داده های وب سرویس
  • متغیر های سرور
  • کوئری های پایگاه داده

شما باید به عنوان یک قانون کلی همیشه این نکته را در ذهن داشته باشید: داده های خارجی همیشه باید اعتبارسنجی و پاک سازی شوند. این داده ها می توانند دارای کد های مخرب یا کاراکترهای غیرمجاز باشند که به نوبه ی خود برای وب سایت شما انواع مشکلات امنیتی و اجرایی را ایجاد می کنند.

تابع تابع ()filter_var در PHP هم داده ها را پاک سازی کرده و هم اعتبارسنجی می کند. این تابع یک متغیر را از طریق یک فیلتر مشخص شده چک می کند بنابراین دو پارامتر می گیرد: اولین پارامتر داده ای است که می خواهید بررسی شود و دومین پارامتر نوع فیلتر اعمال شده خواهد بود.

پاک سازی یک رشته

در کد زیر با استفاده از تابع ()filter_var می خواهیم یک رشته را پاک سازی کنیم:

مشاهده ی خروجی

اعتبارسنجی یک عدد صحیح

مثال زیر با استفاده از تابع ()filter_var در PHP متغیر int را چک می کند تا ببیند آیا int عدد صحیح است یا خیر. اگر عدد صحیح باشد خروجی کد ما Integer is valid می شود و در غیر این صورت پیام Integer is not valid نمایش داده می شود.

مشاهده ی خروجی

البته در این مثال مشکلی وجود دارد. اگر مقدار int را برابر با صفر قرار دهیم تابع ما پیام Integer is not valid (عدد صحیح نیست) را نمایش می دهد. برای حل این مشکل می توانید کد را به این شکل بنویسید:

مشاهده ی خروجی

اعتبارسنجی آدرس IP

در مثال زیر می خواهیم ببینیم آیا آدرس IP ارائه شده معتبر است یا خیر:

مشاهده ی خروجی

اعتبارسنجی و پاک سازی آدرس Email

در مثال زیر تابع تابع ()filter_var در PHP ابتدا کاراکترهای غیرقانونی را از آدرس ایمیل حذف می کند، سپس قالب کلی این آدرس را بررسی می کند تا از معتبر بودن آن اطمینان پیدا کند:

مشاهده ی خروجی

اعتبارسنجی و پاک سازی آدرس اینترنتی (URL)

دقیقا همان کاری که با آدرس ایمیل کردیم، با آدرس URL زیر نیز انجام می دهیم:

مشاهده ی خروجی

اعتبارسنجی عدد صحیح بین دو مقدار

در مثال زیر کار تابع ()filter_var بررسی دو مورد است: ابتدا باید ببینیم نوع عدد INT (عدد صحیح) باشد، سپس باید مطمئن شویم عدد ما بین 1 تا 200 است:

مشاهده ی خروجی

اعتبارسنجی آدرس IPv6

همانطور که میدانید آدرس IPv4 با IPv6 متفاوت است بنابراین اگر بخواهیم آدرس های IPv6 را بررسی کنیم می گوییم:

مشاهده ی خروجی

اعتبارسنجی URL دارای querystring

در مثال زیر تنها URL هایی را قبول می کنیم که querystring داشته باشند:

مشاهده ی خروجی

کاراکترهای ASCII

در مثال زیر می خواهیم کاراکترهایی را که از نوع ASCII و کمتر از 127 باشند را حذف کنیم. توجه کنید که منظور ما مقدارِ کدِ ASCII آن ها است نه مقداری عددی آن ها:

جدول کد های کاراکتر های ASCII
جدول کدهای کاراکتر های ASCII

مشاهده ی خروجی

امیدوارم از این قسمت لذت برده باشید.

ترتیبی که روکسو برای یادگیری مطالب سری آموزش PHP 7 به شما توصیه می‌کند:

ارسال نظر

توجه:‌ آدرس ایمیل شما منتشر نخواهد شد.

film izle | eskisehir escort | modanisa | mersin escort | www.ieski.com | eskort adana | www.izmir-eskort.org | kabak koyu | hd tv izle