পিএইচপি ফিল্টারস (PHP Filters)

অনিরাপদ উৎস থেকে ডাটাকে বৈধ করার জন্য আমরা পিএইচপি ফিল্টার ব্যবহার করে থাকি। ওয়েব অ্যাপ্লিকেশান এর জন্য পিএইচপি ফিল্টার একটি গুরুত্ত পূর্ণ বিষয়। পিএইচপি ফিল্টার extension বানানো হয়েছে ডাটাকে খুব সহজে এবং তারাতারি ফিল্টার করার জন্য।

 

কেন ফিল্টার ব্যবহার করা হয়

প্রায় সব ওয়েব অ্যাপ্লিকেশান বাইরের ইনপুট এর উপর নির্ভরশীল। যা একজন ইউজার বা ওয়েব অ্যাপ্লিকেশান এর মাধ্যমে আসতে পারে। ফিল্টার ব্যবহার করার মাধ্যমে আমরা সেই ডাটাগুলোকে বৈধ করতে পারি।

বাইরের ডাটা গুলো কি রকম হতে পারে

ফর্ম ব্যবহার করে কোন ডাটা নেওয়ার জন্য, কুকিস, ওয়েব সার্ভিসেস ডাটা, সারভার variables, ডাটাবেস query করার মাধ্যমে।

ফাংশন এবং ফিল্টার

filter_var() একটি নির্দিষ্ট variable কে ফিল্টার করার জন্য
filter_var_array() অনেকগুলো variable ফিল্টার করার জন্য
filter_input একটা ইনপুট variable কে ফিল্টার করার জন্য
filter_input_array অনেকগুলো ইনপুট variable কে ফিল্টার করার জন্য

আমরা filter_var() ফাংশন ব্যবহার করে একটি integer কে বৈধ করব।


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

FILTER_VALIDATE_INT ব্যবহার করা হয়েছে variable কে ফিল্টার করার জন্য যদি integer টি বৈধ হয় তাহলে ফলাফল আসবে "Integer is valid"
যদি আমরা integer এর পরিবর্তে 123abc ব্যবহার করি তাহলে output আসবে Integer is not valid।

Validating এবং Sanitizing

বৈধ ফিল্টার

১। ইউজার এর ইনপুট গুলোকে বৈধ করার জন্য
২। নির্দিষ্ট গঠন অনুজায়ে ডাটা তৈরি করার জন্য (যেমন ইমেইল অথবা URL এর ক্ষেত্রে)

Sanitizing ফিল্টার

১। কোন নির্দিষ্ট characters কে অনুমোদন দেওয়ার জন্য
২। কোন গঠন বৈশিষ্ট্য মেনে চলে না
৩। সবসময় স্ট্রিং রিটার্ন করে

filter_var() ফাংশন ব্যবহার করে আমরা integer কে বৈধ করব।


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

এই কোড এ options ব্যবহার করতে হবে একটি array এর ভিতর options নাম দিয়ে যদি ফ্লাগ ব্যবহার করা হত তাহলে array লাগত না। আমাদের integer ছিল 300 যা রেঞ্জ এর মধ্যে মিলে না সুতরাং এর ফলাফল আসবে "Integer is not valid"।

 

ইনপুট ডাটা বৈধ করা

filter_input() ফাংশন ব্যবহার করার মাধ্যমে আমার ডাটা বৈধ করব প্রথমে আমরা চেক করব ডাটা আসলে ইনপুট করা হয়েছে কিনা


< ?php
 if(!filter_has_var(INPUT_GET, "email")) {
 echo("Input type does not exist");
 } else {
 if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) {
 echo "E-Mail is not valid";
 } else {
 echo "E-Mail is valid";
 }
 }
 ?>

GET মেথড ব্যবহার করে ইনপুট (ইমেইল) চেক করবে যে তা বৈধ কিনা

Sanitize ইনপুট

ফর্ম কে URL এ পাঠানোর মাধ্যমে আমরা একে বুজবো
প্রথমে আমরা চেক করব ইনপুট ডাটা ফাকা আছে কিনা
তারপর আমরা filter_input() ফাংশন ব্যবহার করে ডাটা কে sanitize করব।


< ?php
 if(!filter_has_var(INPUT_POST, "url")) {
 echo("Input type does not exist");
 } else {
 $url = filter_input(INPUT_POST,
 "url", FILTER_SANITIZE_URL);
 }
 ?>

উপড়ের উধাহরন টি যদি POST মেথড ব্যবহার করা হয়

প্রথমে চেক করবে ইনপুট URL post টাইপ এর কিনা, যদি ইনপুট variable exists করে তাহলে character অনুজায়ে sanitize করবে এবং $url এ variable জমা করবে। যদি ইনপুট variable এর স্ট্রিং http://bangla.salearningschøøool.comএর মতন হয় আমরা sanitize করার পর পাব http://bangla.salearningschool.com

একটি ফর্মে একাধিক ইনপুট থাকতে পারে সে ক্ষেত্রে আমরা filter_var or filter_input এর পরিবর্তে filter_var_array or the filter_input_array ব্যবহার করব। এই উধাহরন এ আমরা filter_input_array() ফাংশন ব্যবহার করব তিনটা GET variables এর ক্ষেত্রে এই তিনটি হল নাম, বছর , ইমেইল।


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

নেম ইনপুট ফিল্ড একটি array এর মধ্যে রাখা হয়েছে এবং ফিল্টার সেট করা হয়েছে । এরপর যে array গুলো সেট করা হয়েছে তাদেরকে filter_input_array() ফাংশন এর মাধ্যমে গেট মেথড ব্যবহার করে ডাকা হবে। এরপর ইনপুটশ গুলো বৈধ কিনা তা চেক করবে।

 

Filter Callback

filter_callback ফিল্টার ব্যবহার করে ইউজার defined করা সম্ভব। সেই ক্ষেত্রে আমাদের ডাটা filtering এ পূর্ণ নিয়ন্ত্রণ থাকবে। নিচের উধাহরণটিতে আমরা user created ফাংশন ব্যবহার করেছি সকল "_" থেকে whitespace এ পরিবর্তন করার জন্য।


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

 

এর ফলাফল আসবে

Peter is a great guy!

 

উপড়ের উধারণটিতে সকল "_" পরিবর্তন করা হয়েছে whitespace এ এবং filter_var() ফাংশন কে কল করা হয়েছে FILTER_CALLBACK দ্বারা

 

Permanent link to this article: http://bangla.sitestree.com/%e0%a6%aa%e0%a6%bf-%e0%a6%8f%e0%a6%87%e0%a6%9a-%e0%a6%aa%e0%a6%bf-%e0%a6%ab%e0%a6%bf%e0%a6%b2%e0%a7%8d%e0%a6%9f%e0%a6%be%e0%a6%b0%e0%a6%b8-php-filters/