Comment

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

PHP ফর্ম বৈধতা (Form validation )

Estimated reading: 4 minutes 23 views Contributors

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

PHP ফর্ম যাচাইকরণের ভূমিকা

একটি ফর্ম প্রক্রিয়াকরণ করার সময়, ডেটা একটি বৈধ বিন্যাসে রয়েছে তা নিশ্চিত করতে ব্যবহারকারীর ইনপুটগুলি যাচাই করা গুরুত্বপূর্ণ ৷

দুই ধরনের বৈধতা রয়েছে: ক্লায়েন্ট-সাইড এবং সার্ভার-সাইড:

ক্লায়েন্ট-সাইড বৈধকরণের লক্ষ্য হল বৈধ ব্যবহারকারীদের সার্ভারে জমা দেওয়ার আগে বৈধ বিন্যাসে ডেটা প্রবেশ করতে সহায়তা করা।

যাইহোক, ক্লায়েন্ট-সাইড বৈধতা দূষিত ব্যবহারকারীদের ডেটা জমা দিতে বাধা দেয় না যা অ্যাপ্লিকেশনটিকে সম্ভাব্যভাবে শোষণ করতে পারে।

সার্ভার-সাইড বৈধতা PHP ব্যবহার করে ওয়েব সার্ভারে ডেটা যাচাই করে। PHP-তে ডেটা যাচাই করতে, আপনি filter_var() এবং filter_input() ফাংশন ব্যবহার করতে পারেন।

PHP ফর্ম বৈধতা উদাহরণ

আমরা একটি ইমেল সদস্যতা ফর্ম তৈরি করব যাতে একটি বৈধতা বৈশিষ্ট্য অন্তর্ভুক্ত থাকে। ফর্মটিতে নাম এবং ইমেল ইনপুট উপাদান এবং একটি জমা বোতাম রয়েছে:

আপনি নাম এবং/অথবা ইমেল না লিখলে এবং সাবস্ক্রাইব বোতামে ক্লিক করলে, ফর্মটি ত্রুটির বার্তাগুলি দেখাবে। এছাড়াও, যদি আপনি একটি অবৈধ ইমেল ঠিকানা লিখুন, ফর্মটি একটি ভিন্ন ত্রুটি বার্তা দেখাবে৷

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

ডিরেক্টরি এবং ফাইলগুলি সংগঠিত করুন

প্রথমে, নিম্নরূপ একটি ফাইল এবং ডিরেক্টরি কাঠামো তৈরি করুন:

.
├── css
│   └── style.css
├── inc
│   ├── get.php
│   ├── post.php
│   ├── header.php
│   ├── footer.php
│   └── .htaccess
└── index.php

নিম্নলিখিত সারণী প্রতিটি ফাইলের উদ্দেশ্য বর্ণনা করে:

header.php

নিম্নলিখিত header.php ফাইল দেখায়:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/style.css">
    <title>Subscribe</title>
</head>
<body>
    <main>

header.php ফাইলটি CSS ডিরেক্টরিতে style.css ফাইলের সাথে লিঙ্ক করে।

footer.php

এবং footer.php-এ শুধুমাত্র enclosing ট্যাগ থাকে যা header.php ফাইলের খোলার ট্যাগের সাথে মিলে যায়:

</main>
</body>
</html>

index.php

index.php ফাইলটিতে ফর্মটির প্রধান যুক্তি রয়েছে:

<?php

require __DIR__ . '/inc/header.php';

$errors = [];
$inputs = [];

$request_method = strtoupper($_SERVER['REQUEST_METHOD']);

if ($request_method === 'GET') {
    // show the form
    require __DIR__ . '/inc/get.php';
} elseif ($request_method === 'POST') {
    // handle the form submission
    require    __DIR__ .  '/inc/post.php';
    // show the form if the error exists
    if (count($errors) > 0) {
        require __DIR__ . '/inc/get.php';
    }
}

require __DIR__ .  '/inc/footer.php';

কিভাবে index.php কাজ করে। প্রথমে, header.php এবং footer.php উভয় ফাইল থেকে কোড লোড করুন হেডার এবং ফুটার তৈরি করার জন্য ফাইলের উপরে এবং নীচের অংশে প্রয়োজনীয় কনস্ট্রাক্ট ব্যবহার করে।

দ্বিতীয়ত, ত্রুটি বার্তা সঞ্চয় করার জন্য $errors অ্যারে এবং প্রবেশ করা ফর্ম মান সংরক্ষণ করার জন্য $inputs অ্যারে সংজ্ঞায়িত করুন। যদি একটি ইনপুট উপাদানে অবৈধ ডেটা থাকে, তাহলে index.php $inputs-এ সংরক্ষিত সন্নিবেশিত মান দেখাবে।

তৃতীয়ত, get.php ফাইলটি লোড করে HTTP অনুরোধের পদ্ধতি GET হলে ফর্মটি দেখান। একবার আপনি প্রবেশ করুন

অবশেষে, যদি HTTP অনুরোধের পদ্ধতিটি POST হয় তবে ফর্ম জমা দেওয়ার জন্য কোডটি post.php-এ লোড করুন। ফর্মে কোনো ত্রুটি থাকলে, $errors খালি হবে না। এই ক্ষেত্রে, $errors অ্যারেতে সংরক্ষিত ত্রুটি বার্তা এবং $inputs অ্যারেতে সংরক্ষিত মান সন্নিবেশিত করে আবার ফর্মটি দেখান।

get.php

get.php ফাইলটিতে ফর্মটি রয়েছে:

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post">
    <header>
        <h1>Get FREE Updates</h1>
        <p>Join us for FREE to get email updates!</p>
    </header>
    <div>
        <label for="name">Name:</label>
        <input type="text" name="name" id="name" placeholder="Full Name" value="<?php echo $inputs['name'] ?? '' ?>" class="<?php echo isset($errors['name']) ? 'error' : ''  ?>">
        <small><?php echo $errors['name'] ?? '' ?></small>
    </div>
    <div>
        <label for="name">Email:</label>
        <input type="text" name="email" id="email" placeholder="Email Address" value="<?php echo $inputs['email'] ?? '' ?>" class="<?php echo isset($errors['email']) ? 'error' : '' ?>">
        <small><?php echo $errors['email'] ?? '' ?></small>
    </div>
    <button type="submit">Subscribe</button>
</form>

কিভাবে get.php কাজ করে।

প্রথমে, $inputs অ্যারেতে সংরক্ষিত সন্নিবেশিত মানগুলির সাথে নাম এবং ইমেল ইনপুট উপাদানগুলি পূরণ করুন শুধুমাত্র যদি এই মানগুলি বিদ্যমান থাকে। দ্বিতীয়ত, $errors অ্যারেতে সংরক্ষিত ত্রুটি বার্তাগুলি দেখান যদি সেগুলি বিদ্যমান থাকে।

post.php

নিচে post.php ফাইলের কোড দেখায়। post.php filter_input() এবং filter_var() ফাংশন ব্যবহার করে ফর্ম ডেটা যাচাই করে।

<?php

const NAME_REQUIRED = 'Please enter your name';
const EMAIL_REQUIRED = 'Please enter your email';
const EMAIL_INVALID = 'Please enter a valid email';

// sanitize and validate name
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$inputs['name'] = $name;

if ($name) {
    $name = trim($name);
    if ($name === '') {
        $errors['name'] = NAME_REQUIRED;
    }
} else {
    $errors['name'] = NAME_REQUIRED;
}


// sanitize & validate email
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$inputs['email'] = $email;
if ($email) {
    // validate email
    $email = filter_var($email, FILTER_VALIDATE_EMAIL);
    if ($email === false) {
        $errors['email'] = EMAIL_INVALID;
    }
} else {
    $errors['email'] = EMAIL_REQUIRED;
}
?>

<?php if (count($errors) === 0) : ?>
    <section>
        <h2>
            Thanks <?php echo htmlspecialchars($name) ?> for your subscription!
        </h2>
        <p>Please follow the steps below to complete your subscription:</p>
        <ol>
            <li>Check your email (<?php echo htmlspecialchars($email) ?>) - Find the message sent from webmaster@phptutorial.net</li>
            <li>Click to confirm - Click on the link in the email to confirm your subscription.</li>
        </ol>
    </section>

<?php endif ?>

কিভাবে এটা কাজ করে.

প্রথমত, ত্রুটি বার্তা সংরক্ষণ করতে কিছু ধ্রুবক সংজ্ঞায়িত করুন। একটি বাস্তব-বিশ্বের অ্যাপ্লিকেশনে, আপনি একটি পৃথক ফাইলে সমস্ত বার্তা সংরক্ষণ করতে পারেন:

const NAME_REQUIRED = 'Please enter your name';
const EMAIL_REQUIRED = 'Please enter your email';
const EMAIL_INVALID = 'Please enter a valid email';

দ্বিতীয়ত, filter_input() ফাংশন ব্যবহার করে নামটি স্যানিটাইজ করুন এবং যাচাই করুন। নামটি খালি থাকলে, $errors অ্যারেতে একটি ত্রুটি বার্তা যোগ করুন।

// sanitize and validate name
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
$inputs['name'] = $name;

if ($name) {
    $name = trim($name);
    if ($name === '') {
        $errors['name'] = NAME_REQUIRED;
    }
} else {
    $errors['name'] = NAME_REQUIRED;
}

তৃতীয়ত, filter_input() এবং filter_var() ফাংশন ব্যবহার করে ইমেল স্যানিটাইজ করুন এবং যাচাই করুন। ইমেলটি খালি বা অবৈধ হলে, $errors অ্যারেতে সংশ্লিষ্ট ত্রুটি বার্তা যোগ করুন।

// sanitize & validate email
$email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
$inputs['email'] = $email;
if ($email) {
    // validate email
    $email = filter_var($email, FILTER_VALIDATE_EMAIL);
    if ($email === false) {
        $errors['email'] = EMAIL_INVALID;
    }
} else {
    $errors['email'] = EMAIL_REQUIRED;
}

অবশেষে, যদি ফর্মটিতে কোনও ত্রুটি না থাকে তবে নিশ্চিতকরণ বার্তাটি দেখান:

<?php if (count($errors) === 0) : ?>
    <section>
        <h2>
            Thanks <?php echo htmlspecialchars($name) ?> for your subscription!
        </h2>
        <p>Please follow the steps below to complete your subscription:</p>
        <ol>
            <li>Check your email (<?php echo htmlspecialchars($email) ?>) - Find the message sent from webmaster@phptutorial.net</li>
            <li>Click to confirm - Click on the link in the email to confirm your subscription.</li>
        </ol>
    </section>
<?php endif ?>

ফর্মটি পূরণ করতে, আপনি একটি ডাটাবেসে যোগাযোগের ডেটা সংরক্ষণ করতে পারেন বা আপনার তালিকায় পরিচিতি যোগ করতে একটি ইমেল বিপণন পরিষেবার একটি API কল করতে পারেন ৷

সারসংক্ষেপ

ডেটা যাচাই এবং স্যানিটাইজ করতে filter_input() এবং filter_var() ফাংশন ব্যবহার করুন।

Leave a Comment

Share this Doc

PHP ফর্ম বৈধতা (Form validation )

Or copy link

CONTENTS

Subscribe

×
Cancel