একটি ফর্ম সাবমিশন প্রসেস করা PHP সবচেয়ে বেশি যে কাজে ব্যবহৃত হয় তার একটি — একজন visitor ফিল্ড পূরণ করেন, সাবমিট করেন, আর PHP পড়ে তারা কী টাইপ করেছেন।
একটি HTML <form>-এর method অ্যাট্রিবিউট ঠিক করে PHP কোন সুপারগ্লোবালে ডেটা পাবে। GET ডেটাকে URL-এ দৃশ্যমানভাবে রাখে (সার্চ, ফিল্টারের জন্য ভালো — যা শেয়ার বা বুকমার্ক করা যায়); POST এটি request body-তে লুকিয়ে পাঠায় (স্পর্শকাতর কিছুর জন্য, বা ডেটা বদলায় এমন কিছুর জন্য, যেমন একটি লগইন বা একটি কেনাকাটা, এটিই প্রয়োজন)।
<form action="process.php" method="post">
<input type="text" name="username">
<input type="email" name="email">
<button type="submit">Submit</button>
</form><?php
// process.php
$username = $_POST["username"] ?? "";
$email = $_POST["email"] ?? "";
if ($username && $email) {
echo "Thanks, $username! We'll email you at $email.";
} else {
echo "Please fill in both fields.";
}
?>Control Flow পাঠের ?? "" প্যাটার্ন এখানে নির্দিষ্টভাবে গুরুত্বপূর্ণ: কেউ ফর্ম সাবমিট না করে সরাসরি process.php-এ পৌঁছালে, $_POST["username"] একদমই থাকবে না — ফলব্যাক ছাড়া এটি পড়লে একটি পরিষ্কার, হ্যান্ডেল করা কেসের বদলে একটি warning হবে।
ছোট স্ক্রিপ্টের জন্য একটি সাধারণ, সহজ প্যাটার্ন: একটি ফাইল যা ফর্ম দেখায় আর সেটা প্রসেসও করে, কোনটা করবে তা ঠিক করতে request মেথড চেক করে:
<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$name = $_POST["name"] ?? "";
echo "Hello, $name!";
} else {
?>
<form method="post">
<input type="text" name="name">
<button type="submit">Submit</button>
</form>
<?php
}
?>ভ্যালিডেশন আসছে, প্রসঙ্গ অনুযায়ী
এখানে $name-এ আসলে দেখানোর বা সংরক্ষণ করার জন্য নিরাপদ কিছু আছে কিনা তা কিছুই চেক করে না — এটি ইচ্ছাকৃত, এই পাঠটি ফর্ম ডেটা গ্রহণের প্রক্রিয়ার উপর কেন্দ্রীভূত রাখার জন্য। এই অংশের পরের PHP আর MySQL পাঠে সবচেয়ে গুরুত্বপূর্ণ নির্দিষ্ট কেসটি দেখানো হবে: ফর্ম ডেটা সরাসরি একটি ডেটাবেস কোয়েরিতে বসিয়ে সেটা কখনো তৈরি না করা।