11
تشکر

اعتبار سنجی داده های ورودی با استفاده تابع Filter

اعتبار سنجی داده های ورودی با استفاده تابع Filter

اعتبار سنجی داده های ورودی با استفاده تابع Filter

این مطلب در دسته بندی مطالب پی اچ پی است. پی اچ پی را در اینجا دنبال کنید.

شما همواره باید داده های ورودی را فیلتر و اعتبار سنجی کنید. ما در این مطلب با استفاده از تابع Filter اینکارو انجام میدیم. این تابع ممکن است در ظاهر زیاد خوب به نظر نرسد اما دارای ثبات و امنیت است در صورتی که درست از آن استفاده کنید.

این تابع دارای دو نوع filter_input و filter_var است.

این تابع در PHP نسخه 5.2 انتشار پیدا کرد و به خوبی از متغیرهای سوپر گلوبال SuperGlobal استفاده میکند.

در کد زیر ما از روش قدیمی برای چک کردن مقدار ورودی استفاده کردیم. در این مثال مقداری ورودی باید عدد باشد و بین اعداد 15 و 20 باشد.

 if(isset($_GET["value"])){
    $value = $_GET["value"];
  }else{
    $value = false;
  }
  if(is_numeric($value) && ($value >= 15 && $value <= 20)){
    //run my code...
  }else{
    //hanle the error...
  }
&#91;/php&#93;</div>
<p dir="RTL">اما ما همین کار طولانی را با استفاده از تابع filter_input انجام میدهیم.</p>
<div class="mycode">[php]
$value = filter_input(INPUT_GET, "value", FILTER_VALIDATE_INT, array("option" => array("min_range" => 15, "max_range" => 20)));
if($value){
    //run my code...
}else{
    //hanle the error...
}

این تابع در پارامتر اول نوع سوپر گلوبال را میگیرد. اگر ما از روش POST استفاده کرده بودیم باید از مقدار INPUT_POST استفاده کنیم. در پارامتر دوم نام اندیس آرایه را دریافت میکند. در پارامتر سوم نوع فیلتر را باید مشخص کرد. انواع فیلترها را میتوانید در PHP Manual ببینید. و در پارامتر آخر میتوان تنظمیاتی برای فیلتر انتخاب کرد که بر اساس نوع فیلتر این تنظیمات متفاوت است. که در لینکی که داده شد مقدارهای option هم قرار دارد.

خب از filter_var هم که از اسمش پیداست برای فیلتر متغیر استفاده میشود. برای مثال ما در تابع زیر مقدار ایمیل را دریافت میکنیم سپس آن را ایمیل میکنیم. اما ابتدا آن را از تابع filter_var عبور میدهیم.

function emailUser($email){
    $email = filter_var($email,FILTER_VALIDATE_EMAIL);
    if($email !== flase){
        mail($email, "Here is my email", "Some Content");
    }else{
        //hanle the error
    }
}

 


نتیجه گیری

با استفاده از توابع توانستیم اعتبار سنجی داده های ورودی را انجام دهیم. استفاده از این توابع باعث امنیت 100% کد شما نمیشود. اما تاثیر خود را خواهد گذاشت. نظرات خود را درباره این تابع بیان کنید.

  • پژمان می‌گه:

    راستی یک چیزی یادم رفت بپرسم

    این فیلتر FILTER_VALIDATE_EMAIL چطور کار میکنه
    جلوی چه چیزهای رو میگیره
    بازم سپاس

    • محسن شفیعی می‌گه:

      این فیلتر چک میکنه که ایمیل ها درست وارد شدن یا خیر.
      اگر ساختار دریافتی ایمیل نباشد یا مشکلی داشته باشد، خالی برمیگرداند.

  • پژمان می‌گه:

    بسیار عالی بود مختصر مفید
    اما اگه میشه یکم بیشتر در این ضمینه توضیح بدهید
    مثلا در مورد تزریق کد
    مرسی

  • azimi می‌گه:

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


  • نظرات این مطلب بسته است.