কম্পিউটার টিউটোরিয়াল

পাইথন CGI প্রোগ্রামিং-এ GET এবং POST-এর পার্থক্য কী?


GET এবং POST মেথড

আপনি অবশ্যই অনেক পরিস্থিতিতে ব্রাউজার থেকে ওয়েব সার্ভারের মাধ্যমে আপনার CGI প্রোগ্রামে কিছু ইনফরমেশন পাস করার দরকার পেয়েছেন। ব্রাউজার প্রায়শই দুটি মেথড ব্যবহার করে এই ইনফরমেশন ওয়েব সার্ভারে পাস করে। এগুলো হলো GET মেথড এবং POST মেথড।

GET মেথড দিয়ে ইনফরমেশন পাস করা

GET মেথড এনকোডেড ইউজার ইনফরমেশন পেজ রিকোয়েস্টের সাথে অ্যাপেন্ড করে পাঠায়। পেজ এবং এনকোডেড ইনফরমেশন ? ক্যারেক্টার দিয়ে আলাদা থাকে:

https://www.test.com/cgi-bin/hello.py?key1=value1&key2=value2

GET মেথড ব্রাউজার থেকে ওয়েব সার্ভারে ইনফরমেশন পাস করার ডিফল্ট মেথড এবং এটি একটি লম্বা স্ট্রিং তৈরি করে যা আপনার ব্রাউজারের Location বক্সে দেখা যায়। পাসওয়ার্ড বা অন্য সেন্সিটিভ ইনফরমেশন পাস করতে কখনো GET মেথড ব্যবহার করবেন না। GET মেথডের সাইজ লিমিটেশন: রিকোয়েস্ট স্ট্রিং-এ শুধু ১০২৪ ক্যারেক্টার পাঠানো যায়। GET মেথড QUERY_STRING হেডার দিয়ে ইনফরমেশন পাঠায় এবং আপনার CGI প্রোগ্রামে QUERY_STRING এনভায়রনমেন্ট ভেরিয়েবল হিসেবে অ্যাক্সেসযোগ্য।

আপনি সিম্পলি URL-এ কী-ভ্যালু জোড়া ক্যাটেনেট করে বা HTML <FORM> ট্যাগ ব্যবহার করে GET মেথড দিয়ে ইনফরমেশন পাস করতে পারেন।

সিম্পল URL উদাহরণ — GET মেথড

নিচে একটি সিম্পল URL যেটি দুটি ভ্যালু hello_get.py প্রোগ্রামে GET মেথড দিয়ে পাস করে:

/cgi-bin/hello_get.py?first_name=ZARA&last_name=ALI

নিচে hello_get.py স্ক্রিপ্ট যা ব্রাউজারের ইনপুট হ্যান্ডেল করবে। আমরা cgi মডিউল ব্যবহার করব যা পাস করা ইনফরমেশন অ্যাক্সেস করা খুব সহজ করে দেয়:

#!/usr/bin/python
# CGI হ্যান্ডলিংয়ের মডিউল ইম্পোর্ট
import cgi, cgitb
# FieldStorage ইনস্ট্যান্স তৈরি
form = cgi.FieldStorage()
# ফিল্ড থেকে ডেটা পাওয়া
first_name = form.getvalue('first_name')
last_name  = form.getvalue('last_name')
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Hello - Second CGI Program</title>"
print "</head>"
print "<body>"
print "<h2>Hello %s %s</h2>" % (first_name, last_name)
print "</body>"
print "</html>"

এটি নিচের ফলাফল তৈরি করবে:

Hello ZARA ALI

সিম্পল FORM উদাহরণ — GET মেথড

এই উদাহরণ HTML FORM এবং সাবমিট বাটন ব্যবহার করে দুটি ভ্যালু পাস করে। আমরা একই CGI স্ক্রিপ্ট hello_get.py ব্যবহার করব।

<form action="/cgi-bin/hello_get.py" method="get">
  First Name: <input type="text" name="first_name">
  <br />
  Last Name: <input type="text" name="last_name" />
  <input type="submit" value="Submit" />
</form>

POST মেথড দিয়ে ইনফরমেশন পাস করা

CGI প্রোগ্রামে ইনফরমেশন পাস করার একটি সাধারণত আরও নির্ভরযোগ্য মেথড হলো POST মেথড। এটি একইভাবে ইনফরমেশন প্যাকেজ করে যা GET মেথড করে, কিন্তু URL-এ ? দিয়ে টেক্সট স্ট্রিং হিসেবে পাঠানোর পরিবর্তে এটি একটি আলাদা মেসেজ হিসেবে পাঠায়। এই মেসেজ CGI স্ক্রিপ্টে স্ট্যান্ডার্ড ইনপুট আকারে আসে।

নিচে একই hello_get.py স্ক্রিপ্ট যা GET এবং POST দুটোই হ্যান্ডেল করে:

#!/usr/bin/python
# CGI হ্যান্ডলিংয়ের মডিউল ইম্পোর্ট
import cgi, cgitb
# FieldStorage ইনস্ট্যান্স তৈরি
form = cgi.FieldStorage()
# ফিল্ড থেকে ডেটা পাওয়া
first_name = form.getvalue('first_name')
last_name  = form.getvalue('last_name')
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Hello - Second CGI Program</title>"
print "</head>"
print "<body>"
print "<h2>Hello %s %s</h2>" % (first_name, last_name)
print "</body>"
print "</html>"

আবার একই উদাহরণ নিই যা HTML FORM এবং সাবমিট বাটন দিয়ে দুটি ভ্যালু পাস করে। একই CGI স্ক্রিপ্ট hello_get.py ব্যবহার করব।

<form action="/cgi-bin/hello_get.py" method="post">
  First Name: <input type="text" name="first_name"><br />
  Last Name: <input type="text" name="last_name" />
  <input type="submit" value="Submit" />
</form>
  1. HTML-এ GET এবং POST মেথডের পার্থক্য

  2. HTTP প্রোটোকলে GET এবং POST মেথডের পার্থক্য

  3. Tkinter(Python)-এ root.destroy() এবং root.quit() এর পার্থক্য কী?

  4. Python-এ tkinter এবং tkinter.ttk উইজেটের পার্থক্য কী?