Zend Framework (এখন Laminas) এ ইনপুট ফিল্টার এবং ভ্যালিডেটরস ব্যবহার করে ইউজার থেকে পাওয়া ইনপুট ডেটাকে সঠিকভাবে ফিল্টার এবং যাচাই করা হয়। ফিল্টারিং এবং ভ্যালিডেশন যেকোনো ওয়েব অ্যাপ্লিকেশনের জন্য অত্যন্ত গুরুত্বপূর্ণ, কারণ এগুলি ব্যবহারকারীর ইনপুটের নিরাপত্তা এবং অখণ্ডতা নিশ্চিত করতে সাহায্য করে।
ইনপুট ফিল্টার মূলত ইনপুট ডেটাকে পরিষ্কার বা পরিবর্তন করতে ব্যবহৃত হয়, যেমন অতিরিক্ত স্পেস বা স্প্যাম কন্টেন্ট সরানো। অন্যদিকে, ভ্যালিডেটর ইনপুট ডেটার সঠিকতা যাচাই করে, যেমন ইমেইল ঠিকানা বা ফোন নাম্বারের সঠিক ফরম্যাট।
ইনপুট ফিল্টার কী?
ইনপুট ফিল্টার এমন একটি প্রক্রিয়া যা ইউজারের ইনপুট ডেটা পরিষ্কার বা পরিবর্তন করার জন্য ব্যবহৃত হয়। এটি ডেটাকে একটি নির্দিষ্ট ফরম্যাটে আনার জন্য ব্যবহৃত হয়, যেমন স্ট্রিংয়ের এডিটিং, স্পেসগুলো ট্রিম করা, বা HTML ট্যাগ ফিল্টার করা।
Zend Framework বা Laminas এর ইনপুট ফিল্টারগুলো বিভিন্ন ধরনের ডেটার জন্য তৈরি করা হয়, যেমন স্ট্রিং, নম্বর, ডেট টাইপ ইত্যাদি।
ইনপুট ফিল্টারের উদাহরণ
Zend Framework এ Zend\InputFilter\InputFilter এবং Zend\Filter কম্পোনেন্ট ব্যবহার করে ইনপুট ফিল্টার তৈরি করা হয়।
উদাহরণ ১: ট্রিম ফিল্টার
যতটুকু প্রয়োজন, ইনপুটের অপ্রয়োজনীয় স্পেস সরিয়ে দেওয়ার জন্য StringTrim ফিল্টার ব্যবহার করা হয়।
use Zend\Filter\StringTrim;
use Zend\InputFilter\InputFilter;
use Zend\InputFilter\Input;
$inputFilter = new InputFilter();
// 'username' ইনপুটের জন্য ফিল্টার তৈরি
$username = new Input('username');
$username->getFilterChain()->attach(new StringTrim());
$inputFilter->add($username);
// ইনপুট ডেটা ফিল্টার করা
$inputFilter->setData(['username' => ' user_name ']);
$inputFilter->isValid(); // true হবে এবং 'user_name' ট্রিম করা হবে
এখানে, StringTrim ফিল্টারটি ইনপুট স্ট্রিংয়ের প্রথম এবং শেষের অপ্রয়োজনীয় স্পেস সরিয়ে দিবে।
ভ্যালিডেটর কী?
ভ্যালিডেটর হল এমন একটি প্রক্রিয়া যা ইনপুট ডেটার সঠিকতা যাচাই করে। উদাহরণস্বরূপ, একটি ইমেইল ফিল্ডে সঠিক ইমেইল ফরম্যাটের জন্য ভ্যালিডেশন করা হয়।
Zend Framework বা Laminas এ Zend\Validator কম্পোনেন্ট ব্যবহার করে বিভিন্ন ধরনের ভ্যালিডেটর তৈরি করা হয়, যেমন ইমেইল, ফোন নাম্বার, স্ট্রিং লেন্থ, রেঞ্জ ভ্যালিডেশন ইত্যাদি।
ভ্যালিডেটরের উদাহরণ
উদাহরণ ২: ইমেইল ভ্যালিডেটর
ইমেইল ভ্যালিডেশন করার জন্য EmailAddress ভ্যালিডেটর ব্যবহার করা হয়।
use Zend\Validator\EmailAddress;
$emailValidator = new EmailAddress();
// ইমেইল ঠিকানা যাচাই
$isValid = $emailValidator->isValid('test@example.com');
var_dump($isValid); // true
$isValid = $emailValidator->isValid('invalid-email');
var_dump($isValid); // false
এখানে, EmailAddress ভ্যালিডেটরটি ইমেইল অ্যাড্রেসের সঠিক ফরম্যাট চেক করবে এবং বৈধ হলে true রিটার্ন করবে।
উদাহরণ ৩: স্ট্রিং লেন্থ ভ্যালিডেটর
স্ট্রিংয়ের দৈর্ঘ্য ভ্যালিডেট করার জন্য StringLength ভ্যালিডেটর ব্যবহার করা হয়।
use Zend\Validator\StringLength;
$stringLengthValidator = new StringLength(['min' => 5, 'max' => 10]);
// স্ট্রিং লেন্থ যাচাই
$isValid = $stringLengthValidator->isValid('hello');
var_dump($isValid); // true
$isValid = $stringLengthValidator->isValid('hi');
var_dump($isValid); // false
এখানে, StringLength ভ্যালিডেটরটি স্ট্রিংয়ের দৈর্ঘ্য চেক করবে এবং যদি এটি 5 থেকে 10 ক্যারেক্টারের মধ্যে না হয়, তবে false রিটার্ন করবে।
ইনপুট ফিল্টার এবং ভ্যালিডেটর একসাথে ব্যবহার
Zend Framework বা Laminas এ ফিল্টার এবং ভ্যালিডেটরকে একসাথে ব্যবহার করা যায়, যাতে ইনপুট ডেটা ফিল্টার করা হয় এবং তারপরে তা যাচাই করা হয়।
উদাহরণ ৪: ইনপুট ফিল্টার এবং ভ্যালিডেটর একসাথে
use Zend\Filter\StringTrim;
use Zend\Validator\EmailAddress;
use Zend\InputFilter\Input;
use Zend\InputFilter\InputFilter;
$inputFilter = new InputFilter();
// 'email' ইনপুটের জন্য ফিল্টার এবং ভ্যালিডেটর যোগ করা হচ্ছে
$email = new Input('email');
$email->getFilterChain()->attach(new StringTrim()); // ফিল্টার
$email->getValidatorChain()->attach(new EmailAddress()); // ভ্যালিডেটর
$inputFilter->add($email);
// ইনপুট ডেটা ফিল্টার এবং ভ্যালিডেট করা
$inputFilter->setData(['email' => ' test@example.com ']);
if ($inputFilter->isValid()) {
echo "Valid email: " . $inputFilter->getValue('email');
} else {
echo "Invalid email";
}
এখানে, প্রথমে ইনপুট ফিল্টারটি ইনপুট স্ট্রিং থেকে অতিরিক্ত স্পেসগুলো সরিয়ে দেয়, এবং পরে ইমেইল ঠিকানার বৈধতা যাচাই করা হয়। যদি ইনপুট ডেটা সঠিক হয়, তবে এটি রিটার্ন করবে "Valid email"।
কাস্টম ফিল্টার এবং ভ্যালিডেটর
Zend Framework বা Laminas আপনাকে কাস্টম ফিল্টার এবং কাস্টম ভ্যালিডেটর তৈরি করার সুযোগ দেয়, যা আপনার নির্দিষ্ট প্রজেক্টের প্রয়োজন অনুযায়ী তৈরি করা যেতে পারে।
উদাহরণ ৫: কাস্টম ফিল্টার
use Zend\Filter\Interface as FilterInterface;
class CustomFilter implements FilterInterface
{
public function filter($value)
{
// কিছু কাস্টম ফিল্টার লজিক
return strtoupper($value); // ইনপুটটি বড় অক্ষরে পরিণত করা হচ্ছে
}
}
উদাহরণ ৬: কাস্টম ভ্যালিডেটর
use Zend\Validator\AbstractValidator;
class CustomValidator extends AbstractValidator
{
const INVALID = 'invalid';
protected $messageTemplates = [
self::INVALID => 'The input is not valid!',
];
public function isValid($value)
{
// কিছু কাস্টম ভ্যালিডেশন লজিক
if (strlen($value) < 5) {
$this->error(self::INVALID);
return false;
}
return true;
}
}
এখানে, একটি কাস্টম ফিল্টার তৈরি করা হয়েছে যা ইনপুট ডেটাকে বড় অক্ষরে পরিণত করবে, এবং একটি কাস্টম ভ্যালিডেটর তৈরি করা হয়েছে যা ইনপুটের দৈর্ঘ্য যাচাই করবে।
সারাংশ
Zend Framework বা Laminas এ ইনপুট ফিল্টার এবং ভ্যালিডেটরস ইউজার ইনপুট ডেটা নিরাপদ এবং সঠিকভাবে হ্যান্ডল করতে ব্যবহৃত হয়। ইনপুট ফিল্টার ডেটাকে পরিষ্কার বা রূপান্তর করতে সাহায্য করে, যেমন স্পেস ট্রিম করা বা HTML ট্যাগ ফিল্টার করা, এবং ভ্যালিডেটর ইনপুটের সঠিকতা যাচাই করে, যেমন ইমেইল বা ফোন নাম্বার ফরম্যাট। কাস্টম ফিল্টার এবং ভ্যালিডেটর তৈরির মাধ্যমে আপনি আপনার অ্যাপ্লিকেশনের জন্য নির্দিষ্ট ডেটা যাচাইয়ের প্রক্রিয়া তৈরি করতে পারেন।
Read more