How to learn Gate Method and Post Method | SP Foundationbd

Gate Method

php তে সার্ভারে (form ইত্যাদির) ডেটা পাঠানোর জন্য কয়েকটি পদ্ধতি আছে এর মধ্যে GET একটি। gate Method er  ফর্মের ডেটা সংগ্রহ করতে $_GET ব্যবহার করা যায়, এটি একটি superglobal variable (Array) অর্থ্যাৎ কোন ফাইল include বা কোন কিছু করা ছাড়াই এই ভেরিয়েবল টি স্ক্রিপ্টের যেকোন জায়গায় ব্যবহার করা যাবে। ফর্ম বানানোর সময় method এট্রিবিউটে "get" দিলে URL এর প্যরামিটার থেকে (এখানে নিচের form a  search.php ফাইলটি)  data সংগ্রহ করবে। 

ফর্মের তথ্য GET মেথড এ পাঠালে সকল তথ্য ব্রাউজার এড্রেসবারে প্রদর্শিত হয় এবং সবাই দেখতে পায়। তাছাড়া কতটুকু তথ্য পাঠানো যাবে তার একটি সীমা আছে সাধারনত সর্বোচ্চ ২৫০ টি character (এটা আসলে server এবং ব্রাউজারের উপর নির্ভর করে যে তাদের URL এর দৈর্ঘ্য কতদুর হবে।) যেমন

test.php ফাইল একটা form

<form action="search.php" method="get">

Word: <input name="q" />

<input type="submit" name="submit" value="Submit"/>

</form> 

search.php file, form submit করলে যে পেজে যাবে।

<?php

echo 'Your entered word : '. $_GET['q'];

?>

এখন ফর্মের ফিল্ডে যদি দেই "Spfoundationbd" এবং সাবমিট করি তাহলে ব্রাউজারের এড্রেসবারে URL টি দেখাবে নিচের মত এবং search.php ফাইলটি এখন $_GET অ্যারে ভেরিয়েবল (সুপারগ্লোবাল) ব্যাবহার করে ফর্মের ডেটা সংগ্রহ করবে। 

দেখুন URL এ সব ডেটা দেখাচ্ছে যেমন "Spfoundationbd"। আমাদের এই ফর্মে একটি ফিল্ড (<input name="q">) আছে যদি আরও ফর্ম ফিল্ড থাকত তাহলে সেগুলিরও দেয়া মান এই URL এ দেখাত।

$_GET array er  index হিসেবে দিতে হবে ফর্ম ফিল্ডের name এট্রিবিউটের মান যেমন আমি দিয়েছি $_GET['q']

যদি <input name="email"> এরুপ একটি ফিল্ড থাকত তাহলে সেটার মান দেখতে search.php দিতাম $_GET['email'] এভাবে..

কখন get method ব্যবহার করবেন?

এমন ফর্মে get method ব্যবহার করবেন যেটার মান সবাই দেখলে কোন সমস্যা নেই যেমন সার্চিং (Search) এর form.

Post Method

এই পদ্ধতিতে form দিয়ে সার্ভারে যে তথ্যই পাঠানো হোক তা কেউ দেখতে পারেনা ব্রাউজারের এড্রেসবারেও প্রদর্শিত হয়না। ফর্মের method এট্রিবিউটে দিতে হবে method="post" যেমন দেখুন নিচের ফর্মে দিয়েছি।

এখানে সুবিধা হল যত ইচ্ছা তথ্য পাঠাতে পারেন (আসলে সর্বোচ্চ 8Mb পর্যন্ত পাঠানো যায়।)

<form action="search.php" method="post">

Word: <input name="q" />

<input type="submit" name="submit" value="Submit"/>

</form>

এবার যখন user submit বাটনে ক্লিক করবে তখন ব্রাউজার এড্রেসবারে নিচের মত দেখাবে

http://localhost/search.php

 

আর এবার ফর্মের ডেটা $_POST  সুপারগ্লোবাল ভেরিয়েবল দিয়ে গৃহীত হবে। $_POST একটি সুপারগ্লোবাল ভেরিয়েবল $_GET এর মতই। এখানেও অ্যারের ইনডেক্স হিসেবে ফর্ম ফিল্ডের name এট্রিবিউটের মান দিতে হবে। যেমন উপরের form submitকরলে যদি "q" এর মান দেখতে চাই তাহলে search.php হবে নিচের মত

<?php    echo 'Your entered word : '. $_POST['q'];    ?>

Gate and post method মধ্যে পার্থক্য

get মেথডের ফর্মের ডেটা URL এ দেখা যায় কিন্তু post মেথডের ফর্মের data URL এ দেখা যায়না।

get মেথডে form submit করার পর যদি ব্রাউজারের "back" বাটনে ক্লিক করে পেছনে যেতে চান তাহলে যেতে পারবেন এমনকি URL টি কপি করে রিলোড করলেও কোন ডেটা হারাবেনা কিন্তু post মেথডে browser alert দেখাবে যে পেছনে যেতে চান কিনা। যদি post মেথডে URL কপি করে reload করতে পারেন এবং validation দুর্বল হয় তাহলে data হারিয়ে যাবে।

get মেথডের নিরাপত্তা কম post এর তুলনায়।

$_REQUEST একটি সুপারগ্লোবাল ভেরিয়েভল আছে যেটা দিয়ে get কিংবা post দুটোরই ডেটা ধরা যায়। অর্থ্যাৎ ফর্মের মেথড get বা post যেটাই থাকুক না কেন $_REQUEST['field_name'] এভাবে ফর্মের ডেটা নিতে পারবেন। তবে এটার নিরাপত্তা কম তাই প্রয়োজন ছাড়া ব্যবহার করা উচিৎ নয়। 

কখন কোনটা ব্যবহার করবেন

অল্প তথ্য, search form এবং যে ফর্মের তথ্য URL দেখলে কোন সমস্যা নেই তাহলে GET method আর বেশি তথ্য এবং ইউজার নেম password ইত্যাদি ক্ষেত্রে POST method ব্যাবহার করা ভাল। যেমন google তাদের সার্চিং এ get method ব্যবহার করেছে এবং গুগলে কিছু search দিয়ে দেখুন আপনার শব্দটি URL দেখাবে।