পিএইচপি ফিল্টার
এই অধ্যায়ে আপনি পিএইচপি ফিল্টার এক্সটেনশন এর মাধ্যমে ডেটা ফিল্টার এবং এর মধ্য থেকে আগাছা পরিষ্কার(sanitizing) করা শিখবেন। এটি কিছু কিছু ক্ষেত্রে খুবই সহায়ক, বিশেষকরে ডেটার উৎস যখন আমাদের কাছে অজানা থাকে। উদাহরণস্বরূপঃ এই সকল ডেটা এইচটিএমএল ফরম এর মাধ্যমে আসতে পারে।
পিএইচপি ফিল্টার এর প্রকারভেদ
পিএইচপিতে দুই ধরণের ফিল্টারিং ব্যবহৃত হয়। যেমন-
- Validating data - ডেটাসমূহের গঠন যথাযথ উপায়ে আছে কিনা চেক করে।
- Sanitizing data - ডেটাসমূহের মধ্য থেকে যেকোন অপ্রত্যাশিত ক্যারেক্টার সরিয়ে ফেলে।
পিএইচপি ফিল্টার এক্সটেনশন
পিএইচপি ফিল্টারের মাধ্যমে বাহ্যিক ইনপুটগুলোকে ভ্যালিডেট এবং স্যানিটাইজ(sanitize) করা হয়।
পিএইচপি ফিল্টার এক্সটেনশনের মধ্যে ইউজার ইনপুট চেক করার জন্য অনেকগুলো ফাংশন রয়েছে এবং ডেটা ভ্যালিডেশন সহজে এবং দ্রুত করার জন্য এটি ডিজাইন করা হয়েছে।
পিএইচপি ফিল্টার এক্সটেনশনের মাধ্যমে আপনি কি কি সুবিধা পেতে পারেন তা জানার জন্য filter_list() ফাংশনটি ব্যবহার করতে পারেনঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি ফিল্টার উদাহরণ</title>
</head>
<body>
<table>
<tr>
<td>ফিল্টার এর নাম</td>
<td>ফিল্টার আইডি</td>
</tr>
<?php
foreach (filter_list() as $id =>$filter) {
echo '<tr><td>' . $filter . '</td><td>' . filter_id($filter) . '</td></tr>';
}
?>
</table>
</body>
</html>
ফিল্টার নাম
ফিল্টার আইডি
int 257 boolean 258 float 259 validate_regexp 272 validate_domain 277 validate_url 273 validate_email 274 validate_ip 275 validate_mac 276 string 513 stripped 513 encoded 514 special_chars 515 full_special_chars 522 unsafe_raw 516 email 517 url 518 number_int 519 number_float 520 magic_quotes 521 add_slashes 523 callback 1024
কেন ফিল্টার ব্যবহার করবেন?
অধিকাংশ ওয়েব এপ্লিকেশনেই বাহ্যিক সোর্স থেকে ইনপুট গ্রহন করতে হয়। নিম্নোক্ত উৎস হতে বাহ্যিক ইনপুট/ডেটা আসতে পারেঃ
- এইচটিএমএল ফরম থেকে ইউজার ইনপুট
- কুকি
- সার্ভার ভ্যারিয়েবল
- ডেটাবেস কুয়েরি থেকে প্রাপ্ত ফলাফল
- ওয়েব সার্ভিস ডেটা
কেন আপনি বাহ্যিক উৎস হতে প্রাপ্ত ডেটা সর্বদাই ভ্যালিডেট করবেন?
ইনভ্যালিড ডেটা সাবমিট আপনার ওয়েব এপ্লিকেশনে সিকিউরিটি জনিত সমস্যা সৃষ্টি করতে পারে। এমনকি আপনার ওয়েবপেজকে ধ্বংসও করে দিতে পারে!
পিএইচপি ফিল্টার ব্যবহারের মাধ্যমে আপনি আপনার এপ্লিকেশনে সঠিক ইনপুট নিশ্চিত করতে পারেন!
পিএইচপি filter_var() ফাংশন
ডেটা ভ্যালিডেট এবং স্যানিটাইজ একসাথে সম্পন্ন করার জন্য filter_var() ফাংশন ব্যবহার করা হয়।
filter_var() ফাংশনটি একটি নির্দিষ্ট ফিল্টারের মাধ্যমে একক ভ্যারিয়েবলকে ফিল্টার করে।
filter_var এর সিনট্যাক্স
filter_var (variable, filter, options)
প্যারামিটার এর ব্যাখ্যা
- variable - আবশ্যক। যে ভ্যালুটি আপনি ফিল্টার/চেক করতে চান।
- filter - ঐচ্ছিক। ফিল্টার এর যে আইডি/টাইপ প্রয়োগ করবেন।
- options - ঐচ্ছিক। অপশন এর এসোসিয়েটিভ অ্যারে।
Integer ভ্যালিডেশন
নিম্নের উদাহরণে প্রথমে filter_var() ফাংশনের মাধ্যমে $integer ভ্যারিয়েবলটি integer কিনা চেক করবে। যদি $integer ভ্যারিয়েবলটি integer হয় তাহলে আউটপুট হবেঃ " ভ্যালিড ইন্টিজার"। আর যদি $integer ভ্যারিয়েবলটি integer না হয়, তবে আউটপুট হবেঃ "ইন্টিজার ভ্যালিড নয়"।
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি ফিল্টার উদাহরণ</title>
</head>
<body>
<?php
$integer = 999;
if (filter_var($integer, FILTER_VALIDATE_INT) !== false) {
echo(" ভ্যালিড ইন্টিজার ");
} else {
echo(" ইন্টিজার ভ্যালিড নয়");
}
?>
</body>
</html>
ভ্যালিড ইন্টিজার
filter_var() এবং 0 নিয়ে সমস্যার সমাধান
উপরের উদাহরণে যদি $integer ভ্যারিয়েবলে 0 সেট করা হয় তাহলে ফাংশনটি "ইন্টিজার ভ্যালিড নয়" রিটার্ন করবে। এই সমস্যা সমাধান করার জন্য নিচের উদাহরণটি অনুসরণ করুন।
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি ফিল্টার উদাহরণ</title>
</head>
<body>
<?php
$integer = 0;
if (filter_var($integer, FILTER_VALIDATE_INT) === 0 || filter_var($integer, FILTER_VALIDATE_INT) !== false) {
echo("ভ্যালিড ইন্টিজার");
} else {
echo("ইন্টিজার ভ্যালিড নয়");
?>
</body>
</html>
ভ্যালিড ইন্টিজার
স্ট্রিং স্যানিটাইজ
নিচের উদাহরণে filter_var() ফাংশন ব্যবহার করে একটি স্ট্রিং থেকে সকল এইচটিএমএল ট্যাগ সরিয়ে ফেলা হয়েছেঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি ফিল্টার উদাহরণ</title>
</head>
<body>
<?php
$string = "<h1>স্যাট একাডেমীতে আপনাকে স্বাগতম।</h1>";
echo filter_var($string, FILTER_SANITIZE_STRING);
?>
</body>
</html>
স্যাট একাডেমীতে আপনাকে স্বাগতম।
IP এড্রেস ভ্যালিডেশন
নিচের উদাহরণে filter_var() ফাংশন ব্যবহার করে IP এড্রেস ভ্যালিড কিনা চেক করা হয়েছেঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি ফিল্টার উদাহরণ</title>
</head>
<body>
<?php
$ip = "192.168.10.10";
if (filter_var($ip, FILTER_VALIDATE_IP) !== false) {
echo("$ip একটি ভ্যালিড IP এড্রেস");
} else {
echo("$ip ভ্যালিড IP এড্রেস নয়");
}
?>
</body>
</html>
192.168.10.10 একটি ভ্যালিড IP এড্রেস
ইমেইল এড্রেস ভ্যালিডেট এবং স্যানিটাইজ করা
নিম্নের উদাহরণে filter_var() ফাংশন এর মাধ্যমে ইমেইল এড্রেস ভ্যালিড কিনা চেক করা হয়েছেঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি ফিল্টার উদাহরণ</title>
</head>
<body>
<?php
$email = "azizur.rahman@example.com";
// ইমেইল থেকে সকল অপ্রত্যাশিত ক্যারেক্টার দুরা করা
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
// ভ্যালিডেট ই-মেইল
if (filter_var($email, FILTER_VALIDATE_EMAIL) !== false) {
echo("$email একটি ভ্যালিড ইমেইল এড্রেস।");
} else {
echo("$email ভ্যালিড ইমেইল এড্রেস নয়।");
}
?>
</body>
</html>
azizur.rahman@example.com একটি ভ্যালিড ইমেইল এড্রেস।
URL স্যানিটাইজ এবং ভ্যালিডেট করা
নিম্নের উদাহরণে filter_var() ফাংশনটি URL থেকে অপ্রত্যাশিত ক্যারক্টারগুলো সরিয়ে ফেলে এবং $url টি ভ্যালিড কিনা চেক করেঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি ফিল্টার উদাহরণ</title>
</head>
<body>
<?php
$url = "http://www.sattacademy.com";
// URL থেকে সকল অপ্রত্যাশিত ক্যারেক্টার সরিয়ে ফেলে
$url = filter_var($url, FILTER_SANITIZE_URL);
// ভ্যালিড url কিনা চেক করে
if (filter_var($url, FILTER_VALIDATE_URL) !== false) {
echo("$url একটি ভ্যালিড URL");
} else {
echo("$url ভ্যালিড URL নয়");
}
?>
</body>
</html>
http://www.sattacademy.com একটি ভ্যালিড URL