وباکا

آموزش تخصصی برنامه نویسی وب

فیلترها دو نوع کاربرد دارند:

اعتبارسنجی داده ها : اینکه داده ها دارای فرمت مورد نظر باشند.

پالایش داده ها : حذف کاراکترهای غیر مجاز از ورودی ها.

افزونه فیلتر PHP

فیلترهای PHP برای تأیید و پاکسازی ورودی های خارجی مورد استفاده قرار می گیرند.

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

تابع filter_list میتواند لیستی از امکانات افزونه فیلتر PHP را ارائه دهد:

<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 می توانید مطمئن باشید که برنامه شما ورودی صحیح را می دهد!

تابع PHP filter_var

تابع filter_var  اعتبار داده ها را بررسی کرده و آنها را پالایش می کند.

تابع filter_var ، یک متغیر را با یک فیلتر مشخص فیلتر می کند و دارای دو پارامتر ورودی است:

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

پالایش یک رشته

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

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

اعتبار یک عدد صحیح

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

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

نکته: مشکل تابع  filter_var با مقدار صفر

در مثال بالا، اگر $int به 0 تنظیم شده باشد، تابع بالا به “Integer معتبر نیست” را نشان می دهد. برای حل این مشکل، از کد زیر استفاده کنید:

<?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");
}
?>

اعتبار یک آدرس IP

مثال زیر از تابع 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");
}
?>

پالایش یک بررسی اعتبار یک آدرس ایمیل

مثال زیر از تابع filter_var برای اولین بار تمام کاراکترهای غیرمجاز را از متغیر $email حذف می کند، سپس بررسی کنید که آیا یک آدرس ایمیل معتبر است:

<?php
$email = "john.doe@example.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");
}
?>

پالایش (Sanitize) و اعتبار سنجی یک URL

مثال زیر از تابع filter_var ، ابتدا تمام کاراکترهای غیرمجاز را از یک URL حذف می کند و سپس بررسی کنید آیا $url یک URL معتبر است:

<?php
$url = "https://www.w3schools.com";
// 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");
}
?>

 

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

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

فهرست مطالب