PHP Filters

Introduction to PHP Filters

लगभग सभी web applications बाहरी input पर निर्भर होती है। एक web application बाहरी input कई प्रकार से ले सकती है जैसे की

  • User द्वारा input किया गया data (through forms),
  • Web services का data,
  • Cookies का data,
  • Database से query किया गया data आदि।

बाहरी input का source कोई भी हो लेकिन इसकी गुणवत्ता पर विश्वास नहीं किया जा सकता है। इससे पहले की आप इसके base पर processing शुरू करें, इसे validate और sanitize किया जाना आवश्यक है।

किसी भी प्रकार की application input के अनुरूप ही output प्रदान करती है। यदि input accurate नहीं है तो output भी accurate नहीं होगा। इसलिए किसी भी web application में input को filter करने की capability होनी चाहिए।

बाहरी data को validate और sanitize (साफ़) करने के लिए PHP आपको एक mechanism provide करती है जिन्हें PHP filters कहते है। इसके लिए PHP आपको built in methods और predefined filter constants provide करती है।

जब external input को validate किया जाता है तो यह check किया जाता है की input proper form में है या नहीं। उदाहरण के लिए form के किसी field में integer input किया जाना है लेकिन user ने integer value के साथ एक character भी गलती से insert कर दिया।

Validating process में check किया जाएगा की क्या input के रूप में integer ही है? यदि ऐसा है तो data accurate है और इसे sanitize करने की कोई आवश्यकता नहीं है। लेकिन जैसा की इस उदाहरण के case में data accurate नहीं है। इसलिए sanitizing की process शुरू होगी। Sanitizing की process में उस character को remove किया जाएगा और input accurate हो जाएगा।

PHP Filter Functions

PHP द्वारा provide किये जाने वाले कुछ built in functions के बारे में निचे बताया जा रहा है।

filter_has_var()

ये function check करता है की specified input type का variable exist करता है या नहीं। इस function में 2 arguments pass किये जाते है। इसका general syntax निचे दिया जा रहा है।

filter_has_var(input-type, variable-name);

पहला argument निचे दिए गए input types में से एक होता है।

  • INPUT_GET
  • INPUT_POST
  • INPUT_COOKIE
  • INPUT_SERVER
  • INPUT_ENV

दूसरा argument उस variable का नाम होता है जिसे आप check करना चाहते है।

filter_id()

ये function filter की id return करता है। इस function में argument के रूप में filter का नाम pass किया जाता है। इसका general syntax निचे दिया जा रहा है।

filter_id(filter-name);

filter_input()

यह function किसी external variable को filter करता है। इस function में 4 arguments pass किये जाते है। इसका general syntax निचे दिया जा रहा है।

filter_input(input-type, variable-name, filter_constant, options);

इस function में पहला argument input type होता है। Different input types के बारे में आपको पहले बताया गया है। दूसरा argument उस variable का नाम होता है जिसे आप filter करना चाहते है। तीसरा argument filter_constant है जिससे आप filter करना चाहते है। चौथा argument optional होता है ये वे flags होते है जो आप apply करना चाहते है।

filter_input_array()

यह function बहुत से external variables को एक साथ filter करने के लिए use किया जाता है। इस function में आप 3 arguments pass करते है। इसका general syntax निचे दिया जा रहा है।

filter_input_array(input-type,array,add-missing);

पहला argument input type होता है। दूसरा argument वह filters का array होता है जिसे आप array पर apply करना चाहते है। तीसरे argument के रूप true या false pass किया जाता है। जब true pass किया जाता है तो empty fileds की value भी NULL के रूप में result में return हो जाती है। By default इसकी value true ही होती है।

filter_list()

ये filter सभी filter constants की list return करता है। इसमें कोई argument नहीं pass किया जाता है। इसका general syntax निचे दिया जा रहा है।

filter_list();

filter_var_array()

यह function multiple variables को filter करता है। इस function में 2 arguments pass किये जाते है। इसका general syntax निचे दिया जा रहा है।

filter_var_array(variable-array, filters-array);

पहला argument उन variables का array होता है जिन्हें आप filter करना चाहते है। दूसरा argument उन filters का array होता है जिन्हें आप variables पर apply करना चाहते है।

filter_var()

यह function pass किये गए variable को pass किये गए filter name से filter करता है। इस function में 3 arguments pass किये जाते है। इसका general syntax निचे दिया जा रहा है।

filter_var(variable-name,filter-name,flags);

पहला arguments उस variable का नाम होता है जिसे आप filter करना चाहते है। दूसरा argument उस filter का नाम होता है जिसे आप variable पर apply करना चाहते है। तीसरा argument flag हो सकता है जिसे आप result पर apply करना चाहते है।

PHP Filter Constants

PHP आपको 2 प्रकार के predefined filter constants provide करती है।

  1. Validate filter constants - ये filter constants variable की value को appropriate form के लिए validate करते है।
  2. Sanitize filter constants - ये filter constants variable की value में से illegal characters को remove करते है।

PHP द्वारा provide किये गए predefined filter constants के बारे में निचे बताया जा रहा है।

FILTER_VALIDATE_BOOLEAN

यह filter variable की value को boolean के रूप में validate करता है। यदि variable की value 1,true,on या yes हो तो TRUE return किया जाता है। यदि variable की value 0, false, off या no है तो FALSE return किया जाता है।

FILTER_VALIDATE_EMAIL

यह filter email को validate करता है। यदि variable की value किसी email address की form में है तो true return किया जाता है।

FILTER_VALIDATE_FLOAT

यह filter variable की value को float के रूप में identify करता है। यदि variable की value एक float number है तो यह filter true return करेगा।

FILTER_VALIDATE_INT

यह filter variable की value को integer के रूप में identify करता है। यदि variable integer number है तो true return किया जाता है। इस filter के साथ आप निचे दिए गए options use कर सकते है।

  • min_range - इस option के द्वारा आप minimum integer value define करते है।
  • max_range - इस option के द्वारा maximum integer value define की जाती है।
  • FILTER_FLAG_ALLOW_OCTAL - इस option से आप octal number values को allow कर सकते है।
  • FILTER_FLAT_ALLOW_HEX - इस option से आप hexadecimal values को allow कर सकते है।

FILTER_VALIDATE_IP

यह filter variable की value को IP address के रूप में validate करता है। इस filter के साथ आप निचे दिए गए options use कर सकते है।

  • FILTER_FLAG_IPV4 - ये option बताता है की value IPv4 address होनी चाहिए।
  • FILTER_FLAG_IPV6 - ये option बताता है की value IPv6 address होनी चाहिए।
  • FILTER_FLAG_NO_PRIV_RANGE - ये filed बताता है की IP address private range का नहीं होना चाहिए।
  • FILTER_FLAG_NO_RES_RANGE - ये field बताता है की IP address reserved range का नहीं होना चाहिए।

FILTER_VALIDATE_REGEXP

यह filter regular expression को validate करता है। इस filter के साथ आप regexp option use कर सकते है जो regular expression define करने के लिए use किया जाता है।

FILTER_VALIDATE_URL

यह filter किसी variable की value को URL के रूप में validate करता है। यदि variable की value एक URL है तो ये filter true return करता है।

FILTER_SANITIZE_EMAIL

यह filter एक email address में से सभी illegal characters को remove कर देता है।

FILTER_SANITIZE_NUMBER_FLOAT

यह filter एक float number में से सभी illegal characters को remove कर देता है।

FILTER_SANITIZE_NUMBER_INT

यह filter एक integer number में से सभी illegal characters को remove कर देता है।

FILTER_SANITIZE_SPECIAL_CHARS

यह filter special characters को remove कर देता है।

FILTER_SANITIZE_STRING

यह filter एक string में से special characters को remove कर देता है।

FILTER_SANITIZE_URL

यह filter URL में से illegal characters को remove कर देता है।

FILTER_CALLBACK

यह filter value को filter करने के लिए user द्वारा define किये गए function को call करता है।

Example of PHP Filter

निचे PHP filter का एक simple उदाहरण दिया जा रहा है। इस उदाहरण में एक integer number को validate किया जा रहा है। Integer number valid होने पर appropriate message show होगा। यदि integer number valid नहीं है तो उस number को sanitize करके show किया जाएगा।

example.php:

<html>
<head>
<title>PHP Filters Demo</title>
</head>

<body>

<form action="file1.php" method="post">
Enter a Number : <input type="text" name="Number"> <br />
<br />
<input type="submit" value="Submit">

</form>
</body>
</html>

file1.php:

<?php

$num = $_POST['Number'];
$saniRes;

if(filter_var($num,FILTER_VALIDATE_INT) === true)
{
   echo ("This number is a valid integer.");
}
else
{
    echo ("This number is not a valid integer.<br />");
    echo ("Sanitizing this integer...<br />");
    $saniRes = filter_var($num,FILTER_SANITIZE_NUMBER_INT);
    echo ("Orignial Number : $num <br /> ");
    echo ("Sanitized Number : $saniRes");
}

?>

ऊपर दिए गए उदाहरण में user से एक integer number enter करने के लिए कहा जाता है। यदि user invalid integer number enter करता है तो उसे message show किया जाता है की number valid integer number नहीं है और इसके बाद उस number को sanitize करके show किया जाता है।