พื้นฐาน CGI ผนึกกำลัง SSI เพื่อการประยุกต์ใช้

ผู้เขียน: ทรงเกียรติ ภาวดี
ISBN: 974-87211-9-1
จำนวนหน้า: xxx หน้า
ขนาด: 14. 5x 21 ซม.
รูปแบบหนังสือ: หนังสือขาวดำ

ราคาปก: 195 บาท
ราคาสั่งซื้อ: 170 บาท
ส่งหน้านี้ให้เพื่อน  


  • แจกแจงความรู้พื้นฐานต่างๆ ของ CGI อย่างละเอียดเป็นขั้นตอน เหมาะสำหรับผู้เริ่มศึกษา CGI ควรทราบ
  • เรียนรู้การทำงานของเว็บเซิร์ฟเวอร์และกลไกการเชื่อมโยงกับ CGI ให้เข้าใจอย่างง่ายๆ
  • ตีแผ่ลักษณะการส่งข้อมูลจากฟอร์มไปยัง CGI รวมทั้งการนำ SSI มาใช้งานกับเว็บเพจและ CGI ทุกแง่มุม
  • อธิบายการเขียนสคริปต์ CGI ด้วยภาษา Perl พร้อมตัวอย่างที่นำไปใช้งานได้จริง เช่น เคาน์เตอร์, แบนเนอร์, การส่งเมลผ่านเว็บ ฯลฯ
  • แถมพิเศษ! แนะนำวิธีการใช้และการรัน CGI ในเซิร์ฟเวอร์ฟรี Hypermart.net


บทที่ 1 ความเกี่ยวพันของเว็บเซิร์ฟเวอร์และ CGI

ถ้าคิดจะเขียน CGI แล้ว เว็บเซิร์ฟเวอร์น่าจะเป็นสิ่งแรกที่ผู้อ่านควรทำความเข้าใจให้ถ่องแท้เสียก่อน เพราะมีส่วนเกี่ยวโยงกับ CGI อย่างแยกไม่ออก เนื่องจาก CGI จะทำงานจากการเรียกผ่านเว็บเซิร์ฟเวอร์ เว็บเซิร์ฟเวอร์คืออะไร ทำงานได้อย่างไร และเครื่องมือต่างๆ ที่ต้องใช้ในการเขียน CGI มีอะไรบ้าง เราจะได้ทราบกันในบทนี้

  • เว็บเซิร์ฟเวอร์คือผู้ให้บริการข้อมูล
  • ใช้โปรแกรมเว็บเซิร์ฟเวอร์ตัวไหนดี
  • เครื่องไหนจะเป็นเว็บเซิร์ฟเวอร์ได้บ้าง
  • การทำงานของเว็บเซิร์ฟเวอร์
  • ที่มาของ CGI
  • CGI จะเป็นอะไรก็ได้
  • CGI ทำอะไรได้บ้าง
  • CGI ทำงานเป็นฉากหลัง
  • ภาษาสำหรับใช้เขียน CGI
  • เว็บเซิร์ฟเวอร์ทำอย่างไรกับ CGI แบบสคริปต์
  • ตัวอย่างซอร์ซโค้ดของโปรแกรมและสคริปต์ CGI
  • สิ่งที่ต้องใช้เมื่อจะเขียน CGI...
  • เตรียมตัวก่อนที่จะศึกษาบทต่อไป

บทที่ 2 ใช้ OmniHTTPd แปลงพีซีเป็นเว็บเซิร์ฟเวอร์

การเขียน CGI จะต้องใช้เซิร์ฟเวอร์ที่ยอมให้รัน CGI ได้ ซึ่งทำให้บางคนเข้าใจผิดว่าต้องใช้เซิร์ฟเวอร์ขนาดใหญ่ๆ ที่เป็นระบบ UNIX หรือ Windows NT เท่านั้น แต่ในบทนี้จะบอกให้ทราบว่า มีเพียงเครื่องพีซีธรรมดาสักเครื่อง แล้วติดตั้งโปรแกรม OmniHTTPd ก็สามารถแปลงสภาพพีซีให้กลายเป็นเว็บเซิร์ฟเวอร์สำหรับทดลองเขียน CGI ได้แล้ว

  • เปลี่ยนเครื่องของเราให้เป็นเว็บเซิร์ฟเวอร์อย่างง่าย
  • โปรแกรมเว็บเซิร์ฟเวอร์ OmniHTTPd
  • สำรวจไดเรกทอรีที่โปรแกรมติดตั้งสร้างไว้ให้
  • htdocs ไดเรกทอรีนี้สำหรับไฟล์ HTML
  • ปรับแต่งค่าให้ OmniHTTPd ก่อนใช้งาน
  • กำหนดค่าที่ต้องใช้โดยรวม
  • กำหนดรายละเอียดอื่นๆ ของเว็บเซิร์ฟเวอร์
  • ทดสอบเซิร์ฟเวอร์กันหน่อย
  • อยากใช้ SSI แต่ไม่อยากใช้ .shtml

บทที่ 3 การทำงานของ CGI ที่ต้องใช้และเจอบ่อย

หลักการพื้นๆ ของ CGI ที่จำเป็นสำหรับผู้เริ่มต้น มีเพียงไม่กี่อย่าง เช่น การส่งผลการทำงานของ CGI กลับไปให้ผู้ใช้ดูทางเว็บเบราเซอร์หรือวิธีการเรียกให้ CGI ทำงาน ในบทนี้จะได้อธิบายหลักการพื้นฐานเหล่านี้ รวมไปถึงสาเหตุข้อผิดพลาดทั้งหลายของ CGI และวิธีการแก้ไขเบื้องต้นในแง่มุมต่างๆ ให้ผู้อ่านมีความเข้าใจอย่างถูกต้อง ก่อนที่จะเขียน CGI จริงๆ

  • เขียน CGI ส่งข้อมูลออกมาได้อย่างไร
  • ส่ง Content-type ผิดรูปแบบ
  • ส่ง Content-type ที่เว็บเบราเซอร์ไม่รู้จัก
  • เรียก CGI ให้ทำงานด้วยวิธีการอื่น
  • สารพัดความผิดพลาดของ CGI และการแก้ไข
  • หาข้อผิดพลาดจาก log file

บทที่ 4 กลวิธีส่งข้อมูลจากฟอร์มไปยัง CGI

ตัวกลางที่จะส่งข้อมูลจากเว็บเพจไปให้ CGI ในเซิร์ฟเวอร์รับไปทำงานได้อย่างง่ายๆ ก็คือ ฟอร์ม บทนี้จะอธิบายกลไกการส่งข้อมูลจากฟอร์มไปยัง CGI อย่างละเอียดเป็นขั้นตอน ตั้งแต่การป้อนข้อมูลจากฟอร์ม จนกระทั่งข้อมูลถูกนำไปใช้งานใน CGI ได้ และแนะนำวิธีการเขียนสคริปต์ทำงานกับฟอร์มให้ง่ายขึ้นด้วยการใช้โมดูลสำเร็จรูปที่ชื่อ CGI.pm

  • โครงสร้างและการทำงานของฟอร์ม
  • อินพุต SUBMIT กับ RESET
  • ฟอร์มส่งข้อมูลอะไรและส่งที่ไปไหน
  • ระบุ NAME ถ้าต้องการให้ส่งข้อมูลออกมา
  • ชื่ออินพุตซ้ำกันจะเกิดอะไรขึ้น
  • ส่งข้อมูลจากฟอร์มไปยัง CGI แบบ GET
  • เขียน CGI แกะข้อมูลที่ส่งมาจากฟอร์ม
  • POST กับ GET ต่างกันอย่างไร
  • ทางเลือกที่ง่ายกว่าในการแกะข้อมูลจากฟอร์ม
  • รู้ได้อย่างไรว่ามีโมดูลอะไรให้ใช้ได้บ้าง
  • ตัวอย่างการเขียนฟอร์มที่มีอินพุตหลายๆ แบบ

บทที่ 5 เสริมพลัง CGI ด้วย SSI

SSI เป็นอีกคำหนึ่งที่เราต้องเจอเมื่อเขียน CGI หน้าที่ของ SSI คือ เป็นตัวช่วยการทำงานของ CGI ให้ยืดหยุ่นและง่ายขึ้น บทนี้เราจะมาดูกันว่า CGI มีจุดด้อยอย่างไร ที่ทำให้ต้องมี SSI เข้ามาช่วยทำงาน รวมทั้งข้อดีและข้อเสียของการใช้ SSI เพื่อให้ตัดสินใจได้เองว่า เหมาะสมที่จะนำเอา SSI มาใช้กับเว็บไซต์และ CGI ของเราหรือไม่

  • ใช้ CGI แทรกข้อความลงใน HTML ไม่ใช่เรื่องง่าย
  • ปัญหาใหญ่ของ CGI ที่สร้างไฟล์ HTML ออกมา
  • ตัวตนที่แท้จริงของ SSI
  • เว็บเซิร์ฟเวอร์รู้ได้อย่างไรว่าเป็น SSI
  • ลองดูว่าใช้ SSI ได้หรือเปล่า
  • เป็นผู้ดูแลระบบเอง จะเปิดให้ใช้ SSI ดีไหม
  • มุมมองของ CGI, SSI และ ASP
  • กำหนดให้ SSI ทำงานได้อย่างไร

บทที่ 6 SSI ภาคเจาะลึกการใช้งาน

จากความเข้าใจเรื่อง SSI ในบทก่อน บทนี้จะเป็นการเจาะลึกการนำ SSI มาใช้งานให้เกิดประสิทธิภาพสูงสุด ตั้งแต่การนำ SSI มาใช้ในเว็บเพจโดยที่ไม่เกี่ยวข้องกับ CGI เลย การกำหนดเงื่อนไขและรูปแบบการแสดงผลของ SSI จนถึงวิธีการเขียน CGI เพื่อให้ถูกเรียกทำงานผ่านโค้ด SSI ได้

  • กฎเกณฑ์เบื้องต้นของการเขียน SSI
  • เขียนโค้ด SSI ผิดจะเกิดอะไร
  • คำสั่ง echo โชว์ค่าตัวแปรของเซิร์ฟเวอร์
  • คำสั่ง flastmod บอกวันที่แก้ไขข้อมูลครั้งสุดท้าย
  • คำสั่ง fsize บอกขนาดของไฟล์
  • ปรับแต่งข้อมูลก่อนแทรกด้วย config
  • คำสั่ง include ใช้ดึงเนื้อหาไฟล์อื่นมาแทรก
  • เรียกสคริปต์หรือ CGI ให้ทำงานด้วยคำสั่ง exec

บทที่ 7 สุ่มข้อความมาแสดงในเว็บเพจ

เว็บไซต์ที่ข้อมูลมีการเปลี่ยนแปลงหรืออัปเดตบ่อยๆ เป็นจุดดึงดูดให้ผู้ใช้แวะกลับมาเยี่ยมชมได้ การสุ่มข้อความ เช่น คำคมหรือกลอน มาแสดงในเว็บเพจ จึงเป็นอีกเทคนิคหนึ่งที่เว็บมาสเตอร์นิยมนำมาใช้ เพื่อให้ดูเสมือนว่าเว็บเพจมีการเปลี่ยนแปลงอยู่เสมอ ในบทนี้จะเป็นการเสนอเทคนิคที่ว่านี้พร้อมทั้งแนวทางประยุกต์ไปใช้งานอื่นๆ

  • แสดงวันที่แบบไทยๆ ในเว็บเพจ
  • สุ่มข้อความมาแสดง
  • สุ่มข้อความจากไฟล์มาแสดง
  • ต้องการแทรกข้อความยาวๆ จะทำไงดี
  • ไม่สุ่มข้อความมาแสดง-แต่ให้เปลี่ยนตามวัน

บทที่ 8 ลุ้นตัวเลขเคาน์เตอร์นับจำนวนผู้ชมเว็บเพจ

ตัวเลขเคาน์เตอร์ที่แสดงในเว็บเพจต่างๆ ดูจะเป็นอีกสิ่งหนึ่งที่ผู้เริ่มเขียน CGI อยากจะเขียนขึ้นมาใช้เอง ในบทนี้จะอธิบายการสร้างเคาน์เตอร์ทั้งแบบข้อความและแบบกราฟิก เริ่มจากหลักการของเคาน์เตอร์โดยรวม จนถึงการสร้างเคาน์เตอร์ใช้งานจริง รวมทั้งเทคนิคต่างๆ ที่จะเสริมเข้าไปในเคาน์เตอร์ได้

  • หลักการของเคาน์เตอร์
  • เคาน์เตอร์แบบ text
  • เคาน์เตอร์แบบกราฟิกที่เรียกผ่าน SSI
  • เคาน์เตอร์แบบกราฟิกที่เรียกผ่านแท็ก <IMG>
  • เริ่มสร้างเคาน์เตอร์แบบ text ต้องทำอะไรบ้าง
  • ไม่มีปัญหาเวลาเกิด Internal Server Error
  • ปรับแต่งความสวยงามของเคาน์เตอร์
  • แล้วถ้าเป็นเคาน์เตอร์แบบกราฟิก มีขั้นตอนอย่างไร
  • เคาน์เตอร์ไม่นับเมื่อเราเปิดดูเอง
  • ประโยชน์ของข้อมูลผู้ใช้ที่บันทึกไว้ใน log file
  • CGI ตัวเดียวนับแยกเว็บเพจแต่ละหน้า

บทที่ 9 จัดการกับลิงก์อย่างมีชั้นเชิง

ส่วนสำคัญของเอกสาร HTML ที่ทำให้เว็บเพจเชื่อมถึงกันได้อย่างง่ายๆ ก็คือ ลิงก์ โดยปกติแล้วการสร้างลิงก์ในเอกสาร HTML จะเขียนฝังไว้ตายตัวในเว็บเพจ แต่ในบทนี้จะเป็นการใช้ CGI เข้ามาจัดการกับลิงก์ให้เป็นแบบ dynamic เพื่อความง่ายในการแก้ไขหรือปรับปรุงและเพิ่มลูกเล่นต่างๆ เช่น บันทึกจำนวนครั้งของการคลิกลิงก์ เป็นต้น

  • ทำความเข้าใจเรื่องของลิงก์
  • ตัวอย่างปัญหาของเว็บรวมลิงก์
  • จะแก้ปัญหา "ลิงก์ตาย" ได้อย่างไร
  • เตรียมข้อมูลของลิงก์เก็บไว้ในไฟล์
  • เริ่มจาก CGI สร้างลิงก์แบบข้อความ
  • ทำความเข้าใจเรื่องรูปแบนเนอร์สำหรับลิงก์
  • สร้างลิงก์แบบรูปกราฟิก
  • ลิงก์ในดร็อปดาวน์ลิสต์บ็อกซ์
  • ใช้อินพุต SELECT ทำเป็นลิงก์ได้อย่างไร
  • เขียน CGI ให้อินพุต SELECT ทำงานเป็นลิงก์
  • รู้ได้อย่างไรว่ามีคนคลิกลิงก์กี่ครั้งแล้ว
  • เขียน CGI เพิ่มตัวนับให้กับลิงก์

บทที่ 10 สับเปลี่ยนหมุนเวียนโชว์ป้ายโฆษณา

ดูเหมือนว่าแบนเนอร์จะเป็นอุปกรณ์ประกอบเว็บเพจอย่างหนึ่งไปเสียแล้ว ไม่ว่าจะเป็นแบนเนอร์สำหรับลิงก์หากันเฉยๆ หรือแบนเนอร์ที่มีรายได้จากการคลิก บทนี้จะบอกวิธีการเขียน CGI เพื่อสุ่มรูปภาพแสดงออกมาในลักษณะของแบนเนอร์ เทคนิคการป้องกันและแก้ปัญหาต่างๆ ที่อาจจะเกิดขึ้นในการแสดงรูปแบนเนอร์ รวมถึงการสร้างแบนเนอร์ที่เป็นลิงก์ให้ผู้ใช้คลิกได้อีกด้วย

  • แนวคิดของการเขียน CGI ให้รูปภาพเปลี่ยนแปลง
  • เปลี่ยนรูปแบ็กกราวด์รายวัน
  • แบนเนอร์อย่างเดียวไม่มีลิงก์
  • แก้ไขปัญหาการโหลดกราฟิกไม่สมบูรณ์
  • แบนเนอร์ที่มีสถานะเป็นลิงก์ด้วย

บทที่ 11 เปิดห้องแสดงภาพสะสมสวยๆ

การแสดงรูปภาพจำนวนมากๆ ในเว็บเพจแบบ gallery นั้น ถ้าใช้ CGI เข้ามาช่วย จะทำให้การปรับปรุงข้อมูลทำได้ง่ายมาก บทนี้จะเป็นการเขียน CGI เพื่อจัดการนำรูปออกมาแสดงในลักษณะของ gallery ทั้งแบบแสดงออกมาเป็นลิงก์ข้อความและกราฟิก รวมทั้งการใส่เฟรมให้กับ gallery ด้วย

  • แนวคิดของการใช้ CGI จัดการกับลิงก์ในแกลเลอรี
  • หนทางที่สะดวกกว่า
  • สร้างแกลเลอรีที่มีลิงก์แบบข้อความ
  • สร้างแกลเลอรีที่มีลิงก์แบบรูปกราฟิก
  • ใส่เฟรมให้แกลเลอรี

บทที่ 12 ส่งเมลผ่านเว็บ ไม่ใช่เรื่องยาก

การเขียน CGI ส่งเมลผ่านเว็บเป็นเรื่องไม่ยาก และไม่จำเป็นต้องเขียน socket เชื่อมต่อกับเมลเซิร์ฟเวอร์ บทนี้จะเป็นการเขียน CGI ส่งเมลโดยเรียกใช้โปรแกรม Sendmail เพื่อทำหน้าที่ส่งเมล รวมทั้งบอกแนวทางป้องกันปัญหาต่างๆ ที่อาจเกิดขึ้นกับการใช้โปรแกรม Sendmail และการดัดแปลง CGI ไปใช้งานลักษณะอื่นอีก เช่น สร้าง mailing list หรือแนะนำเว็บไซต์ผ่านอีเมล

  • ทดลองใช้โปรแกรม Sendmail
  • เรียก Sendmail ให้ทำงานผ่านสคริปต์
  • สร้างบริการส่งเมลผ่านเว็บ
  • ป้อนอีเมลเข้ามาผิดรูปแบบ CGI ก็อาจจะล่ม
  • ป้องกันปัญหานี้ได้อย่างไร
  • แนะนำเว็บไซต์ผ่านเมล
  • สมัครสมาชิกรับข่าวสารทางเมล
  • เขียน CGI ทำหน้าที่เป็น mailing list
  • Sendmail สำหรับ Windows

ภาคผนวก ลองใช้ CGI ที่ Hypermart

  • สร้างไดเรกทอรี /cgi-bin สำหรับเก็บสคริปต์ CGI
  • เขียน CGI ง่ายๆ เพื่อทดสอบ
  • อัปโหลดสคริปต์ CGI ไปเก็บไว้ใน /cgi-bin ของเซิร์ฟเวอร์
  • เปลี่ยนแอตทริบิวต์ของสคริปต์ในเซิร์ฟเวอร์เป็น 755
  • ทดลองเรียกสคริปต์ test.cgi ในเซิร์ฟเวอร์ให้ทำงาน
  • ทดสอบ SSI
  • ทดสอบการเรียกใช้โมดูล CGI