পিএইচপি ফর্ম
ফর্ম এর মাধ্যমে তথ্য সংগ্রহের জন্য পিএইচপি সুপার গ্লোবাল ভ্যারিয়েবল $_GET
এবং $_POST
ব্যবহার করা হয়।
পিএইচপিতে সাধারণ এইচটিএমএল ফর্ম
নিচের উদাহরণে তিনটি ইনপুট ফিল্ড এবং একটি সাবমিট বাটনসহ একটি সাধারণ এইচটিএমএল ফর্ম এর উদাহরণ দেখানো হলঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি উদাহরণ</title>
</head>
<body>
<!--তিনটি ইনপুট ফিল্ড বিশিষ্ট একটি এইচটিএমএল ফর্ম-->
<form action="guest_post.php" method="post">
নামঃ < input type="text" name="name">
<br>
ই-মেইলঃ <input type="text" name="email">
<br>
মোবাইলঃ <input type="tel" name="mobile">
<br>
<input type="submit" value="সাবমিট">
</form>
</body>
</html>
যখন কোনো ইউজার উপরের ফর্মটি পূরণ করে সাবমিট বাটনে ক্লিক করে তখন ফর্ম এর ডেটাগুলোকে প্রসেস করার জন্য "guest_post.php" ফাইলের কাছে পাঠানো হয়। এখানে ফর্ম ডেটাকে পোস্ট মেথডের মাধ্যমে পাঠানো হয়েছে।
ফর্ম ডেটাকে প্রদর্শনীর জন্য ভ্যারিয়েবল এর পূর্বে echo
ব্যবহার করা হয়।
"guest_post.php" ফাইলটি দেখতে নিচের মতঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি উদাহরণ</title>
</head>
<body>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// POST মেথডের মাধ্যমে ফর্ম থেকে ইনপুট ফিল্ডের ভ্যালু সংগ্রহ
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$mobile = $_REQUEST['mobile'];
echo $name ." আপনাকে স্বাগতম।
<br> আপনার ই-মেইল এড্রেসঃ " . $email.
"<br> এবং মোবাইল নাম্বারঃ ". $mobile;
}
?>
</body>
</html>
ইনপুট ফিল্ডের ভ্যালুসহ উপরের কোডগুলোর আউটপুট নিচের মত দেখাবেঃ
তামজিদ হাসান আপনাকে স্বাগতম।
আপনার ই-মেইল এড্রেসঃ tamjid@examole.com
এবং মোবাইল নাম্বারঃ 00000000000
HTTP GET মেথড ব্যবহার করেও একই ফলাফল পাওয়া যায়।
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি উদাহরণ</title>
</head>
<body>
<!--তিনটি ইনপুট ফিল্ড বিশিষ্ট একটি এইচটিএমএল ফর্ম-->
<form action="guest_get.php" method="get">
নামঃ < input type="text" name="name">
<br>
ই-মেইলঃ <input type="text" name="email">
<br>
মোবাইলঃ <input type="tel" name="mobile">
<br>
<input type="submit" value="সাবমিট">
</form>
</body>
</html>
এবং "guest_get.php" ফাইলটি দেখতে নিচের মতঃ
<!DOCTYPE html>
<html>
<head>
<title>পিএইচপি উদাহরণ</title>
</head>
<body>
<?php
if ($_SERVER["REQUEST_METHOD"] == "GET") {
// ফর্ম থেকে ইনপুট ফিল্ডের ভ্যালু সংগ্রহ
$name = $_REQUEST['name'];
$email = $_REQUEST['email'];
$mobile = $_REQUEST['mobile'];
echo $name ." আপনাকে স্বাগতম।
<br> আপনার ই-মেইল এড্রেসঃ " . $email.
"<br> এবং মোবাইল নাম্বারঃ ". $mobile;
}
?>
</body>
</html>
লক্ষ্য করলে দেখবেন, উপরের কোডগুলো একেবারেই সহজ। কিন্তু এখানে খুবই গুরত্বপূর্ণ একটি বিষয় বাদ পড়েছে সেটা হলো আপনার স্ক্রিপ্টকে খারাপ কোড(malicious code) থেকে রক্ষা করার জন্য ফর্ম ডেটার বৈধতা(validity) চেক করা হয় নি।
পিএইচপি ফর্ম প্রসেস করার সময় সিকিউরিটির কথাও মাথায় রাখতে হবে!
আমাদের এই পেজে ফর্ম ভ্যালিডেশন সম্মন্ধে কিছুই বলা হয় নাই। এইচটিএমএল ফর্ম এর মাধ্যমে কিভাবে তথ্য(data) পাঠানো এবং পুনরুদ্ধার করা যায় এই অধ্যায়ে শুধু তাই দেখানো হয়েছে।
যাইহোক, সিকিউরিটির কথা মাথায় রেখে কিভাবে পিএইচপি ফর্মকে প্রসেস করা হয় তা পরবর্তী অধ্যায়ে দেখানো হয়েছে। হ্যাকার এবং স্পামার থেকে ফর্মকে নিরাপদ রাখার জন্য ফর্ম ডেটার উপযুক্ত ভ্যালিডেশন এর বিকল্প নাই!
GET বনাম POST
GET এবং POST উভয়েই একটি associative array তৈরি করে। যেমন-
array(
key1 => value1,
key2 => value2,
key3 => value3,
...
)
GET এবং POST যেহেতু associative array তাই এই array এর মধ্যে key:value জোড়ায় জোড়ায় থাকে। যেখানে key হচ্ছে ফর্ম এ ব্যবহৃত name এবং value হচ্ছে ইউজার কর্তৃক ইনপুট ডেটা।
GET এবং POST উভয়কেই $_GET
এবং $_POST
হিসাবে বিবেচনা করা হয়। এগুলো সুপার গ্লোবাল হওয়ার কারণে যেকোনো স্কোপ(scope) থেকেই এগুলোকে এক্সেস(access) করা যায়। অর্থাৎ যেকোনো ফাংশন, ক্লাস অথবা ফাইল থেকে কোনো অতিরিক্ত কোড না লিখেই এক্সেস করা যায়।
$_GET
হচ্ছে চলমান স্ক্রিপ্ট এর URL প্যারামিটার এর মাধ্যমে পাঠানো ভ্যারিয়েবলের array।
$_POST
হচ্ছে চলমান স্ক্রিপ্ট এর HTTP POST মেথডের মাধ্যমে পাঠানো ভ্যারিয়েবলের array।
কখন GET ব্যবহার করবেন?
GET মেথডের মাধ্যমে পাঠানো তথ্য সবার কাছেই দৃশ্যমান হয়। অর্থাৎ সকল ভ্যারিয়েবলের name এবং value, URL-এর মধ্যে দেখায়।
GET মেথডের মাধ্যমে তথ্য পাঠানোর ক্ষেত্রে সীমাবদ্ধতাও আছে। GET এর মাধ্যম প্রায় 2000 ক্যারেক্টার পাঠানো যায়।
যাইহোক যেহেতু ভ্যারিয়েবলগুলো URL এর মধ্যে দেখায়, সেহেতু পেজকে বুকমার্ক ও করা যায়। সর্বোপরি কিছু কিছু ক্ষেত্রে এটার উপকারিতাও আছে।
GET এর মাধ্যমে নন-সেনসিটিভ তথ্য পাঠানো হয়।
সতর্কতাঃ পাসওয়ার্ড বা অন্য কোনো সেনসিটিভ তথ্য GET এর মাধ্যমে কখনোই পাঠানো উচিৎ নয়!
কখন POST ব্যবহার করবেন?
POST মেথডের মাধ্যমে পাঠানো তথ্য কারো কাছে দৃশ্যমান হয় না। অর্থাৎ সকল ভ্যারিয়েবলের name এবং value, HTTP request-এর body এর মধ্য দিয়ে সম্প্রসারিত হয় এবং তথ্য পাঠানোর ক্ষেত্রে পরিমাণের উপর কোনো সীমাবদ্ধতা নাই।
সার্ভারে ফাইল আপলোড এর জন্য POST মেথড অতিরিক্ত সুযোগ-সুবিধা দিয়ে থাকে। যেমন- এতে multi-part binary input সাপোর্ট করে।
যাইহোক যেহেতু ভ্যারিয়েবলগুলো URL এর মধ্যে দেখায় না, সেহেতু পেজকে বুকমার্কও করা যায় না।
ডেভেলপাররা POST মেথডকেই বেশি প্রাধান্য দেয়।
পরবর্তী অধ্যায়ে দেখবেন, কিভাবে নিরাপদের সাথে ফর্ম ডেটাকে প্রসেস করা যায়!