افزونه فیلتر(Filter Extension) در PHP

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

تابع filter_list() میتواند لیستی از نام و ID تمام فیلترهای در دسترس و پشتیبانی شده را برگرداند و اگر فیلتری وجود نداشته باشد یک آرایه خالی را بر می گرداند.

<table>
  <tr>
    <td>Filter Name</td>
    <td>Filter ID</td>
  </tr>
  <?php
  foreach (filter_list() as $id =>$filter) {
      echo '<tr><td>' . $filter . '</td><td>' . filter_id($filter) . '</td></tr>';
  }
  ?>
</table>

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

بسیاری از برنامه های کاربردی وب، ورودی های(input) خارجی زیادی را دریافت می کنند. داده های این ورودی های خارجی، می تواند شامل موارد زیر باشد :

  • اطلاعاتی که کاربر از طریق فرم ارسال می کند
  • کوکی ها (cookies)
  • اطلاعات وب سرویس ها (Web services data)
  • متغیرهای سرور (Server variables)
  • نتایج کوئری های دیتابیس (Database query results)

نکته:

همیشه اطلاعات ارسال شده ی خارجی را چک کنید. اگر اطلاعات خطرناکی از طریق فرم ارسال شود، می تواند مشکلات زیادی را برای شما به بار آورد. با استفاده از PHP Filter ها چک کنید که آیا اطلاعات صحیح و سالمی برای شما ارسال شده است یا خیر.

تابع filter_var() در PHP :

تابع filter_var() می تواند هر دو عمل اعتبار سنجی(validate) و پاکسازی (sanitize) داده های ورودی را انجام دهد. تابع filter_var() یک متغیر را بر حسب فیلتری که به آن می دهیم، چک می کند. این تابع دو مقدار می گیرد:

  • نام متغیری که می خواهید چک کنید
  • نوع فیلتری که می خواهید بر اساس آن متغیر را چک کنید

به عنوان مثال شما داخل فرم، یک فیلد متنی برای وارد کردن آدرس ایمیل قرار داده اید. کاری که این تابع می کند این است که، مقدار وارد شده به عنوان ایمیل از طرف کاربر را می گیرد و آن را براساس یکی از فیلترهای پیش ساخته شده ی PHP به نام FILTER_VALIDATE_EMAIL چک می کند و بررسی می کند آیا اطلاعات وارد شده،  فرمت صحیح ایمیل را دارد یا ندارد. اگر با فرمت صحیح ایمیل، مطابقت داشت true را بر می گرداند در غیر این صورت false را بر می گرداند.

پاکسازی یک رشته(Sanitize a String) با تابع filter_var() در php

مثال زیر از تابع filter_var() برای حذف تمام تگ های HTML از یک رشته(string) استفاده می کند:

<?php
$str = "<h1>Hello World!</h1>";
$newstr = filter_var($str, FILTER_SANITIZE_STRING);
echo $newstr;
?>

خروجی :

Hello World!

 

اعتبارسنجی (Validate) یک متغیر integer با تابع filter_var() در php

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

<?php
$int = 100;

if (!filter_var($int, FILTER_VALIDATE_INT) === false) {
    echo "Integer is valid";
} else {
    echo "Integer is not valid";
}
?>

خروجی :

Integer is valid

نکته:

تابع filter_var() و مشکل آن با عدد صفر !

در مثال بالا، اگر به متغیر $int مقدار 0 را بدهید ، خروجی کد بالا  “Integer is not valid” خواهدبود. برای حل این مشکل، از کد زیر استفاده کنید:

<?php
$int = 0;

if (filter_var($int, FILTER_VALIDATE_INT) === 0 || !filter_var($int, FILTER_VALIDATE_INT) === false) {
    echo "Integer is valid";
} else {
    echo "Integer is not valid";
}
?>

خروجی :

Integer is valid

 

اعتبارسنجی (validate) یک Ip با تابع filter_var()  در php

مثال زیر از تابع filter_var()  برای بررسی اینکه آیا متغیر $ip یک آدرسِ IP معتبر است یا خیر استفاده می کند.

<?php
$ip = "127.0.0.1";

if (!filter_var($ip, FILTER_VALIDATE_IP) === false) {
    echo "$ip is a valid IP address";
} else {
    echo "$ip is not a valid IP address";
}
?>

خروجی :

127.0.0.1 is a valid IP address

 

اعتبارسنجی(Validate) و پاکسازی(Sanitize) یک آدرس ایمیل با تابع filter_var()  

در مثال زیر تابع filter_var() ابتدا تمام کاراکترهای غیرقانونی را از متغیر $email حذف می کند، سپس بررسی می کند که متغیر $email یک آدرسِ ایمیل معتبر است  یا خیر.

<?php
$email = "clicksite.ir@gmail.com";

// Remove all illegal characters from email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);

// Validate e-mail
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
    echo "$email is a valid email address";
} else {
    echo "$email is not a valid email address";
}
?>

 

خروجی :

clicksite.ir@gmail.com is a valid email address

اعتبارسنجی(Validate) و پاکسازی(Sanitize) یک URL با تابع filter_var()  در php

در مثال زیر تابع filter_var() ابتدا تمام کاراکترهای غیرقانونی را از متغیر $url حذف می کند، سپس بررسی می کند که متغیر $url یک آدرسِ ایمیل معتبر است  یا خیر.

<?php
$url = " https://clicksite.org";

// Remove all illegal characters from a url
$url = filter_var($url, FILTER_SANITIZE_URL);

// Validate url
if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
    echo "$url is a valid URL";
} else {
    echo "$url is not a valid URL";
}
?>

خروجی :

https://clicksite.org is a valid URL

 

بدون دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *