Comment

PHP প্রসেসিং ফর্ম (Processing Forms)

PHP ফিল্টার ইনপুট (Filter input )

Estimated reading: 2 minutes 10 views Contributors

সারাংশ: এই টিউটোরিয়ালে, আপনি একটি PHP ফিল্টার() ফাংশন সংজ্ঞায়িত করতে শিখবেন যা ডেটা স্যানিটাইজ করে এবং যাচাই করে।

পিএইচপি ফিল্টার_ইনপুট() ফাংশনের ভূমিকা

PHP-এর filter_input() ফাংশনটি আপনাকে এর নাম অনুসারে একটি বহিরাগত ভ্যারিয়েবল পেতে এবং এক বা একাধিক বিল্ট-ইন ফিল্টার ব্যবহার করে এটিকে ফিল্টার করতে দেয়।

filter_input() ফাংশনের সিনট্যাক্স নিম্নরূপ:

PHP

filter_input(int $type, string $var_name, int $filter = FILTER_DEFAULT, array|int $options = 0): mixed

filter_input() ফাংশনের প্যারামিটারগুলি:

  • $type: INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, এবং INPUT_ENV এর মধ্যে একটি। এটি নির্দিষ্ট করে কোন উৎস থেকে ভ্যারিয়েবলটি পাওয়া হবে।
  • $var_name: ফিল্টার করার জন্য ভ্যারিয়েবলের নাম।
  • $filter: প্রয়োগ করার জন্য ফিল্টার আইডি। বৈধ ফিল্টারগুলির তালিকা এখানে পাওয়া যাবে। আপনি যদি $filter আর্গুমেন্ট বাদ দেন, তবে filter_input() ফাংশনটি FILTER_DEFAULT ফিল্টার আইডি ব্যবহার করবে, যা কিছুই ফিল্টার করে না।
  • $options: একটি অ্যাসোসিয়েটিভ অ্যারে যা এক বা একাধিক অপশন নিয়ে গঠিত। যখন একটি ফিল্টার অপশন গ্রহণ করে, তখন আপনি এক বা একাধিক ফ্ল্যাগ ব্যবহার করতে পারেন। আপনি যদি একাধিক ফ্ল্যাগ ব্যবহার করতে চান, তবে আপনাকে সেগুলিকে (|) চিহ্ন দ্বারা আলাদা করতে হবে, যেমন FILTER_SANITIZE_ENCODED | FILTER_SANITIZE_SPECIAL_CHARS।

filter_input() ফাংশন নিম্নলিখিত নিয়ম অনুসারে null, false, বা ফিল্টার করা মান ফেরত দেয়:

  • যদি $var_name সেট না করা থাকে, তাহলে filter_input() ফাংশন null ফেরত দেয়।
  • যদি ফিল্টার ব্যর্থ হয়, তাহলে filter_input() ফাংশন false ফেরত দেয়।
  • অন্যথায়, এটি অনুরোধকৃত ভ্যারিয়েবলের ফিল্টার করা মান ফেরত দেয়।

PHP filter_input() ফাংশনের উদাহরণ:

নিচের উদাহরণটি একটি সার্চ ফর্মের জন্য ডেটা স্যানিটাইজ করতে filter_input() ফাংশন ব্যবহার করে:

PHP

<?php

$term_html = filter_input(INPUT_GET, 'term', FILTER_SANITIZE_SPECIAL_CHARS);
$term_url = filter_input(INPUT_GET, 'term', FILTER_SANITIZE_ENCODED);

?>
<form action="search.php" method="get">
    <label for="term"> Search </label>
    <input type="search" name="term" id="term" value="<?php echo $term_html ?>">
    <input type="submit" value="Search">
</form>

<?php

if (null !== $term_html) {
    echo "The search result for <mark> $term_html </mark>.";
}

ফর্মটি কীভাবে কাজ করে:

  • ফর্মটিতে একটি সার্চ ইনপুট এবং একটি সাবমিট বাটন রয়েছে।
  • যখন আপনি একটি সার্চ টার্ম লিখবেন, যেমন “how to use the filter_input function” এবং সাবমিট বাটনে ক্লিক করবেন, তখন ফর্মটি GET মেথড ব্যবহার করে URL-এ টার্ম কুয়েরি স্ট্রিং যুক্ত করবে, যেমন:
http://localhost/search.php?term=how+to+use+the+filter_input+function
  • এই সার্চ ফর্মটি নিজেই (search.php) সাবমিট করে।
  • filter_input() ফাংশন FILTER_SANITIZE_SPECIAL_CHARS এবং FILTER_SANITIZE_ENCODED ফিল্টার ব্যবহার করে সার্চ টার্মটিকে স্যানিটাইজ করে।
  • FILTER_SANITIZE_SPECIAL_CHARS ফিল্টার সার্চ ফিল্ডে দেখানোর জন্য একটি মান ফেরত দেয় এবং FILTER_SANITIZE_ENCODED ফিল্টার পৃষ্ঠায় প্রদর্শনের জন্য একটি মান ফেরত দেয়।

filter_input বনাম filter_var

যদি কোনও ভ্যারিয়েবল না থাকে, filter_input() ফাংশন null ফেরত দেয়, যখন filter_var() ফাংশন একটি ফাঁকা স্ট্রিং ফেরত দেয় এবং একটি অসংজ্ঞায়িত ইনডেক্সের নোটিশ প্রদান করে।

ধরুন আপনার নিম্নলিখিত URL সহ একটি পেজ রয়েছে:

http://localhost/search.php

নিম্নোক্ত filter_input() ফাংশন null ফেরত দেবে এবং INPUT_GET থেকে term ভ্যারিয়েবলটি পাওয়ার সময় কোনও ত্রুটি তৈরি করবে না:

PHP

$term = filter_input(INPUT_GET, 'term', FILTER_SANITIZE_SPECIAL_CHARS);

var_dump($term);

আউটপুট:

NULL

তবে, filter_var() ফাংশন একটি ফাঁকা স্ট্রিং ফেরত দেবে এবং একটি ত্রুটি দেখাবে:

PHP

$term = filter_var($_GET['term'], FILTER_SANITIZE_SPECIAL_CHARS);
var_dump($term);

আউটপুট:

Notice: Undefined index: term in ...\search.php on line 3
string(0) ""
অতএব, আপনি প্রায়শই filter_var() ফাংশনে পাস করার আগে একটি ভ্যারিয়েবল সেট করা আছে কিনা তা পরীক্ষা করার জন্য isset() বা filter_has_var() ফাংশন ব্যবহার করেন:

PHP

if (isset($_GET['term'])) {
    $term = filter_var($_GET['term'], FILTER_SANITIZE_SPECIAL_CHARS);
    var_dump($term);
}
এছাড়াও, filter_input() ফাংশন $_GET, $_POST, ইত্যাদি সুপারগ্লোবাল ভ্যারিয়েবলের বর্তমান মান পায় না। পরিবর্তে, এটি HTTP রিকোয়েস্টে জমা দেওয়া আসল মানগুলি ব্যবহার করে।

উদাহরণস্বরূপ:

PHP

$_GET['term'] = 'PHP'; // INPUT_GET-এ কোনও প্রভাব ফেলবে না
$term = filter_input(INPUT_GET, 'term', FILTER_SANITIZE_SPECIAL_CHARS);

var_dump($term);

আউটপুট:

NULL

এই উদাহরণটি $_GET[‘term’] ভ্যারিয়েবলে একটি মান বরাদ্দ করার চেষ্টা করে। তবে, filter_input() বর্তমান $_GET ভ্যারিয়েবল থেকে টার্মটি পড়ে না। তাই, স্ক্রিপ্টটি NULL প্রদর্শন করে।

অন্যদিকে, filter_var() ফাংশন বর্তমান $_GET ভ্যারিয়েবল থেকে মান পড়ে।

উদাহরণস্বরূপ:

PHP

$_GET['term'] = 'PHP';
$term = filter_var($_GET['term'], FILTER_SANITIZE_SPECIAL_CHARS);

var_dump($term);

আউটপুট:

string(3) "PHP"

সারসংক্ষেপ

বহিরাগত ভ্যারিয়েবল থেকে ডেটা স্যানিটাইজ এবং ভ্যালিডেট করতে PHP-এর filter_input() ফাংশন ব্যবহার করুন।

Leave a Comment

Share this Doc

PHP ফিল্টার ইনপুট (Filter input )

Or copy link

CONTENTS

Subscribe

×
Cancel