کنترل داده ها با استفاده از filter ها در php

سلام به همه ی دوستان گرامی. در این اموزش میخوایم به بررسی توابع filter بپردازیم. توسط این نوع از توابع شما میتونید داده های خودتون رو قبل از ذخیره کردن در دیتابیس کنترل کنید! مثلا اگه یه input برای دریافت ایمیل کاربر قرار داده اید میتونید تست کنید که ایا چیزی که کاربر وارد کرده است ایا واقعا یک ایمیل است یا نه؟!!!

توابعی که در اینجا میخوام به شما دوستان عزیز اموزش بدم به صورت لیست زیر هستند:

  • filter_has_var
  • filter_var
  • filter_input

توابع بالا رو به ترتیبی که ذکر کردم توضیح میدم 😀 بروووو که بریم:

بررسی تابع filter_has_var : این تابع بررسی میکنه که ایا متغیری از نوع مورد نظر وجود داره یا نه! شکل کلی این تابع به صورت زیر است:

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

  • INPUT_GET : متغیر رو درون داده هایی که به صورت متد GET ارسال شدن میگرده!
  • INPUT_POST : متغیر مورد نظر رو درون داده هایی که به صورت POST ارسال شده اند میگرده.
  • INPUT_COOKIE : متغیری که میگیم رو درون داده هایی که به صورت کوکی ارسال شدن میگرده.
  • INPUT_SERVER : متغیر مورد نظر ما رو درون سرور مشخصات سرور میگرده (SERVER_$)

در اخر باید بگم تابع filter_has_var چک میکنه تا ببینه متغیر مورد نظر وجود داره یا نه! اگه وجود داشته باشه مقدار true رو برمیگردونه و در غیر این صورت مقدار false رو نمایش میده.

خب حالا فرض کنید یه فرم به صورت زیر داریم:

توی دستورات بالا یه فرم ساختیم که توش یه input داره و نام اون اینپوت family هست حالا وقتی که روی دکمه ی submit کلیک بشه داده ها به صورت POST ارسال میشن! ما قبل از اینکه از داده های درون input استفاده کنیم باید ببینیم ایا داده ای ارسال شده که اسم اینپوت اون family باشه؟ این کار رو میتونیم با فیلتر ها انجام بدیم:

با دستورات بالا قبل از اینکه از مقدار درون input که اسمش family هست رو استفاده کنیم میایم بررسی میکنیم چنین input اصلا داده ای ارسال کرده یا نه؟ اگه ارسال کرده بود استفاده میکنیم 😀 ذر غیر این صورت یه پیامی رو نشون میدیم ,در اینجا چون متد فرم POST بود من از INPUT_POST استفاده کردم ولی اگه شما متد فرم خودتون رو GET میزارید باید از INPUT_GET توی تابع filter_has_var استفاده کنید.

بررسی تابع filter_var : باید بگم که این تابع متغیرهای شما رو میتونه بررسی کنه! مثلا بررسی کنه ایا مقدار یه متغیر ایمیل هست یا نه؟ و یا اینکه مقدار متغیر مورد نظر شما عددی هست یا نه؟ و یا ادرس سایت هست (url) یا نه؟!!! شکل کلی این تابع به صورت زیر است:

همونطور که میبینید در دستورات بالا تابع filter_var دوتا پارامتر ورودی میگیره! یکی متغیر شما و دیگری نوع فیلتری است که متغیر رو بررسی کنه. فیلترهایی که متغیر رو بررسی میکنن به صورت زیر هستند:

فیلترهای بررسی کننده: این نوع فیلترها چیز خاصی رو بررسی میکنند که اگه شرایط برقرار باشه مقدار true توسط تابع filter_var برگردونده میشه و در غیر این صورت مقدار false برگردونده میشه! لیست مهمترین این فیلترها به صورت زیر است:

  • FILTER_VALIDATE_EMAIL : بررسی میکنه که متغیر مورد نظر ایمیل هست یا نه.
  • FILTER_VALIDATE_IP : بررسی میکنه متغیر مورد نظر IP هست یا نه.
  • FILTER_VALIDATE_URL : بررسی میکنه متغیر مورد نظر از نوع ادرس اینترنتی (URL) هست یا نه.
  • FILTER_VALIDATE_FLOAT : بررسی میکنه متغیر عدد اعشاری هست یا نه.
  • FILTER_VALIDATE_INT : بررسی میکنه متغیر عدد صحیح هست یا نه.

فیلترهای پاکسازی کننده: این فیلترها متغیر رو از کاراکترهای غیر مجاز پاکسازی میکنند و محتوای پاکسازی شده توسط تابع filter_var برگردانده میشود , مهمترین این فیلترها به صورت زیر هستند:

  • FILTER_SANITIZE_EMAIL : این فیلتر ایمیل رو از همه ی کاراکتر های غیر مجاز بجز !#$%&’*+-=?^_`{|}~@.[] و اعداد و کاراکترهای انگلیسی پاکسازی میکنه.
  • FILTER_SANITIZE_NUMBER_INT : این فیلتر همه ی کاراکترهای اظافی بجز اعداد و علامت های + و – رو حذف میکنه.

خب حالا بریم سراغ نحوه ی استفاده از تابع filter_var , به مثال زیر دقت کنید:

در دستورات بالا ابتدا یه مقدار داخل متغیر email ریختیم و با استفاده از تابع filter_var میایم چک میکنیم محتوای درون متغیر email ایا واقعا یه ادرس ایمیل هست یا نه! برای این کار فیلتر FILTER_VALIDATE_EMAIL رو استفاده میکنیم. این فیتلر در صورتی که متغیر ادرس یه ایمیل رو نشون بده مقدار true رو برمیگردونه و در غیر این صورت مقدار false رو بر میگردونه! حالا به مثال زیر دقت کنید:

در دستورات بالا بعد از اینکه از ایمیل بودن محتوای متغیر email مطمئن شدیم میایم و محتوا رو از کاراکترهای اظافی پاکسازی میکنیم و بعدش نمایش میدیم. دقت کنید که فیتلر FILTER_SANITIZE_EMAIL میاد فقط کاراکترهایی که میتونه توی ایمیل موجود باشه رو نگهداری میکنه و بقیه رو حذف میکنه! کاراکترهایی که مشکل encode دارند رو هم تصحیح میکنه.

بررسی تابع filter_input : این تابع مانند filter_var عمل میکنه با این تفاوت که متغیرهایی که بررسی میکنه رو از نوع POST یا GET یا SERVER دریافت میکنه! شکل کلی این تابع به صورت زیر است:

همونطور که میبینید تابع filter_input سه پارامتر قبول میکنه! مقدار اول مشخص میکنه که ورودی از کجا گرفته بشه! پارامتر اول میتونه INPUT_POST یا INPUT_GET یا INPUT_SERVER باشه , مقدار دوم نام متغیری هست که میخوایم دریافت کنیم و مقدار سوم فیلتری هست که روی متغیر اعمال میشه. فیلترها با تابع filter_var یکسان هستند پس دیگه نمینویسم (دستم تاول زد خخخخ).

بیاید براتون به مثال بزنم :

اگه توسط یه فرم که یک input با نام email داره و متد اون POST هست مقداری رو ارسال کنیم با استفاده از دستورات بالا میشه بررسی کرد که مقدار درون input واقعا ایمیل هست یا نه! اگه ایمیل بود کاراکترهای اون تصحیح میشه و نمایش داده میشه 😀 به همین راحتی!

امیدوارم که این اموزش بدردتون بخوره و بتونید داده های خودتون رو قبل از ذخیره و استفاده کردن ابتدا بررسی کنید. دوستانی که سوال یا مشکلی دارند از طریق فرم انتهای همین پست مطرح کنند تا پاسخ بدم. موفق باشید

به اشتراک بگذارید:Email this to someoneShare on FacebookTweet about this on TwitterShare on Google+Digg thisShare on LinkedInPin on PinterestShare on StumbleUponFlattr the authorShare on RedditBuffer this pageShare on TumblrPrint this pageShare on YummlyShare on VK

می‌خواهید دیدگاهتان را بیان کنید؟