ফর্ম এর মাধ্যমে তথ্য সংগ্রহের জন্য পিএইচপি সুপার গ্লোবাল ভ্যারিয়েবল $_GET এবং $_POST ব্যবহার করা হয়।
পিএইচপিতে সাধারণ এইচটিএমএল ফর্ম
নিচের উদাহরণে তিনটি ইনপুট ফিল্ড এবং একটি সাবমিট বাটনসহ একটি সাধারণ এইচটিএমএল ফর্ম এর উদাহরণ দেখানো হলঃ
kt_satt_skill_example_id=334
যখন কোনো ইউজার উপরের ফর্মটি পূরণ করে সাবমিট বাটনে ক্লিক করে তখন ফর্ম এর ডেটাগুলোকে প্রসেস করার জন্য "guest_post.php" ফাইলের কাছে পাঠানো হয়। এখানে ফর্ম ডেটাকে পোস্ট মেথডের মাধ্যমে পাঠানো হয়েছে।
ফর্ম ডেটাকে প্রদর্শনীর জন্য ভ্যারিয়েবল এর পূর্বে echo ব্যবহার করা হয়।
"guest_post.php" ফাইলটি দেখতে নিচের মতঃ
kt_satt_skill_example_id=338
HTTP GET মেথড ব্যবহার করেও একই ফলাফল পাওয়া যায়।
kt_satt_skill_example_id=340
এবং "guest_get.php" ফাইলটি দেখতে নিচের মতঃ
kt_satt_skill_example_id=343
লক্ষ্য করলে দেখবেন, উপরের কোডগুলো একেবারেই সহজ। কিন্তু এখানে খুবই গুরত্বপূর্ণ একটি বিষয় বাদ পড়েছে সেটা হলো আপনার স্ক্রিপ্টকে খারাপ কোড(malicious code) থেকে রক্ষা করার জন্য ফর্ম ডেটার বৈধতা(validity) চেক করা হয় নি।
পিএইচপি ফর্ম প্রসেস করার সময় সিকিউরিটির কথাও মাথায় রাখতে হবে!
আমাদের এই পেজে ফর্ম ভ্যালিডেশন সম্মন্ধে কিছুই বলা হয় নাই। এইচটিএমএল ফর্ম এর মাধ্যমে কিভাবে তথ্য(data) পাঠানো এবং পুনরুদ্ধার করা যায় এই অধ্যায়ে শুধু তাই দেখানো হয়েছে।
যাইহোক, সিকিউরিটির কথা মাথায় রেখে কিভাবে পিএইচপি ফর্মকে প্রসেস করা হয় তা পরবর্তী অধ্যায়ে দেখানো হয়েছে। হ্যাকার এবং স্পামার থেকে ফর্মকে নিরাপদ রাখার জন্য ফর্ম ডেটার উপযুক্ত ভ্যালিডেশন এর বিকল্প নাই!
GET বনাম POST
GET এবং POST উভয়েই একটি associative array তৈরি করে। যেমন-
kt_satt_skill_example_id=344
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 মেথডকেই বেশি প্রাধান্য দেয়।
পরবর্তী অধ্যায়ে দেখবেন, কিভাবে নিরাপদের সাথে ফর্ম ডেটাকে প্রসেস করা যায়!
Read more