پایپ فیلٹر (فیلٹر)

PHP ਫਿਲਟਰ ਨਾਨ-ਸੁਰੱਖਿਅਤ ਸੋਰਸ ਤੋਂ ਆਉਣ ਵਾਲੇ ਡਾਟਾ ਜਿਵੇਂ ਕਿ ਯੂਜ਼ਰ ਇਨਪੁਟ ਦੀ ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ ਫਿਲਟਰਿੰਗ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ。

PHP ਫਿਲਟਰ ਕੀ ਹੈ?

PHP ਫਿਲਟਰ ਨਾਨ-ਸੁਰੱਖਿਅਤ ਸੋਰਸ ਤੋਂ ਆਉਣ ਵਾਲੇ ਡਾਟਾ ਦੀ ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ ਫਿਲਟਰਿੰਗ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ。

ਯੂਜ਼ਰ ਇਨਪੁਟ ਜਾਂ ਪਰਸੋਨਲਾਈਜ਼ਡ ਡਾਟਾ ਦੀ ਪ੍ਰਮਾਣਿਕਤਾ ਅਤੇ ਫਿਲਟਰਿੰਗ ਕਿਉਂ ਹਰ ਵੈੱਬ ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਮਹੱਤਵਪੂਰਨ ਹਿੱਸਾ ਹੈ。

PHP ਦੇ ਫਿਲਟਰ ਐਕਸਟੈਂਸ਼ਨ ਦਾ ਡਿਜਾਇਨ ਫਿਲਟਰਿੰਗ ਨੂੰ ਹੋਰ ਅਸਾਨ ਅਤੇ ਤੇਜ਼ ਬਣਾਉਣ ਦਾ ਹੈ。

ਫਿਲਟਰ ਕਿਉਂ ਵਰਤਦੇ ਹਾਂ?

ਸਾਰੇ ਵੈੱਬ ਐਪਲੀਕੇਸ਼ਨਸ ਬਾਹਰੀ ਇਨਪੁਟ ਉੱਤੇ ਨਿਰਭਰ ਹੁੰਦੇ ਹਨ। ਇਹ ਡਾਟਾ ਆਮ ਤੌਰ 'ਤੇ ਯੂਜ਼ਰਾਂ ਜਾਂ ਹੋਰ ਐਪਲੀਕੇਸ਼ਨਾਂ (ਜਿਵੇਂ ਕਿ ਵੈੱਬ ਸੇਵਾਵਾਂ) ਤੋਂ ਆਉਂਦਾ ਹੈ। ਫਿਲਟਰ ਦੀ ਵਰਤੋਂ ਨਾਲ ਤੁਸੀਂ ਯਕੀਨੀ ਬਣਾ ਸਕਦੇ ਹੋ ਕਿ ਐਪਲੀਕੇਸ਼ਨ ਨੂੰ ਸਹੀ ਇਨਪੁਟ ਟਾਈਪ ਮਿਲੇ।

ਤੁਸੀਂ ਹਮੇਸ਼ਾ ਬਾਹਰੀ ਸ਼ਾਰਟ ਨੂੰ ਫਿਲਟਰ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ!

ਇਨਪੁਟ ਫਿਲਟਰਿੰਗ ਇਕ ਮਹੱਤਵਪੂਰਨ ਐਪਲੀਕੇਸ਼ਨ ਸੁਰੱਖਿਆ ਵਿਸ਼ਾ ਹੈ

ਬਾਹਰੀ ਸ਼ਾਰਟ ਕੀ ਹੈ?

  • ਫਾਰਮ ਤੋਂ ਇਨਪੁਟ ਇਨਪੁਟ
  • Cookies
  • ਸਰਵਰ ਵਾਰੀਅਬਲ
  • ਡਾਟਾਬੇਸ ਕੁਰਸਰ ਨਤੀਜੇ

ਫੰਕਸ਼ਨ ਅਤੇ ਫਿਲਟਰ

ਵਾਰੀਅਬਲ ਫਿਲਟਰ ਕਰਨ ਲਈ ਹੇਠ ਲਿਖੇ ਫੰਕਸ਼ਨਾਂ ਵਿੱਚੋਂ ਇੱਕ ਵਰਤੋਂ ਕਰੋ:

  • filter_var() - ਇੱਕ ਵਾਰੀਅਬਲ ਨੂੰ ਇੱਕ ਸ਼ਾਰਟ ਫਿਲਟਰ ਨਾਲ ਫਿਲਟਰ ਕਰਨਾ
  • filter_var_array() - ਕਈ ਵਾਰੀਅਬਲਾਂ ਨੂੰ ਸਮਾਨ ਜਾਂ ਵੱਖ-ਵੱਖ ਫਿਲਟਰਾਂ ਨਾਲ ਫਿਲਟਰ ਕਰਨਾ
  • filter_input - ਇੱਕ ਇਨਪੁਟ ਵਾਰੀਅਬਲ ਲੈਣਾ ਅਤੇ ਉਸ ਨੂੰ ਫਿਲਟਰ ਕਰਨਾ
  • filter_input_array - ਕਈ ਇਨਪੁਟ ਵਾਰੀਅਬਲਾਂ ਨੂੰ ਲੈਣਾ ਅਤੇ ਉਨ੍ਹਾਂ ਨੂੰ ਸਮਾਨ ਜਾਂ ਵੱਖ-ਵੱਖ ਫਿਲਟਰਾਂ ਨਾਲ ਫਿਲਟਰ ਕਰਨਾ

ਇਸ ਉਦਾਹਰਣ ਵਿੱਚ ਅਸੀਂ filter_var() ਫੰਕਸ਼ਨ ਦੀ ਮਦਦ ਨਾਲ ਇੱਕ ਪੂਰਣ ਸੰਖਿਆ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕੀਤਾ ਹੈ:

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

ਉੱਪਰੋਕਤ ਕੋਡ 'FILTER_VALIDATE_INT' ਫਿਲਟਰ ਨੂੰ ਵਰਤ ਕੇ ਵਾਰੀਅਬਲ ਨੂੰ ਫਿਲਟਰ ਕਰਦਾ ਹੈ। ਕਿਉਂਕਿ ਇਹ ਪੂਰਣ ਸੰਖਿਆ ਲਾਗੂ ਹੈ ਤਾਂ ਕੋਡ ਦਾ ਆਉਟਪੁਟ \

ਜੇਕਰ ਅਸੀਂ ਇੱਕ ਗ਼ਲਤ ਪੂਰਣ ਸੰਖਿਆ ਵਾਲੀ ਵੈਰੀਅੱਬਲ ਦਾ ਉਪਯੋਗ ਕਰਦੇ ਹਾਂ ਤਾਂ ਆਉਟਪੁਟ ਹੈ: \

ਪੂਰੀ ਫੰਕਸ਼ਨ ਅਤੇ ਫਿਲਟਰ ਸੂਚੀ ਲਈ ਸਾਡੇ دستورالعمل فیلتر PHP.

Validating ਅਤੇ Sanitizing

ਦੋ ਤਰ੍ਹਾਂ ਦੇ ਫਿਲਟਰ ਹਨ:

Validating ਫਿਲਟਰ:

  • ਯੂਜ਼ਰ ਇਨਪੁਟ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ
  • ਸਖਤ ਫਾਰਮੈਟ ਨਿਯਮ (ਜਿਵੇਂ ਕਿ URL ਜਾਂ E-Mail ਪ੍ਰਮਾਣਿਤ ਕਰਨ)
  • ਸਫਲ ਹੋਣ ਤਾਂ ਮੌਜੂਦਾ ਪ੍ਰਕਾਰ ਵਾਪਸ ਦਿੰਦੇ ਹਨ ਅਤੇ ਅਸਫਲ ਹੋਣ ਤਾਂ FALSE ਵਾਪਸ ਦਿੰਦੇ ਹਨ

Sanitizing ਫਿਲਟਰ:

  • ਸਟਰਿੰਗ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤੇ ਗਏ ਚਿਹਨਾਂ ਨੂੰ ਪ੍ਰਵਾਨ ਕਰਨ ਜਾਂ ਰੋਕਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ
  • ਕੋਈ ਡਾਟਾ ਫਾਰਮੈਟ ਨਿਯਮ ਨਹੀਂ ਹੈ
  • ਹਮੇਸ਼ਾ ਸਟਰਿੰਗ ਵਾਪਸ ਦਿੰਦੇ ਹਨ

ਵਿਕਲਪ ਅਤੇ ਪ੍ਰਤੀਕ

ਵਿਕਲਪ ਅਤੇ ਪ੍ਰਤੀਕ ਇਕੱਲੇ ਫਿਲਟਰ ਨੂੰ ਅਤਿਰਿਕਤ ਫਿਲਟਰ ਵਿਕਲਪਾਂ ਨੂੰ ਜੋੜਨ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ。

ਵੱਖ-ਵੱਖ ਫਿਲਟਰਾਂ ਦੇ ਵਿਕਲਪ ਅਤੇ ਪ੍ਰਤੀਕ ਹਨ。

ਇਸ ਉਦਾਹਰਣ ਵਿੱਚ ਅਸੀਂ filter_var() ਅਤੇ \"min_range\" ਅਤੇ \"max_range\" ਵਿਕਲਪਾਂ ਦੀ ਮਦਦ ਨਾਲ ਇੱਕ ਪੂਰਣ ਸੰਖਿਆ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕੀਤਾ ਹੈ:

<?php
$var=300;

"options"=>array
 (
 \"min_range\
 \"max_range\
 )
);
if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))
 {
 echo(\"Integer is not valid\");
 }
else
 {
 echo(\"Integer is valid\");
 }
?>

مانند کد بالا، گزینه‌ها باید در یک آرایه به نام "options" قرار گیرند. اگر از نشانگر استفاده می‌کنید، نیازی به قرار دادن در آرایه نیست.}

چون عدد "300" است، آن در محدوده مشخص شده نیست، خروجی کد بالا "Integer is not valid" خواهد بود.

برای لیست کامل توابع و فیلترها، لطفاً به CodeW3C.com مراجعه کنید که توسط دستورالعمل فیلتر PHPشما می‌توانید هر یک از گزینه‌های قابل استفاده و تابلوهای نشانگر فیلتر را ببینید.

بررسی ورودی

بگذارید سعی کنیم ورودی‌های ارسالی از فرم را بررسی کنیم.

اولین کاری که باید انجام دهیم این است که بررسی کنیم که آیا داده‌های ورودی مورد نظر ما وجود دارد یا خیر.

سپس ما از تابع filter_input() برای فیلتر کردن داده‌های ورودی استفاده می‌کنیم.

در مثال زیر، ورودی متغیر "email" به صفحه PHP ارسال شده است:

<?php
if(!filter_has_var(INPUT_GET, "email"))
 {
 echo("نوع ورودی وجود ندارد");
 }
else
 {
 if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL))
  {
  echo "ایمیل معتبر نیست";
  }
 else
  {
  echo "ایمیل معتبر است";
  }
 }
?>

مثال توجیہ:

در مثال بالا یک ورودی متغیر (email) از طریق روش "GET" ارسال شده است:

  1. بررسی کنید که آیا ورودی متغیر "email" نوع "GET" وجود دارد
  2. اگر ورودی متغیر وجود داشته باشد، بررسی کنید که آیا آن یک ایمیل معتبر است

پاکسازی ورودی

بگذارید سعی کنیم URL‌های ارسالی از فرم را پاکسازی کنیم.

ابتدا باید بررسی کنیم که آیا داده‌های ورودی مورد نظر ما وجود دارد یا خیر.

سپس، ما از تابع filter_input() برای پاکسازی داده‌های ورودی استفاده می‌کنیم.

در مثال زیر، ورودی متغیر "url" به صفحه PHP ارسال شده است:

<?php
if(!filter_has_var(INPUT_POST, "url"))
 {
 echo("نوع ورودی وجود ندارد");
 }
else
 {
 $url = filter_input(INPUT_POST, "url", FILTER_SANITIZE_URL);
 }
?>

مثال توجیہ:

در مثال بالا یک ورودی متغیر (url) از طریق روش "POST" ارسال شده است:

  1. بررسی کنید که آیا ورودی متغیر "url" نوع "POST" وجود دارد
  2. اگر این ورودی متغیر وجود داشته باشد، آن را پاکسازی کنید (کاراکترهای غیرقانونی را حذف کنید) و آن را در متغیر $url ذخیره کنید

اگر ورودی متغیر مانند این باشد: "http://www.W3非法ol.com.c字符n/"، پس متغیر $url پاکسازی شده باید این باشد:

http://www.codew3c.com/

过滤多个输入

表单通常由多个输入字组成。为了避免对 filter_var 或 filter_input 重复调用,我们可以使用 filter_var_array 或 the filter_input_array 函数。

在本例中,我们使用 filter_input_array() 函数来过滤三个 GET 变量。接收到的 GET 变量是一个名字、一个年龄以及一个邮件地址:

<?php
$filters = array
 (
 "name" => array
  (
  "filter"=>FILTER_SANITIZE_STRING
  ),
 "age" => array
  (
  "filter"=>FILTER_VALIDATE_INT,
  "options"=>array
   (
   "min_range"=>1,
   "max_range"=>120
   )
  ),
 "email"=> FILTER_VALIDATE_EMAIL,
 );
$result = filter_input_array(INPUT_GET, $filters);
if (!$result["age"])
 {
 echo("Age must be a number between 1 and 120.
"); } elseif(!$result["email"]) { echo("E-Mail is not valid.
"); } else { echo("User input is valid"); } ?>

مثال توجیہ:

上面的例子有三个通过 "GET" 方法传送的输入变量 (name, age and email)

  1. 设置一个数组,其中包含了输入变量的名称,以及用于指定的输入变量的过滤器
  2. 调用 filter_input_array 函数,参数包括 GET 输入变量及刚才设置的数组
  3. 检测 $result 变量中的 "age" 和 "email" 变量是否有非法的输入。(如果存在非法输入,)

filter_input_array() 函数的第二个参数可以是数组或单一过滤器的 ID。

اگر پارامتر ایک تنھا فیلٹر کا آئی ڈی ہے تو اس فیلٹر کو کسی بھی ورودی آرایے میں موجود سارے ورودی فیلٹر کرنے کی اجازت ہوگی。

اگر پارامتر یک آرایه ہے تو اس آرایے کو درکارہ قوانین درج ذیل پر عمل درآورنا چاہیے:

  • باید یک آرایه مرتبط باشد که شامل ورودی متغیرها (مانند "age" ورودی متغیر) باشد
  • این آرایه کی ارزش‌ها باید فیلتر کی شناسائی کے شمارا (مانند شناسائی کا شمارا "age" ورودی)

فیلتر کال بک کا استعمال

با استفاده از فیلتر FILTER_CALLBACK، می‌توان فنکشن سفارشی را به عنوان یک فیلتر استفاده کرد. اینطور، ما کنترل کامل داده‌های فیلتر را داریم.

شما می‌توانید فنکشن سفارشی خود را ایجاد کنید یا از فنکشن‌های موجود در PHP استفاده کنید.

روش استفاده از فیلتر فنکشن، مانند روش تعیین گزینه‌ها است.

در مثال زیر، ما از یک فنکشن سفارشی استفاده کرده‌ایم که تمام "_" را به خالی جگہ تبدیل می‌کند:

<?php
فنکشن convertSpace($string)
{
return str_replace("_", " ", $string);
}
$string = "Peter_is_a_great_guy!";
echo filter_var($string, FILTER_CALLBACK, array("options"=>"convertSpace"));
?>

بالائی کوڈ کا نتیجہ اس طرح ہوتا ہے:

پیٹر ایک عظیم شخص ہے!

مثال توجیہ:

بالا مثال میں، سب کا "_" خالی جگہ کی جگہ پر لایا جاتا ہے:

  1. ایک فنکشن بنائیں جس میں "_" کو خالی جگہ کی جگہ پر لایا جائے
  2. filter_var() فنکشن کو بل کریں، جس کا پارامتر FILTER_CALLBACK فیلتر اور ہمارے فنکشنوں کا شامل ہونے والا آرایه ہے