แรกเริ่มเรียนรู้เรื่อง CGI
1. การสื่อสารข้อมูลบนเวป (Web)
HTTP server หรือ Web server ได้ถูกออกแบบมาเพื่อเวป มันมีโปรโตคอลที่ใช้ในการส่งข้อมูลจาก server ไปยัง browser และก็รับข้อมูลจาก browser (หรือ HTTP Client อื่นๆ) กลับมายัง server วิธีการ(method)ที่ใช้รับส่งข้อมูลมีอยู่หลายวิธี วิธีพื้นฐานๆมีดังนี้
  • GET -- ข้อมูลจะถูกส่งไปกับ query string ของ URL ตัวอย่างเช่น การเรียก URL http://tutor.dserver.org/cgi-bin/program?query_string จะส่งข้อมูลใน query_string ไปยัง HTTP server ที่ทำงานอยู่ในเครื่องที่ชื่อว่า tutor.dserver.org
  • POST -- ข้อมูลจะถูกส่งไปในลักษณะของ message body ติดไปกับ request message ที่ถูกส่งโดย client ไปยัง server วิธีการนี้มีขั้นตอนที่ซับซ้อนกว่า GET แต่สามารถใช้กับข้อมูลที่ซับซ้อนกว่าได้ดีกว่า
และเราก็ได้รู้จักกับการส่งข้อมูลจาก browser ไปยัง HTTP server กันแล้ว CGI เป็นเครื่องมือที่ server ส่วนมากใช้ประมวลผลข้อมูลที่ถูกส่งมาจาก browser

2. Server ประมวลผลข้อมูลที่ส่งมาจาก browser

โปรแกรม HTTP server ส่วนใหญ่ออกแบบ มาสำหรับให้บริการข้อมูลเท่านั้น ไม่ได้ถูกออกแบบมาสำหรับ ประมวลผลข้อมูลที่ส่งมาจาก browser ดังนั้นถ้าต้องการให้ server ประมวลผลข้อมูลที่ถูกส่งมาจาก HTML FORM (หรืออื่นๆ) จำเป็นต้องมี 3 ส่วนต่อไปนี้
  • โปรแกรมเสริมสำหรับประมวลผลข้อมูลที่ส่งมาจาก browser
  • เครื่องมือที่ server จะส่งข้อมูลผ่านไปยังโปรแกรมเสริม หรือที่เรียกว่า โปรแกรม gateway ซึ่งจะทำหน้าที่เป็น gateway ระหว่าง web และทรัพยากรอื่นๆบนเครื่อง HTTP server เช่น ฐานข้อมูล
  • ช่องทางที่โปรแกรมเสริมจะส่งข้อมูลไปยัง browser เพื่อโปรแกรม gateway จะได้ส่งผลลัพธ์การประมวลผลข้อมูลไปให้กับ user ได้

ดูตัวอย่างขั้นตอนการทำงานของทั้ง 3 ส่วนจากรูปต่อไปนี้.. หัวลูกศรแสดงเส้นทางการวิ่งของข้อมูล

ส่วนวงรีแทนโปรโตคอลที่ใช้ติดต่อระหว่างส่วนต่างๆ

3. CGI (Common Gateway Interface)

CGI คืออะไร?

CGI ไม่ใช่ภาษา ไม่ใช่โปรแกรม!! มีหลายคนที่สับสนคิดว่า CGI คือโปรแกรมภาษา Perl! เมื่อกล่าวถึง CGI มีหลายคนที่คิดว่าคือโปรแกรมภาษา Perl และอีกหลายคนที่คิดว่าโปรแกรมภาษา Perl คือ CGI ?!?

CGI ไม่ใช่ภาษาโปรแกรม CGI เป็นโปรโตคอลที่ใช้ในการติดต่อระหว่าง browser ตัว server และตัวโปรแกรม gateway (หรือที่เรียกกันว่า CGI script) ซึ่งอาจจะเขียนขึ้นด้วยภาษาอะไรก็ได้ที่สามารถติดต่อกับ stdin, stdout และ ตัวแปร environment ของระบบได้

CGI (Common Gateway Interface) เป็นการ interface ระหว่าง server และ โปรแกรม 'gateway' ภายใน server CGI จะเป็นตัวกำหนดว่าข้อมูลจะส่งไปยัง โปรแกรม gateway ยังไง และ ข้อมูลจะถูกส่งกลับมาโดยโปรแกรม gateway อย่างไร ภายใน server และกลับไปยัง browser

4. ข้อมูลอ้างอิงเพิ่มเติม

ที่ผ่านมาจากข้อต่างๆข้างต้น เป็นเพียงข้อมูลเบื้องต้นเพื่อแนะนำให้รู้จักกับ CGI การที่จะเป็นนักพัฒนา CGI ที่ดี(ถึงขั้นมืออาชีพ)จะต้องเรียนรู้เรื่องต่อไปนี้ด้วย
  • รายละเอียดของ HTML (เพื่อสร้างแบบฟอร์มที่ถูกต้องสำหรับรับข้อมูลจาก browser และเพื่อให้โปรแกรม gateway ของคุณส่งข้อมูลผลลัพธ์ด้วยเอกสาร HTML ที่ถูกต้องตามที่ต้องการ)
  • รายละเอียดของโปรโตคอล HTTP (เพื่อส่งข้อมูลผลลัพธ์จากโปรแกรม gateway ของคุณด้วย HTTP header ที่ถูกต้อง)
  • รายละเอียดของโปรโตคอล CGI (ทำความรู้จักกับตัวแปร environment ต่างๆ และข้อมูลส่งมายังโปรแกรม gateway ทำความเข้าใจกับข้อมูลในแต่ละตัวแปรแต่ละตัว)
  • วิธีการเขียนโปรแกรม gateway โปรแกรม gateway สามารถเขียนได้ด้วยภาษาต่างๆ เช่น Perl หรือ C ต้องทำความเข้าใจกับแต่ละภาษาให้ละเอียด

 

เนื้อหาส่วนถัดไป.. ->