QUERY_STRINGÀº URLÀÇ Ã¹¹øÂ° '?'µÚ¿¡ ³ª¿À´Â °ÍµéÀÌ´Ù. ÀÌ Á¤º¸´Â ISINDEX
¹®¼³ª HTML form(GET actionÀ» Æ÷ÇÔÇÏ´Â)¿¡ ÀÇÇØ Ãß°¡µÈ´Ù. À̰ÍÀº ¶ÇÇÑ
°ÔÀÌÆ®¿þÀ̸¦ ÂüÁ¶ ÇÏ´Â HTML anchor¿¡ Á÷Á¢ Æ÷ÇԵɼöµµ ÀÖ´Ù.
ÀÌ ¹®ÀÚ¿Àº º¸Åë Á¤º¸ ÁúÀǰ¡ µÉ °ÍÀÌ´Ù.
ÀÌ ¹®ÀÚ¿Àº Ç¥ÁØ URLÇü½ÄÀ¸·Î ¾ÏÈ£È(encoded)µÇ¾î ÀÖ´Ù. °ø¹éÀº +·Î º¯È¯µÇ°í,
Ư¼ö¹®ÀÚ´Â %xx(16 Áø¼ö)·Î º¯È¯µÈ´Ù.
ºÎ°¡ÀûÀÎ Á¤º¸¸¦ ½ºÅ©¸³Æ®¿¡°Ô Àü¼ÛÇϱâ À§ÇØ, CGI´Â ÀÌ Á¤º¸¸¦ URL¿¡
Æ÷ÇÔ½ÃŲ´Ù.
ÀÌ Á¤º¸´Â URLÀÇ °ÔÀÌÆ®¿þÀÌ ÆÐ½º´ÙÀ½¿¡ ³õ¿©Áö¸ç, ¼¹ö¿¡ ÀÇÇØ ¾ÏȣȵÇÁö
¾Ê´Â´Ù. ÀÌ °ÍÀº CGIÇÁ·Î±×·¥¿¡°Ô ÈÀÏÀÇ À§Ä¡¸¦ Àü¼ÛÇÒ ¶§ »ç¿ëµÈ´Ù.
/cgi-bin/foobar¶ó´Â CGIÇÁ·Î±×·¥ÀÌ ÀÖ°í, ¼¹öÀÇ DocumentRoot¿¡ Á¸ÀçÇÏ´Â
ÈÀϵéÀ» ó¸®ÇÑ´Ù°í ÇÏÀÚ.
foobar¿¡°Ô ¾î¶² ÈÀÏÀ» ó¸®ÇÒ °ÍÀÎÁö¸¦ Àü´ÞÇØ¾ß ÇÒ¶§, URLÀÇ ³¡¿¡ ºÎ°¡ÀûÀÎ
ÆÐ½º Á¤º¸¸¦ Æ÷ÇÔÇÔÀ¸·Î½á, foobar´Â PATH_INFO ȯ°æº¯¼ö¸¦ ÅëÇØ DocumentRoot¿¡
´ëÇÑ ¹®¼ÀÇ »ó´ëÀûÀÎ À§Ä¡¸¦, PATH_TRANSLATED ȯ°æº¯¼ö¸¦ ÅëÇØ ¹®¼ÀÇ ½ÇÁ¦
ÆÐ½º¸¦ ¾òÀ» ¼ö ÀÖ´Ù.
ÀÌ·¯ÇÑ °æ¿ì, Ãâ·ÂµÇ´Â ¹®¼°¡ MIMEÀ̶ó´Â °ÍÀ» ¼¹ö¿¡°Ô ¾Ë·Á¾ß ÇÑ´Ù. ÀϹÝÀûÀÎ
MIMEŸÀÔÀº text/htmlÀÌ´Ù.
¿¹¸¦µé¾î, HTMLÀ» Ŭ¶óÀÌ¾ðÆ®¿¡ º¸³¾¶§, Ãâ·ÂÀº ´ÙÀ½°ú °°Àº Çü½ÄÀ» °®´Â´Ù.
¿äÁîÀ½ ºê¶ó¿ìÀúµéÀº ÀÚµ¿ÀûÀ¸·Î »õ·Î¿î ´ÙÅ¥¸àÆ®·Î À̵¿À» ÇÑ´Ù.
http://www.yahoo.com¿¡ Random ¹öưÀº ¹Ù·Î LocationÀ» »ç¿ëÇÏ¿©
ºê¶ó¿ìÀú·Î ÇÏ¿©±Ý »õ·Î¿î ¹®¼·Î À̵¿ÇÏ°Ô ÇÑ´Ù.
´Ù¸¥ ÈÀÏÀ» ÂüÁ¶Çϱ⸦ ¿øÇÑ´Ù¸é ´ÜÁö ´ÙÀ½°ú °°Àº ºÎºÐ(°¡»ó)URLÀ» »ç¿ëÇϸé
µÈ´Ù.
FORMű״ HTML ¹®¼³»¿¡ fill-out formÀ» ±ÔÁ¤ÇÑ´Ù. ÇϳªÀÇ ¹®¼³»¿¡ ¿©·¯°³ÀÇ
fill-out formÀÌ Á¸ÀçÇÒ ¼ö ÀÖÁö¸¸, nestedµÈ ÇüÅ´ Çã¿ëµÇÁö ¾Ê´Â´Ù.
FORMÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
INPUTű״ FORM³»¿¡¼ ´Ü¼øÇÑ ÀÔ·Â ¿ä¼Ò¸¦ ±ÔÁ¤Çϱâ À§ÇØ »ç¿ëµÈ´Ù.
INPUTÀÇ ¼Ó¼ºÀº ´ÙÀ½°ú °°´Ù.
´Ù¼öÀÇ ¶óÀÎÀ» °®´Â ÅØ½ºÆ® ¿£Æ®¸® Çʵå·Î »ç¿ëµÈ´Ù.
ÀÚµ¿ÀûÀ¸·Î ½ºÅ©·Ñ¹Ù¸¦ °®´Â´Ù. ½ÃÀÛ°ú ³¡ ű׸¦ °®´Â´Ù. µðÆúÆ® ³»¿ëÀ» °®À»¼ö
ÀÖ´Ù.
submit buttonÀÌ ´·ÁÁ³À»¶§, formÀÇ ³»¿ëÀÌ ÁúÀÇ URL·Î º¯È¯µÈ´Ù.
form¿¡ ´Ü ÇϳªÀÇ ÅØ½ºÆ® Çʵ尡 ÀÖ°í, ±× ÅØ½ºÆ® ÇʵåÀÇ NAMEÀÌ "isindex"ÀÎ °æ¿ì¿¡,
submitµÈ ÁúÀÇ´Â ISINDEX¸¦ »ç¿ëÇÏ´Â °æ¿ì¿Í µ¿ÀÏÇÏ´Ù("url?querystring" not
"url? isindex=querystring").
formÀÌ METHOD="GET"À̾ú´Ù¸é, CGI ÇÁ·Î±×·¥Àº ȯ°æ º¯¼ö QUERY_STRING¸¦ ÅëÇØ,
¾ÏÈ£ÈµÈ form inputÀ» ¹ÞÀ» °ÍÀÌ´Ù.
formÀÌ METHOD="POST"À̾ú´Ù¸é, CGI ÇÁ·Î±×·¥Àº stdin»ó¿¡¼ ¾ÏÈ£ÈµÈ form input
À» ¹ÞÀ» °ÍÀÌ´Ù. ¼¹ö´Â µ¥ÀÌŸÀÇ ³¡¿¡ EOF¸¦ ÁÖÁö ¾ÊÀ» °ÍÀÌ´Ù. ±×·¯¹Ç·Î ȯ°æ
º¯¼ö CONTENT_LENGTH¸¦ »ç¿ëÇÏ¿© ¾ó¸¶³ª ¸¹Àº µ¥ÀÌŸ¸¦ stdinÀ¸·Î ºÎÅÍ ÀоîµéÀÏ
°ÍÀΰ¡¸¦ °áÁ¤ÇØ¾ß ÇÑ´Ù.
±âº»ÀûÀÎ ÀýÂ÷´Â '&'¿¡ ÀÇÇØ µ¥ÀÌŸµéÀ» ºÐ¸®ÇÏ´Â °ÍÀÌ´Ù. ±×´ÙÀ½
name=value½ÖÀ» ¾ò°í, name°ú value¸¦ ÇØµ¶ÇÑ ´ÙÀ½, ÀÏÀ» ¼öÇàÇÏ¸é µÈ´Ù.
Çü½Ä : <!--#command tag1="value1" tag2="value2"-->
Command¿Í tagÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
4.1 MIME ŸÀÔÀÎ ¹®¼
Sample output
What do you think of this?
4.2 ´Ù¸¥ ¹®¼¿¡ ´ëÇÑ ÂüÁ¶
5. Fill-Out Form
5.1 FORM ű×
5.2 INPUT ű×
5.3 SELECT ű×
5.4 TEXTAREA ű×
6. Form Submission
FormÀ» ÀÌ¿ëÇÏ¿© »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ¹Þ°í, ÃÖÁ¾ÀûÀ¸·Î submit ¹öưÀÌ ´·ÁÁö¸é,
ÀÔ·ÂµÈ ³»¿ëÀÌ ¼¹ö¿¡°Ô ³Ñ°ÜÁø´Ù. À̶§, MethodÀÇ Á¾·ù´Â GET°ú POST µÎ°¡ÁöÁß
Çϳª°¡ µÇ¸ç, °¢°¢ÀÇ °æ¿ì µ¥ÀÌŸ°¡ ¼¹ö¿¡°Ô Àü´ÞµÇ´Â ¹æ½ÄÀº ´ÙÀ½°ú °°´Ù.
"submit"¿ä¼Ò´Âform¿¡¼ ¾ðÁ¦³ª ÇÊ¿äÇÏ´Ù. ´Ü, ¿¹¿ÜÀûÀ¸·Î ÇϳªÀÇ INPUT¿ä¼Ò¸¦
Æ÷ÇÔÇÏ´Â formÀ̳ª, Àû¾îµµ ÇϳªÀÇ ÀÌ»óÀÇ INPUT¿ä¼Ò(typeÀÌ IMAGEÀÎ)¸¦ °®´Â
form¿¡¼´Â ÇÊ¿ä¾ø´Ù.
text³ª password ¿£Æ®¸® ÇʵåÀÇ °æ¿ì¿¡´Â, »ç¿ëÀÚ°¡ Àû¾î³ÖÀº ³»¿ëÀÌ °ªÀÌ µÈ´Ù. ¸¸¾à
¾Æ¹«°Íµµ Àû¾î³ÖÁö ¾Ê¾Ò´Ù¸é nullÀÌ µÈ´Ù.
checkbox¿Í radio buttonÀÇ VALUE ¼Ó¼ºµéÀº ±×°ÍµéÀÌ checkµÇ¾úÀ»¶§ÀÇ °ªÀ»
¸í½ÃÇÑ´Ù. checkµÇÁö ¾ÊÀº checkbox´Â ÁúÀǾî·Î º¯È¯µÉ¶§ »ç¶óÁø´Ù.
multiple checkbox´Â µ¿ÀÏÇÑ NAME°ú ´Ù¸¥ VALUE¸¦ °®À» ¼ö ÀÖ´Ù.
multiple radio buttonµµ ¶ÇÇÑ µ¿ÀÏÇÑ NAME°ú ´Ù¸¥ VALUE¸¦ °®À» ¼ö ÀÖ´Ù. 7. Decoding FORMs with CGI
6Àå¿¡¼ ¼³¸íÇß´ø¹Ù¿Í °°ÀÌ, ¼¹ö·Î ³Ñ¾î¿À´Â method´Â µÎ°¡Áö ÇüÅÂÁßÀÇ ÇϳªÀ̸ç,
°¢°¢Àº ´Ù¸¥ Çü½ÄÀ¸·Î µ¥ÀÌŸ¸¦ Àü¼ÛÇϱ⠶§¹®¿¡ ÀÌ¿¡ ´ëÇÑ Ã³¸®°¡ ÇÊ¿äÇÏ´Ù.
°¢ method¿¡ ´ëÇÑ Ã³¸® ¹æ½ÄÀº ´ÙÀ½°ú °°´Ù.
Form data´Â name=valueÀÇ ½ÖÀ̰í & ¹®ÀÚ¿¡ ÀÇÇØ ±¸ºÐµÈ´Ù. °¢ name=value½ÖÀº
¾ÏÈ£ÈµÈ URLÀÌ´Ù. Áï, °ø¹éÀº '+'·Î º¯È¯µÇ°í, ¾î¶² ¹®ÀÚ´Â 16Áø¼ö·Î º¯È¯µÈ´Ù. 8. CGI ȯ°æ º¯¼ö
¼¹ö¿¡¼ ½ºÅ©¸³Æ®·Î Á¤º¸¿ä±¸¿¡ °üÇÑ µ¥ÀÌŸ¸¦ ³Ñ°ÜÁÖ±â À§ÇØ, ¼¹ö´Â ȯ°æº¯¼ö
»Ó¸¸ ¾Æ´Ï¶ó ¸í·É¾î¶óÀÎ ¾Æ±Ô¸àÆ®¸¦ »ç¿ëÇÑ´Ù. ÀÌ·¯ÇÑ È¯°æº¯¼öµéÀº ¼¹ö°¡
°ÔÀÌÆ® ¿þÀÌ ÇÁ·Î±×·¥À» ½ÇÇà½Ãų ¶§ ¼¼ÆÃµÈ´Ù.
9. SSI
HTML¹®¼¸¦ ÀÛ¼ºÇÒ ¶§, Æò¹üÇÑ ÅØ½ºÆ®·Î¸¸ ¸¸µé´Ù º¸¸é ¿©·¯°¡Áö ºÒÆíÇÔÀ» ´À³¢°Ô
µÈ´Ù. CGI½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ¿© ¾î´ÀÁ¤µµ ÀÌ·±ÇÑ °¥ÁõÀº ÇØ¼ÒÇÒ ¼ö ÀÖÁö¸¸, CGI¶ÇÇÑ
ÇѰèÁ¡ÀÌ ÀÖ´Ù. ´ëºÎºÐÀÇ CGIµéÀÌ Å¬¶óÀ̾ðÆ®ÀÇ ÀԷ¿¡ ÀÇÇØ ¼öµ¿ÀûÀ¸·Î ¼öÇàµÇ´Â
Á¡ÀÌ ¹Ù·Î ±×°ÍÀÌ´Ù.
ÀÌ·¯ÇÑ Á¡À» ÇØ°áÇϰíÀÚ, NCSA httpd´Â Server Side Include¸¦ Á¦°øÇϰí ÀÖ´Ù.
Server Side Include¸¦ »ç¿ëÇÏ¿©, ÀÚ½ÅÀÇ ¹®¼¿¡ signiture¸¦ ½±°Ô Ãß°¡ÇÒ ¼öµµ
ÀÖ°í, UNIX¿¡¼ Á¦°øÇÏ´Â ½© ½ºÅ©¸³Æ®ÀÇ Ãâ·ÂÀ» ¹®¼¿¡ ´ãÀ» ¼öµµ ÀÖ´Ù. ¶ÇÇÑ,
CGI½ºÅ©¸³Æ®¿¡ ´õ ¸¹Àº ±â´ÉÀ» ºÎ¿©ÇÒ ¼öµµ ÀÖ´Ù.
Server Side Include±â´ÉÀº ´ÜÁö HTML¹®¼³»¿¡ '<' ¿Í '>'¸¦ ÀÌ¿ëÇÏ¿© ¸í·É¾î¿Í
¿É¼ÇÀ» ÁÜÀ¸·Î¼ ¼öÇàµÇ¸ç, ¼¹ö´Â ÀÌ ¹®¼¸¦ ÆÄ½ÌÇÏ¿© ÁÖ¾îÁø ¸í·É¾î¸¦ ÇØµ¶ÇÑ
´ÙÀ½, ±× °á°ú¸¦ ¹®¼ Áß°£¿¡ »ðÀÔÇÏ¿© Ŭ¶óÀÌ¾ðÆ®¿¡ º¸³»ÁÖ°Ô µÈ´Ù.
10. Installation
11. ÀÎŬ·çµå Çü½Ä
¸ðµç µð·ºÆ¼ºê´Â ´ÙÀ½°ú °°Àº Çü½ÄÀ» °®´Â´Ù.
config µð·ºÆ¼ºê´Â ¿¡·¯Ã³¸®¿Í ½Ã°£Çü½Ä, ÈÀÏÅ©±âÇü½ÄÀ» Á¦¾îÇÑ´Ù.
Çö ¹®¼¿¡ ´Ù¸¥ ¹®¼¸¦ »ðÀÔÇϱâ À§ÇØ »ç¿ëÇÑ´Ù.
include º¯¼öÁßÀÇ ÇϳªÀÇ °ªÀ» Ãâ·ÂÇÑ´Ù. ³¯Â¥Ãâ·Â½Ã timefmt¿¡ ÀÇÇØ
ÁöÁ¤µÈ Ãâ·ÂÇü½ÄÀ¸·Î Á¦¾àÀ» ¹Þ´Â´Ù. var¶ó´Â tag¸¦ »ç¿ëÇÑ´Ù.
ÈÀÏÀÇ Å©±â¸¦ Ãâ·ÂÇÑ´Ù. tag´Â include¿Í µ¿ÀÏÇÏ´Ù. sizefmtÇü½ÄÀÇ
¿µÇâÀ» ¹Þ´Â´Ù.
ÈÀÏÀÇ ¸¶Áö¸· °»½Å ³¯Â¥¸¦ Ãâ·ÂÇÑ´Ù. timefmtÇü½ÄÀÇ ¿µÇâÀ» ¹Þ´Â´Ù.
ÁÖ¾îÁø ½©¸í·É¾î³ª CGI ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÑ´Ù.
12. Parsed Documents ¿ëÀ¸·Î Á¤ÀÇµÈ º¯¼öµé
´ÙÀ½ÀÇ º¯¼öµéÀº CGI ½ºÅ©¸³Æ®¿¡ ÀÀ¿ëµÉ ¼öµµ ÀÖ°í, echo ¸í·É¾î¿¡ ÀÇÇØ
¹Ù·Î Ãâ·ÂÇÒ ¼öµµ ÀÖ´Ù.
Âü°í¹®Çå
URL:
http://hoohoo.ncsa.uiuc.edu/cgi
URL:
http://hoohoo.ncsa.uiuc.edu/docs/tutorials/includes.html
URL:
http://agora.leeds.ac.uk/nik/Cgi/start.html