¼­¹ö ÀÎÅÍÆäÀ̽º

ÃÖÀ±¼ö
´ëÀü ±¤¿ª½Ã À¯¼º±¸ ¾îÀºµ¿ 1
Çѱ¹°úÇбâ¼ú¿¬±¸¿ø ¿¬±¸°³¹ßÁ¤º¸¼¾ÅÍ
E-mail : armian@ns.kordic.re.kr
URL : http://stissbs.kordic.re.kr/~armian/
Abstract:
±âÁ¸ÀÇ ´Ù¾çÇÑ ÀÎÅÍ³Ý ¼­ºñ½ºµéÀº ¹è¿ì±â Èûµé°í, Á¦´ë·Î Ȱ¿ëÇÏÁö ¸øÇÑ °ÍµéÀÌ ¸¹¾Ò´Ù. WWW´Â ÀÌ·¯ÇÑ ÀÎÅÍ³Ý ¼­ºñ½º ±â´ÉµéÀ» ÅëÇÕÇÑ ÇüÅÂÀÇ ¼­ºñ½º¸¦ Á¦°øÇϸç, Hyperlink°³³äÀÇ µµÀÔÀ¸·Î Ãʺ¸ÀÚµµ ¼Õ½±°Ô ÀÎÅͳÝÀÇ ¹®À» µÎµå¸± ¼ö ÀÖ°Ô ÇÏ¿´´Ù.
±¹³»¿¡¼­µµ »õ·Î¿î ¼­¹öµéÀÌ ¼Ó¼Ó µîÀåÇÏ¿´°í, ÇöÀç 700¿©°³°¡ ³Ñ´Â ¼­¹ö°¡ Á¸Àç Çϰí ÀÖ´Ù. ´Ü¼øÈ÷ ÅØ½ºÆ®·Î¸¸ ±¸¼ºµÈ HTML·Î ¼­¹ö¸¦ ¿î¿µÇÏ´Â Â÷¿øÀ» ³Ñ¾î¼­, Ŭ¶óÀ̾ðÆ®ÀÇ ¿ä±¸¿¡ µû¶ó µ¿ÀûÀÎ ¹®¼­¸¦ »ý¼ºÇϵµ·Ï, ¼­¹ö¸¦ È®ÀåÇϱâ À§Çؼ± CGI°¡ ÇʼöÀûÀÎ ¿ä¼ÒÀÌ´Ù. º» °í¿¡¼­´Â CGIÀÇ °³³ä°ú µ¿ÀÛ¿ø¸®¸¦ ¼³¸í ÇÑ´Ù. ÀÌ¿Í ´õºÒ¾î ¼­¹ö¿¡ ´Ù¾çÇÑ ÇüÅ·ÎÀÇ ¹®¼­ È®ÀåÀ» À§ÇÑ Server Side Include¿¡ ´ëÇØ¼­ »ìÆìº¸±â·Î ÇÑ´Ù.
Keywords:
CGI,Form, SSI, Server side include

1. ¼­·Ð

CGI´Â HTTP³ª Web server°°Àº Á¤º¸¼­¹öµé°ú ÇÔ²² ¿ÜºÎ ÀÀ¿ëµé°úÀÇ ÀÎÅÍÆäÀ̽º¸¦ À§ÇÑ Ç¥ÁØÀÌ´Ù. ÀϹÝÀûÀ¸·Î Web daemonÀÌ ³Ñ°ÜÁÖ´Â HTML ÀÚ·á´Â Á¤ÀûÀÎ ÀÚ·áÀÌ´Ù. Áï, º¯ÇÏÁö ¾Ê´Â ÅØ½ºÆ® È­ÀÏ·Î Á¸ÀçÇÏ´Â °ÍÀÌ´Ù.
±×·¯³ª Á¤ÀûÀÎ ÀÚ·á¿¡´Â ÇѰ谡 ÀÖ´Ù. ¿¹¸¦µé¾î, ÁúÀǸ¦ ÅëÇØ ¼­¹öÀÇ µ¥ÀÌŸº£À̽º·ÎºÎÅÍ, ¸¸Á·ÇÏ´Â ·¹Äڵ常À» Ãâ·ÂÇÏ±æ ¿øÇÑ´Ù°í ÇÒ¶§, µÇµ¹·ÁÁö´Â ¹®¼­´Â ÁúÀÇ¿¡ µû¶ó µ¿ÀûÀ¸·Î º¯È­ÇØ¾ß ÇÑ´Ù.
CGI´Â ¹Ù·Î ÀÌ·¯ÇÑ ¿ªÇÒÀ» ¼öÇàÇϱâ À§ÇØ Á¸ÀçÇÏ´Â °ÔÀÌÆ®¿þÀÌÀÌ´Ù.

2. Specifics

CGI´Â ½ÇÇà°¡´ÉÇÑ ÇÁ·Î±×·¥À̹ǷÎ, ½Ã½ºÅÛ¿¡ ½ÇÇà È­ÀÏ·Î Á¸ÀçÇÏ°Ô µÈ´Ù. Web ¼­¹ö´Â CGIÇÁ·Î±×·¥ÀÇ ³»¿ëÀ» º¸¿©ÁÖ´Â °ÍÀÌ ¾Æ´Ï¶ó, ½ÇÇà°á°ú¸¦ º¸¿©ÁÖ¾î¾ß ÇÑ´Ù. ÀÌ·¸°Ô Çϱâ À§Çؼ±, ¼­¹ö°¡ ÇöÀç ½ÇÇàµÇ´Â ÇÁ·Î±×·¥ÀÌ CGI¶ó´Â °ÍÀ» ¾Ë¾Æ¾ß¸¸ ÇÑ´Ù. À̸¦ À§ÇØ CGI ÇÁ·Î±×·¥µéÀº ƯÁ¤ÇÑ µð·ºÅ丮¿¡ Á¸ÀçÇÏ°Ô µÈ´Ù. ÀÌ µð·ºÅ丮´Â Web ¸¶½ºÅͰ¡ Á÷Á¢ °ü¸®Çϸç, ÀÏ¹Ý »ç¿ëÀÚ°¡ CGIÇÁ·Î±×·¥À» »ý¼ºÇÏ´Â °ÍÀ» ±ÝÁöÇÑ´Ù. ÀÌ·¸°Ô Çϸé ÀϹݻç¿ëÀÚµéÀº CGI¸¦ »ç¿ëÇϴµ¥ ºÒÆíÇÔÀ» ´À³¥ °ÍÀÌ´Ù. Web ¸¶½ºÅÍ´Â CGI¸¦ À§ÇÑ ´Ù¸¥ Àå¼Ò¸¦ ÇÒ´çÇÒ ¼ö ÀÖ°í, ÀÌ·¯ÇÑ ºÒÆí ÇÔÀ» ÇØ¼ÒÇÒ ¼ö ÀÖ´Ù. NCSA HTTPd ¼­¹ö¿¡¼­´Â /cgi-binÀ̶ó´Â µð·ºÅ丮°¡ ÇÒ´çµÈ´Ù. ÀÌ °÷¿¡ CGIÇÁ·Î±×·¥µé ÀÌ ³õ¿© Áö°Ô µÈ´Ù. CGI ÇÁ·Î±×·¥µéÀº ´ÙÀ½°ú °°ÀÌ ¿©·¯ ¾ð¾î·Î »ý¼ºµÉ ¼ö ÀÖ´Ù.

3. Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ¼­¹ö·ÎÀÇ ÁúÀÇ Àü´Þ

Ŭ¶óÀÌ¾ðÆ®°¡ CGI ÇÁ·Î±×·¥¿¡ ´ëÀÀµÇ´Â URLÀ» ¿ä±¸ÇÒ ¶§¸¶´Ù, ¼­¹ö´Â ±× ÇÁ·Î±×·¥À» ¸®¾óŸÀÓÀ¸·Î ½ÇÇà½Ã۰í, ±× Ãâ·ÂÀÌ °ð¹Ù·Î Ŭ¶óÀÌ¾ðÆ®¿¡ Àü´ÞµÈ´Ù.
CGI ÇÁ·Î±×·¥Àº ÀϹÝÀûÀÎ ÇÁ·Î±×·¥°ú ´Þ¸® ±¸¼ºµÇ ÀÖ´Ù. °¡Àå Å« Â÷ÀÌÁ¡Àº ÆÄ¶ó¹ÌÅÍÀÇ Àü´Þ ¹æ½ÄÀÌ´Ù. ÀϹÝÀûÀÎ ÇÁ·Î±×·¥Àº ¸í·É¾î¶óÀÎ ¿É¼ÇÀ» ÅëÇØ ÆÄ¶ó¹ÌÅ͸¦ Àü´ÞÇÑ´Ù.

CGI´Â ¸í·É¾î¶óÀÎÀ» ´Ù¸¥ ¸ñÀûÀ» À§ÇØ »ç¿ëÇϹǷΠÀ̰ÍÀº ºÒ°¡´ÉÇÏ´Ù. ´ë½Å CGI´Â ȯ°æº¯¼öµéÀ» ÀÌ¿ëÇÏ¿© ÆÄ¶ó¹ÌÅ͸¦ Àü´ÞÇÑ´Ù. µÎ°³ÀÇ ÁÖ¿ä ȯ°æº¯¼öµéÀº ´ÙÀ½°ú °°´Ù.

4. ¼­¹ö¿¡¼­ Ŭ¶óÀÌ¾ðÆ®·ÎÀÇ °á°ú ¹®¼­ Àü´Þ

CGI ÇÁ·Î±×·¥ Ãʺ¸ÀÚÀÇ ½Ç¼ö´Â Ãâ·Â°á°ú¸¦ ¼­¹ö°¡ ÀÌÇØÇÒ ¼ö ÀÖ°Ô Çü½ÄÈ­ÇÏÁö ¾Ê´Â ´Ù´Â °ÍÀÌ´Ù. CGI ÇÁ·Î±×·¥Àº ¿©·¯°¡Áö ¹®¼­ Çü½Ä(types)À» Àü´ÞÇÒ ¼ö ÀÖ´Ù. CGI´Â Ŭ¶óÀÌ¾ðÆ®¿¡°Ô À̹ÌÁö ¶Ç´Â HTML¹®¼­¸¦ Àü¼ÛÇÒ ¼öµµ, ½ÉÁö¾î ¿Àµð¿ÀÈ­ÀÏÀ» Àü¼ÛÇÒ¼öµµ ÀÖ´Ù. ¶ÇÇÑ ´Ù¸¥ ¹®¼­¿¡ ´ëÇÑ ÂüÁ¶¸¦ Àü¼ÛÇÒ ¼öµµ ÀÖ´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ °á°ú¸¦ ÀûÀýÇÏ°Ô Ç¥ÇöÇÏ·Á¸é, ¹®¼­ÀÇ Çü½ÄÀ» ¾Ë¾Æ¾ß¸¸ ÇÑ´Ù. ÀÌ·¯ÇÑ ÀÌÀ¯·Î CGI ÇÁ·Î±×·¥Àº ¼­¹ö¿¡°Ô µÇµ¹·ÁÁú ¹®¼­ÀÇ Å¸ÀÔÀ» ¾Ë·Á¾ß¸¸ ÇÑ´Ù. À̸¦ À§ÇØ, CGI´Â Ãâ·Â½Ã ÀÛÀºÇì´õ¸¦ ÀÛ¼ºÇÑ´Ù. ÀÌ Çì´õ´Â ASCII ÅØ½ºÆ®À̰í, °³Ç๮ÀÚ¿Í ºó ÁÙÀ» °®´Â´Ù.

4.1 MIME ŸÀÔÀÎ ¹®¼­

ÀÌ·¯ÇÑ °æ¿ì, Ãâ·ÂµÇ´Â ¹®¼­°¡ MIMEÀ̶ó´Â °ÍÀ» ¼­¹ö¿¡°Ô ¾Ë·Á¾ß ÇÑ´Ù. ÀϹÝÀûÀÎ MIMEŸÀÔÀº text/htmlÀÌ´Ù. ¿¹¸¦µé¾î, HTMLÀ» Ŭ¶óÀÌ¾ðÆ®¿¡ º¸³¾¶§, Ãâ·ÂÀº ´ÙÀ½°ú °°Àº Çü½ÄÀ» °®´Â´Ù.

Content-type: text/html <HTML><HEAD> <TITLE>output of HTML from CGI script</TITLE> </HEAD><BODY> <H1>Sample output</H1> What do you think of <STRONG>this?</STRONG> </BODY></HTML>

4.2 ´Ù¸¥ ¹®¼­¿¡ ´ëÇÑ ÂüÁ¶

¿äÁîÀ½ ºê¶ó¿ìÀúµéÀº ÀÚµ¿ÀûÀ¸·Î »õ·Î¿î ´ÙÅ¥¸àÆ®·Î À̵¿À» ÇÑ´Ù. http://www.yahoo.com¿¡ Random ¹öưÀº ¹Ù·Î LocationÀ» »ç¿ëÇÏ¿© ºê¶ó¿ìÀú·Î ÇÏ¿©±Ý »õ·Î¿î ¹®¼­·Î À̵¿ÇÏ°Ô ÇÑ´Ù. ´Ù¸¥ È­ÀÏÀ» ÂüÁ¶Çϱ⸦ ¿øÇÑ´Ù¸é ´ÜÁö ´ÙÀ½°ú °°Àº ºÎºÐ(°¡»ó)URLÀ» »ç¿ëÇÏ¸é µÈ´Ù.

Location: /dir1/dir2/myfile.html À§¿Í °°ÀÌ Çϸé, Ŭ¶óÀÌ¾ðÆ®´Â ½ºÅ©¸³Æ®¸¦ ¿ä±¸ÇÏ¿´Áö¸¸, http://yourserver/dir1/dir2/myfile.html ¹®¼­¸¦ ¾ò°Ô µÈ´Ù.

5. Fill-Out Form

5.1 FORM ű×

FORMű״ HTML ¹®¼­³»¿¡ fill-out formÀ» ±ÔÁ¤ÇÑ´Ù. ÇϳªÀÇ ¹®¼­³»¿¡ ¿©·¯°³ÀÇ fill-out formÀÌ Á¸ÀçÇÒ ¼ö ÀÖÁö¸¸, nestedµÈ ÇüÅ´ Çã¿ëµÇÁö ¾Ê´Â´Ù. FORMÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.

<FORM ACTION="url"> ... </FORM> FORM¿¡ »ç¿ëµÇ´Â ¼Ó¼ºµéÀº ´ÙÀ½°ú °°´Ù.

5.2 INPUT ű×

INPUTű״ FORM³»¿¡¼­ ´Ü¼øÇÑ ÀÔ·Â ¿ä¼Ò¸¦ ±ÔÁ¤Çϱâ À§ÇØ »ç¿ëµÈ´Ù. INPUTÀÇ ¼Ó¼ºÀº ´ÙÀ½°ú °°´Ù.

5.3 SELECT ű×

<FORM>°ú </FORM>»çÀÌ¿¡ µé¾î°£´Ù. INPUT°ú ´Þ¸®, SELECT´Â ½ÃÀÛ°ú ³¡ÀÇ Å±׸¦ °®´Â´Ù. ¿¹) <SELECT NAME="a-ment"> <OPTION> First option. <OPTION> Second option. </SELECT>

5.4 TEXTAREA ű×

´Ù¼öÀÇ ¶óÀÎÀ» °®´Â ÅØ½ºÆ® ¿£Æ®¸® Çʵå·Î »ç¿ëµÈ´Ù.

ÀÚµ¿ÀûÀ¸·Î ½ºÅ©·Ñ¹Ù¸¦ °®´Â´Ù. ½ÃÀÛ°ú ³¡ ű׸¦ °®´Â´Ù. µðÆúÆ® ³»¿ëÀ» °®À»¼ö ÀÖ´Ù.

¿¹) 1. no default content <TEXTAREA NAME="foo" ROWS=4 COLS=40></TEXTAREA> 2. default content <TEXTAREA NAME="foo" ROWS=4 COLS=40> Default contents go here. </TEXTAREA>

6. Form Submission

FormÀ» ÀÌ¿ëÇÏ¿© »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ¹Þ°í, ÃÖÁ¾ÀûÀ¸·Î submit ¹öưÀÌ ´­·ÁÁö¸é, ÀÔ·ÂµÈ ³»¿ëÀÌ ¼­¹ö¿¡°Ô ³Ñ°ÜÁø´Ù. À̶§, MethodÀÇ Á¾·ù´Â GET°ú POST µÎ°¡ÁöÁß Çϳª°¡ µÇ¸ç, °¢°¢ÀÇ °æ¿ì µ¥ÀÌŸ°¡ ¼­¹ö¿¡°Ô Àü´ÞµÇ´Â ¹æ½ÄÀº ´ÙÀ½°ú °°´Ù.
"submit"¿ä¼Ò´Âform¿¡¼­ ¾ðÁ¦³ª ÇÊ¿äÇÏ´Ù. ´Ü, ¿¹¿ÜÀûÀ¸·Î ÇϳªÀÇ INPUT¿ä¼Ò¸¦ Æ÷ÇÔÇÏ´Â formÀ̳ª, Àû¾îµµ ÇϳªÀÇ ÀÌ»óÀÇ INPUT¿ä¼Ò(typeÀÌ IMAGEÀÎ)¸¦ °®´Â form¿¡¼­´Â ÇÊ¿ä¾ø´Ù.

form¿¡ ´Ü ÇϳªÀÇ ÅØ½ºÆ® Çʵ尡 ÀÖ°í, ±× ÅØ½ºÆ® ÇʵåÀÇ NAMEÀÌ "isindex"ÀÎ °æ¿ì¿¡, submitµÈ ÁúÀÇ´Â ISINDEX¸¦ »ç¿ëÇÏ´Â °æ¿ì¿Í µ¿ÀÏÇÏ´Ù("url?querystring" not "url? isindex=querystring").

7. Decoding FORMs with CGI

6Àå¿¡¼­ ¼³¸íÇß´ø¹Ù¿Í °°ÀÌ, ¼­¹ö·Î ³Ñ¾î¿À´Â method´Â µÎ°¡Áö ÇüÅÂÁßÀÇ ÇϳªÀ̸ç, °¢°¢Àº ´Ù¸¥ Çü½ÄÀ¸·Î µ¥ÀÌŸ¸¦ Àü¼ÛÇϱ⠶§¹®¿¡ ÀÌ¿¡ ´ëÇÑ Ã³¸®°¡ ÇÊ¿äÇÏ´Ù. °¢ method¿¡ ´ëÇÑ Ã³¸® ¹æ½ÄÀº ´ÙÀ½°ú °°´Ù. Form data´Â name=valueÀÇ ½ÖÀ̰í & ¹®ÀÚ¿¡ ÀÇÇØ ±¸ºÐµÈ´Ù. °¢ name=value½ÖÀº ¾ÏȣȭµÈ URLÀÌ´Ù. Áï, °ø¹éÀº '+'·Î º¯È¯µÇ°í, ¾î¶² ¹®ÀÚ´Â 16Áø¼ö·Î º¯È¯µÈ´Ù.

±âº»ÀûÀÎ ÀýÂ÷´Â '&'¿¡ ÀÇÇØ µ¥ÀÌŸµéÀ» ºÐ¸®ÇÏ´Â °ÍÀÌ´Ù. ±×´ÙÀ½ name=value½ÖÀ» ¾ò°í, name°ú value¸¦ ÇØµ¶ÇÑ ´ÙÀ½, ÀÏÀ» ¼öÇàÇÏ¸é µÈ´Ù.

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. ÀÎŬ·çµå Çü½Ä

¸ðµç µð·ºÆ¼ºê´Â ´ÙÀ½°ú °°Àº Çü½ÄÀ» °®´Â´Ù.

Çü½Ä : <!--#command tag1="value1" tag2="value2"-->

Command¿Í tagÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.

12. Parsed Documents ¿ëÀ¸·Î Á¤ÀÇµÈ º¯¼öµé

´ÙÀ½ÀÇ º¯¼öµéÀº CGI ½ºÅ©¸³Æ®¿¡ ÀÀ¿ëµÉ ¼öµµ ÀÖ°í, echo ¸í·É¾î¿¡ ÀÇÇØ ¹Ù·Î Ãâ·ÂÇÒ ¼öµµ ÀÖ´Ù.

Âü°í¹®Çå

[NCSA95a]
The Common Gateway Interface
URL:
http://hoohoo.ncsa.uiuc.edu/cgi
[NCSA95b]
Server Side Include
URL: http://hoohoo.ncsa.uiuc.edu/docs/tutorials/includes.html
[Leeds95a]
CGI Tutorial
URL: http://agora.leeds.ac.uk/nik/Cgi/start.html
[WWW-KR95a]
°¡ÀÚ, WebÀÇ ¼¼°è·Î! ,225p-231p