Luis Colorado ±Û¾´ÀÌ ¼Ò°³: Luis Colorado´ÔÀº ½ºÆäÀο¡ ÀÖ´Â Telefonica Sistemas S.A.¿¡¼ À¯´Ð½º½Ã½ºÅÛ°ú ÀÎÅͳÝÁ¢±ÙÀ» °¡´ÉÇÏ°Ô ÇØÁÖ´Â °ü¸®ÀÚ·Î ÀÏÇÏ°í °è½Ê´Ï´Ù. ±Û¾´ÀÌ´Â Universidad Complutense of Madrid¿¡¼ ¹°¸®ÇÐÀ» Àü°øÇÏ¿´À¸¸ç ¸î¸î À¯´Ð½º À¯Æ¿¸®Æ¼¸¦ ¿ÀǼҽºÀÇ ÇüÅ·Π°³¹ßÇØ¿À°í °è½Ê´Ï´Ù. ¼ø ¼:µé¾î°¡´Â ±Û °³¹ßµ¿±â M4 ÀÛµ¿¿ø¸® »ç¿ëÀÚ°¡ CGI·Î Á¤º¸Àü´ÞÇϱ⠴ٿî·Îµå |
¿ä¾à:
ÀÌ ±Û¿¡¼´Â HTMLÆäÀÌÁö¿¡¼ µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â
»õ·Î¿î ÇÁ·Î±×·¥¿¡ ´ëÇØ À̾߱âÇÏ°íÀÚ ÇÕ´Ï´Ù. ÀÌ ÇÁ·Î±×·¥ÀÌ ¼³°èµÈ ¸ñÀûÀº
µ¥ÀÌÅÍÁ¢±ÙÀ» ÅëÁ¦ÇÏ°í, ȯ°æ¼³Á¤¿¡¼ À¯¿¬¼ºÀ» ȹµæÇϸç, ·¹À̾ƿô Çü½Ä¿¡
µ¶¸³ÀûÀ¸·Î ¸¸µé¾îÁÖ´Â °ÍŸã´Ï´Ù. ÀÌ ÇÁ·Î±×·¥Àº ÃÖ±Ù 1³âµ¿¾È
Linux Journal°ú
LinuxFocus (www.linuxfocus.org)
¿¡¼ ¸¹ÀÌ µîÀåÇÏ´Â
M4¿¡ ´ëÇÑ ¸î¸î ±â»ç¸¦ Àдٰ¡ ¶°¿À¸¥ »ý°¢µéÀ» ¸ð¾Æ¼ °³¹ßÇÑ °ÍÀÔ´Ï´Ù.
ÀÌ ±ÛÀ» ÅëÇØ ³ª´Â ¿©·¯ºÐ²² À¥À» ÅëÇÏ¿© µ¥ÀÌÅͺ£À̽º¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ°ÔÇÏ´Â ÆÐÅ°Áö¸¦ °³¹ßÇÏ°Ô µÈ ¾ÆÀ̵ð¾î¿Í ±Ùº»¿ø¸®¿¡ ´ëÇØ À̾߱âÇÏ°íÀÚ ÇÑ´Ù. Áï PG2CGIÆÐÅ°Áö¿¡ ´ëÇÑ »ç¿ë¼³¸í¼¸¦ ¾²±â À§ÇÏ¿© Àû´Â °ÍÀÌ ¾Æ´Ï¶ó °£´ÜÇÑ ¼Ò°³¿Í ¼ÒÇÁÆ®¿þ¾î¸¦ »ç¿ëÇØ º¸°í µ¶ÀÚµéÀÌ Æò°¡¸¦ Çغ» ´ÙÀ½ ¿©·¯ºÐÀÇ Çǵå¹éÀ» º¸³»Áֱ⸦ ±â´ëÇÏ¸é¼ ÀÌ ±ÛÀ» Àû´Â´Ù. (ÀÌ¹Ì Âü°íÇÒ¸¸ÇÑ °¡À̵尡 ÇÁ·Î±×·¥ÀÇ ¹èÆ÷ÆÇ¿¡ µé¾î ÀÖ´Ù. ÀÌ ¹èÆ÷ÆÇÀÌ ÀÖ´Â URLÀº ÀÌ ±Û µÚ¿¡ ÀÖ´Ù.)
³ª´Â ¸®´ª½ºÀú³Î°ú ¸®´ª½ºÆ÷Ä¿½º¿¡¼ HTML¼Ò½º¸¦ °ü¸®Çϱâ À§ÇÏ¿© M4¸¦ »ç¿ëÇÏ´Â °Í¿¡ ´ëÇÑ ¿¬Àç±â»çÀÇ °á°ú¹°·Î ÀÌ ÇÁ·Î±×·¥À» °³¹ßÇÏ¿´´Ù. ¿¬ÀçµÈ ±ÛµéÀº À¥ÆäÀÌÁö¸¦ °ü¸®ÇÏ´Â µ¶¸³½ÇÇàÇü µµ±¸·Î¼, µ¿ÀûÀ¸·Î ³»¿ëÀ» »ý¼ºÇÏ´Â µµ±¸·Î¼ÀÇ M4ÀÇ ÀáÀ缺°ú À¯¿ë¼ºÀ» º¸¿©ÁÖ¾ú´Ù.
¹Ý¸é ¸Å¿ì ´Ù¾çÇÑ À¥ ¼¹ö³ª µ¥ÀÌÅͺ£À̽º¸¦ ÀÌ¿ëÇÏ´Â °ÍÀº ¾çÂÊ È¯°æ»çÀ̸¦ ¿¬°áÇØÁÖ´Â À¯Æ¿¸®Æ¼ÀÇ ºÎÁ·À» °¡Á®¿Ô´Ù.(´ëºÎºÐÀÇ ÀÌ·± ´Ù¸® ¿ªÇÒÀ» ÇÏ´Â ÀÀ¿ëÇÁ·Î±×·¥µéÀº »ó¾÷¿ëÀ̰ųª ´Ù·ê ¼ö Àִ ƯÁ¤ Çü½Ä¿¡ µû¶ó¾ß ÇÏ´Â ½É°¢ÇÑ ÀÇÁ¸¼ºÀ» °¡Áö°í ÀÖ´Ù.)
ÀÌ·¯ÇÑ ¼ÒÇÁÆ®¿þ¾î ÆÐÅ°ÁöµéÀº µ¥ÀÌÅͺ£À̽º¿Í À¥ ȯ°æÀ» Çϳª·Î ÅëÇÕÇØÁØ´Ù. ±×·¯±â À§Çؼ ´ÙÀ½°ú °°Àº ¿ä±¸Á¶°ÇÀ» ¸¸Á·ÇÏ¿©¾ß ÇÑ´Ù.:
ÇÊÀÚ°¡ ¾Ë°íÀÖ´Â HTML°ú µ¥ÀÌÅͺ£À̽º¸¦ »óÈ£ÀÛµ¿ÇÏ°Ô ÇÏ´Â À¯Æ¿¸®Æ¼ÀÇ ´ëºÎºÐÀº HTMLÀÇ È®ÀåÅ×±×ÁýÇÕÀ» ÀÌ¿ëÇÏ¿© Ãâ·Â°á°ú¹°À» ¸¸µé¾î ³½´Ù; ÀÌ·¯ÇÑ »õ·Î¿î ű׵éÀº ÀÌÈÄ '¸ÅÅ©·Î(macro)'·Î ÀÛµ¿µÈ´Ù. ±×·¯³ª ÀÌ·¯ÇÑ ¹æ¹ýÀº ½É°¢ÇÑ ´ÜÁ¡À» °¡Áö°í ÀÖ´Ù: ¿ì¸®´Â ´ëºÎºÐÀÇ ½Ã°£À» ¿ø·¡ÀÇ HTMLÅÂ±×µé »çÀÌ¿¡¼ °¢ ¿ä¼ÒµéÀ» ¼öÁ¤Çϴµ¥ ¾²°Ô µÇ°í ÀÌ·¯ÇÑ Á¡Àº Áß¿äÇÑ Á¦¾àÁ¶°ÇÀÌ µÈ´Ù. Á¾Á¾ ÀÌ·¯ÇÑ À¯Æ¿¸®Æ¼µéÀº ÇöÀç Á¸ÀçÇÏ´Â HTMLű׵é»çÀÌ¿¡¼ Ư¼öÇÑ È¿°ú¸¦ ³»±â À§ÇÏ¿© Àç»ç¿ëµÇ°ï ÇÑ´Ù. ³» ÇÁ·Î±×·¥¿¡¼´Â ÇÊ¿äÇÑ ¸ÅÅ©·Î ´ë¿ëÇ°À¸·Î µ¿ÀÛÇϱâ À§ÇÏ¿© M4¸¦ »ç¿ëÇÑ´Ù. ÀÌ ÇÁ·Î±×·¥Àº ¾î¶² Çü½ÄÀ¸·Î µÈ ¹®¼¸¦ »ý¼ºÇÏÁö ¾Ê´Âµ¥, °á±¹ ÃÖÁ¾ÀûÀ¸·Î ¾ò¾îÁö´Â Çü½Ä¾ð¾î¿¡ »ç¿ëµÇ´Â °Í°ú µ¶¸³ÀûÀ¸·Î µÇ°Ô µÈ´Ù. ÇÁ·Î±×·¥Àº ÁúÀÇ(Äõ¸®;query)ÀÇ °á°ú·Î ¸ÅÅ©·ÎµéÀÇ ÁýÇÕÀ» ¸¸µé¾î ³½ ´ÙÀ½ M4°¡ ÀÌ·¯ÇÑ ¸ÅÅ©·ÎÀÇ ÁýÇÕ°ú ÁÖ¾îÁø HTMLÅÛÇø´À» ÀÌ¿ëÇÏ¿© HTML¹®¼¸¦ ¸¸µé¾î ³»°Ô µÈ´Ù.
ÀÌ ¶§ À¯Æ¿¸®Æ¼´Â ¿ä±¸Á¶°ÇµéÀ» ¸¸Á·½ÃÅ°±â À§ÇÏ¿© È¿À²¼º¸é¿¡¼ ¾à°£ÀÇ Á¶±×¸¶ÇÑ ºÒÀÌÀÍÀ» °¨¼öÇÑ´Ù.(À¯Æ¿¸®Æ¼´Â ½ÇÇàµÇ´Â µ¿¾È M4¸¦ ¿©·¯ºÐ È£ÃâÇÏ°Ô µÈ´Ù.) ±×·¯³ª ±× °á°ú´Â ´ëºÎºÐÀÇ °æ¿ì ¸¸Á·½º·´´Ù.(´ëºÎºÐÀÇ °æ¿ì¸¦ °í·ÁÇغ¸¸é HTML¹®¼¸¦ µ¿ÀûÀ¸·Î »ý¼ºÇϱâ À§ÇÏ¿© µ¥ÀÌÅͺ£À̽ºÀÇ ÁúÀÇ´Â ÀÌ¹Ì ¿©·¯ºÐ ¼öÇàµÇ¾î ÀÖ´Ù.)
M4´Â ¿À·¡Àü¿¡ °³¹ßµÈ ¸ÅÅ©·Î ó¸® µµ±¸ÀÌ´Ù. ¿ì¸®°¡ ¸¸µç ¼ÒÇÁÆ®¿þ¾î´Â ÀÌ ¸ÅÅ©·Î󸮱⸦ ¸Å¿ì À¯¿ëÇÏ°Ô »ç¿ëÇÑ´Ù.:
M4´Â ¿ø·¡ PostgreSQLµ¥ÀÌÅͺ£À̽º¿Í CGI(Common Gateway Interface)¸¦ ¿¬°áÇϱâ À§ÇÏ¿© °³¹ßµÇ¾ú´Ù. ±×·¯³ª ¾ó¸¶ÈÄ »ç¶÷µéÀº ÀÌ°ÍÀÌ CGI»Ó¸¸ ¾Æ´Ï¶ó ´Ù¸¥ ÀÎÅÍÆäÀ̽º¿¡ »ç¿ëÇϱ⿡µµ ÃæºÐÈ÷ ÀϹÝÀûÀ̶ó´Â »ç½ÇÀ» ¾Ë ¼ö ÀÖ¾ú´Ù.(¿¹¸¦ µéÀÚ¸é LDAP¼¹ö¿Í ÀÎÆ÷¹Í½º³ª ¿À¶óŬ°ú °°Àº ´Ù¸¥ µ¥ÀÌÅͺ£À̽ºÀÇ °ÔÀÌÆ®¿þÀÌ(gateway)·Îµµ »ç¿ëµÈ´Ù.) ÀÌÈÄ ÀÎÅÍÆäÀ̽º´Â ÇÊ¿äÇÑ ±â´ÉÀ» ¸ðµÎ ÅëÇÕÇϱâ À§ÇÏ¿© Ç¥ÁØȵǾúÀ¸¸ç PostgreSQLÀÇ ¸ðµâµéÀº ÀÌ·¯ÇÑ »õ·Î¿î ÀÎÅÍÆäÀ̽º¿¡ µû¶ó ´Ù½Ã °³¹ßµÇ¾ú´Ù. ÇöÀç ´Ù¸¥ µ¥ÀÌÅͺ£À̽º °ü¸®ÀÚ¸¦ ¿¬°áÇØÁÖ´Â ÇÁ·Î±×·¥À» ¸¸µé±â À§ÇÑ »õ·Î¿î µå¶óÀ̹öµéÀ» ¸¸µå´Â °ÍÀÌ °¡´ÉÇÏ´Ù. |
ÀÌ·¯ÇÑ ¸ÅÅ©·Î󸮱âÀÇ ¹Ýº¹»ç¿ëÀº GNUÀÇ M4À¯Æ¿¸®Æ¼·Î °Ë»çÇÏ´Â °ÍÀ» Àß ¸¸Á·½ÃÄÑÁÖÁö¸¸ °á±¹ È¿À²¼º¸é¿¡¼ ¼Õ½ÇÀ» °¡Á®¿Â´Ù.
ÀÌ À¯Æ¿¸®Æ¼´Â ÁÖ¾îÁø ¼³Á¤±ÔÄ¢ÀÌ ¿ÇÀºÁö ±×¸¥Áö¸¦ È®ÀÎÇϱâ À§ÇÏ¿© Á¤±ÔÇ¥Çö½ÄÀ» ¾ö°ÝÈ÷ »ç¿ëÇÑ´Ù. Á¤±ÔÇ¥Çö½ÄÀº ¿ì¸®¿¡°Ô ¸Å¿ì Æí¸®ÇÑ ±â´ÉÀ» Á¦°øÇϱ⠶§¹®¿¡ °£´ÜÇÑ ºñ±³º¸´Ù ´õ ¼±È£µÇ°í ÀÖ´Ù. Á¤±ÔÇ¥Çö½ÄÀº ´ÙÀ½°ú °°Àº ÀåÁ¡À» °¡Áö°í ÀÖ´Ù.:
|
ÇϳªÀÇ Á¤±ÔÇ¥Çö½Ä¿¡¼ º¹¼öÀÇ ÇÏÀ§Ã¼Àεé·Î ±×·ìÈÇÒ ¼ö Àֱ⶧¹®¿¡ Ç¥Çö½ÄÀÇ ¹®¹ý°ú Á¤±ÔÇ¥Çö½Ä¿¡¼ µå¶óÀ̹ö·Î Àü´ÞÇϱâ À§ÇÑ µ¥ÀÌÅÍÀÇ ÆĽÌÀº ½±°Ô ÀÌ·ç¾îÁø´Ù.
ÇÑ ¿¹¸¦ »ìÆ캸ÀÚ: Ŭ¶óÀ̾ðÆ®°¡ ÀßÀǹ®¿¡ ¾î¶² Á¤º¸¸¦ Àü´ÞÇÏ·Á ÇÑ´Ù¸é ±× µ¥ÀÌÅ͵éÀº ´ÙÀ½ ¹®¹ý¿¡ ¾Ë¸Â°Ô ¹Ù²î¾îÁ®¾ß ÇÑ´Ù.:
Ç׸ñ=°ª
ÁúÀǹ®Àº ÀÌ Çü½ÄÀ» ¸¸Á·ÇØ¾ß Çϱ⠶§¹®¿¡ ¹®Àå¿¡ ºÎ°¡Àû Á¤º¸°¡ ÀÖÀ» ¼ö ¾ø´Ù.
¼±ÅñÔÄ¢¿¡¼ ´ÙÀ½ Á¶°ÇÀ» ¾µ ¶§ ÀÌ ¹®¹ýÀ» ¹Ýµå½Ã »ç¿ëÇÏ´Â °ÍÀº ½¬¿î ÀÏÀÌ´Ù.:
QUERY_STRING: "^FIELD=[^&]*$";
À ÁÙÀº ÁúÀǹ®ÀÌ ÀûÀýÇÑ ¹®¹ýÀ» ¸¸Á·ÇÒ °æ¿ì¿¡¸¸ ±ÔÄ¢µéÀÌ È£ÃâµÇ´Â °ÍÀ» º¸ÀåÇÑ´Ù. À§ÀÇ ¿¹¿¡¼ Ç׸ñÀÇ °ªÀ» °ýÈ£·Î ¹À» °æ¿ì ÇÁ·Î±×·¥Àº ÀÏÄ¡ÇÏ´Â °ªÀ» ÆĽÌÇÒ ¼ö ÀÖ°Ô ÇØÁØ´Ù.:
QUERY_STRING: "^FIELD=([^&]*)$";
ÀÌ °úÁ¤¿¡¼ ÇÁ·Î±×·¥Àº ³×ºñÄÉÀÌÅÍ¿¡ ÀÇÇØ ¸¸µé¾îÁö´Â %xxÇü½ÄÀ¸·Î Àü´ÞµÇ´Â °ªÀ» ÀûÀýÇÑ °ªÀ¸·Î º¯È¯½ÃÄÑÁØ´Ù.
ÀÌÁ¦ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö À̾߱â Çغ¸ÀÚ. óÀ½À¸·Î ½ÇÇàµÇ¸é ÇÁ·Î±×·¥Àº À¥¼¹ö·ÎºÎÅÍ È¯°æº¯¼öµéÀÇ °ªÀ» ¹Þ¾Æ¼ ±× °ªµéÀ» ÀÌ¿ëÇÏ¿© ½º½º·Î ÀûÀýÇÑ È¯°æ¼³Á¤À» ÇØÁØ´Ù. ȯ°æº¯¼ö´Â ÇÁ·Î±×·¥ÀÌ È®ÀÎÇغ¸´Â ¸ðµç °ÍµéÀÌ´Ù.:Ŭ¶óÀ̾ðÆ®°¡ ¹«¾ùÀΰ¡? ¾î¶² ¿äûÀÌ ÀÌ·ç¾îÁ³´Â°¡? ¿äûÀÇ ³»¿ëÀº ¹«¾ùÀΰ¡? Ŭ¶óÀ̾ðÆ®°¡ Áö¿øÇÏ´Â Á¤º¸ÀÇ Çü½Ä(MIMEÇü½Ä)Àº ¹«¾ùÀΰ¡?µîµî.... PG2CGI´Â ±× ´ÙÀ½ ±ÔÄ¢ÀÇ ¿ÞÂÊ¿¡ »ç¿ëµÇ´Â ±ÔÄ¢À» ¼±ÅÃÇÑ´Ù. ÇöÀç´Â ¼¼°¡ÁöÇü½ÄÀÇ ±ÔÄ¢ÀÌ Á¦°øµÈ´Ù.:
QUERY_STRING: "^FIELD=([^&]*)$";
! HTTP_ADDRESS: "^194\.142\.12\.";(ÀÌ ¿¹¿¡¼ ¸¸¾à ¿äûÀÌ 194.142.12.xxx¹øÁö¿¡¼ ÀÌ·¯¾îÁ³´Ù¸é ±ÔÄ¢ÀÌ ¹«È¿°¡ µÈ´Ù.)
[ QUERY_STRING: "USER=([^&]*)" ];ÀÌ °æ¿ì´Â Ŭ¶óÀ̾ðÆ®°¡ °ªÀ» ÁØ´Ù¸é »ç¿ëÀÚ(user)ÀÇ °ªÀ» Àü´ÞÇÒ ¼ö ÀÖ°ÔÇØÁØ´Ù. ±×·¯³ª Ŭ¶óÀ̾ðÆ®°¡ °ªÀ» Á¤ÇÏÁö ¾Ê´Â´Ù¸é ±ÔÄ¢À» ¹«È¿ÈÇÏÁö ¾Ê´Â´Ù.
ÀÌ·¯ÇÑ ¹æ¹ýÀ¸·Î ±ÔÄ¢À» ¸¸µé¼ö ÀÖ´Ù. ´ÙÀ½¿¡´Â ¿ì¸®´Â ±ÔÄ¢¿¡¼ À¯È¿ÇÑ ¿ÞÂÊÇ׸ñÀ» Á¤Çϱâ À§ÇÏ¿© ¸¹Àº Á¶°ÇµéÀ» ¹´Â´Ù. Á¶°ÇµéÀº Áß°ýÈ£ "{}"»çÀÌ¿¡ À§Ä¡ÇÑ´Ù.
±ÔÄ¢ÀÇ ¿À¸¥ÂÊ°ú ¿ÞÂÊÀº Áß°ýÈ£"{}"·Î ±¸ºÐÀ» ÇÔÀ¸·Î½á °æ°è¸¦ ³ªÅ¸³½´Ù. ±×¸®°í ¿ÞÂÊ°ú ¿À¸¥ÂÊÀº '->'±âÈ£¸¦ ÀÌ¿ëÇÏ¿© ±¸ºÐµÈ´Ù.
¿À¸¥ÂÊ Ç׸ñµéÀº µ¿ÀÏÇÑ ±¸¹®À» °¡Áø Á¶°ÇµéÀÌ µé¾îÀÖ´Ù.: º¯¼öÀÇ À̸§,':'¹®ÀÚ, ¹®ÀÚ¿°ú Á¾°áÀ» ÀǹÌÇÏ´Â ';'¹®ÀÚ. ¿À¸¥ÂÊ¿¡ ÀÖ´Â ¸ðµç Á¶°ÇÀº M4¿¡ ÀÇÇØ ¼öÇàµÇ¾îÁ® ÁÖ¾îÁø °ªÀ» º¯¼ö¿¡ ÇÒ´çÇÏ´Â °ÍÀÌ´Ù.:
´Ù¸¥ º¯¼ö´Â ÅÛÇø´ÆÄÀÏÀ̳ª ÀûÀýÇÑ µå¶óÀ̹ö¿¡ ÀÇÇØ »ç¿ëµÇ¾îÁú ¼öµµ ÀÖ´Ù.
¸Å¿ì °£´ÜÇÏ´Ù. °¢°¢ÀÇ ±ÔÄ¢¿¡¼ ¿ÞÂÊ¿¡ ÀÖ´Â Á¤±ÔÇ¥Çö½ÄÀ¸·ÎºÎÅÍ ±×·ìµéÀÌ ¸¸µé¾î Áö´Âµ¥ ÀÌ ±×·ìµéÀº °¢°¢ º¯¼ö·Î º¯È¯µÇ¾îÁø´Ù.(ÀÌ »õ·Î¿î º¯¼öµéÀÇ À̸§Àº `term_<i>_match_<j>'°ú °°Àº Çü½ÄÀÌ´Ù. À̶§ <i>´Â ±ÔÄ¢¿¡ »ç¿ëµÈ ¼ø¼¹øÈ£ÀÌ´Ù.(°á±¹ ù Á¶°ÇÀº 1À», µÎ¹ø° Á¶°ÇÀº 2¸¦ °¡Áö´Â ÇüÅ°¡ µÈ´Ù.) ¸¸¾à Ŭ¶óÀ̾ðÆ®·Î ºÎÅÍ ´ÙÀ½°ú °°Àº ÁúÀǹ®ÀÌ Àü´ÞµÇ¾ú´Ù°í ÇÏÀÚ.:
À¥½ÎÀÌÆ®¿¡ ¼±¾ðµÈ ±ÔÄ¢Àº ´ÙÀ½°ú °°´Ù.:
QUERY_STRING: "NAME=([^&]*)"; QUERY_STRING: "FAMNAME1=([^&]*)"; QUERY_STRING: "FAMNAME2=([^&]*)";°á°ú´Â ´ÙÀ½°ú °°ÀÌ µÉ °ÍÀÌ´Ù.::
term_0_match_0 <- "NAME=JOSE"; term_0_match_1 <- "JOSE"; term_1_match_0 <- "FAMNAME1=DE LA FUENTE"; (°ø¹éÀº +¹®ÀÚ·Î ¹Ù²î¾îÁüÀ» ¾Ë ¼ö ÀÖ´Ù.) term_1_match_1 <- "DE LA FUENTE"; term_2_match_0 <- "FAMNAME2=LOPEZ"; term_2_match_1 <- "LOPEZ";µå¶óÀ̹ö:
ÀÌ ±Û¿¡¼ ±¸Ã¼ÀûÀ¸·Î µå¶óÀ̹ö¿¡ °üÇÑ À̾߱â´Â ÇÏÁö ¾Ê¾Ò´Ù. ±×·¯³ª ÀÌ¹Ì PG2CGI¹èÆ÷ÆÇ¿¡ µé¾î ÀÖ´Â ¹®¼ÀڷḦ ÅëÇØ µå¶óÀ̹öÀÇ »ç¿ë¹æ¹ýÀ» ¼³¸íÇß´Ù. °ü½ÉÀÌ ÀÖ´Â µ¶ÀÚ¶ó¸é ²À Âü°í¼³¸í¼¿¡ Æ÷ÇԵǾî ÀÖ´Â ±ÛÀ» Àо±â ¹Ù¶õ´Ù.
POSTGRESQL·Î ¿î¿µµÇ´Â µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áÇÏ´Â °æ¿ì¿¡´Â ´Ü ÇϳªÀÇ µå¶óÀ̹ö°¡ »ç¿ëµÈ´Ù ±×·¯³ª ÀÌ¹Ì °³¹ßÀÚ´Â LDAPÇü½ÄÀÇ µ¥ÀÌÅͺ£À̽º¸¦ À§ÇÑ ´Ù¸¥ µå¶óÀ̹ö¸¦ °³¹ßÇÒ °èȹÀ» °¡Áö°í ÀÖ´Ù.
º¸±â:
ÀüüÀûÀÎ ¿¹Á¦ ¼Ò½º¸¦ »ìÆ캸ÀÚ
slug.ctv.es¿¡ ÀÖ´Â °øÁö»çÇ×°ú °ü·ÃµÈ µ¥ÀÌÅͺ£À̽º¿¡¼ °øÁö»çÇ× Å×À̺íÀ» ¸¸µé¾îº¸ÀÚ. ÀÌ´Â Å×ÀÌºí¿¡¼ °¢°¢ÀÇ ·¹Äڵ带 ã¾Æº¸°Å³ª Àüü ¸ñ·ÏÀ» ¸¸µé±â À§ÇÏ¿© µÎ°³ÀÇ ÅÛÇø´À» »ç¿ëÇÏ´Â °¡Àå ´Ü¼øÇÑ ¿¹ÀÌ´Ù.
{ PATH_INFO: "^/avisos/?$"; # PATH_INFOº¯¼ö¿¡ ÀÇÇØ ¼±ÅõȴÙ. [SERVER_ADMIN: ".*"]; # SERVER_ADMINÀ¸·ÎºÎÅÍ Á¤º¸¸¦ ¾ò´Â´Ù. ¼±ÅûçÇ× } -> { DRIVER: "POSTGRESQL"; PGTTY: "/dev/console"; # ÄַܼΠ·Î±×Çϵµ·Ï ÇÑ´Ù. PGDATABASE: "postgres"; # ¿ì¸®´Â Ç×»ó ÁúÀǸ¦ ÇÑ´Ù.(´Ã ³»ºÎÀûÀ¸·Î ÅÛÇø´ÆÄÀÏ¿¡¼ °³º°ÀûÀÎ ·¹ÄÚµåµéÀ» # ¿¬°áÇϱâ À§ÇÏ¿© ÁúÀǹ®À» »ç¿ëÇÑ´Ù.) PGQUERY: "select oid,ct,titulo,texto,mt" " from avisos" " where (dt is NULL or dt > 'now')" " order by mt desc"; # ÆÄÀÏÀº ÅÛÇø´À» °¡Áö°í ÀÖ´Ù. M4FILE: "/usr/local/etc/httpd/plantillas_m4/avisos.m4"; WEBMASTER: "term_1_match_0"; #TESTMODE: "TRUE"; } # ´ÙÀ½ ¼±ÅñÔÄ¢Àº ¾Ë·ÁÁø ¿ì¼±Å°°ªÀÎ OID¸¦ °¡Áö´Â °øÁö»çÇ×(aviso)¸¦ ¼±ÅÃÇÒ ¼ö # ÀÖµµ·Ï ÇØÁØ´Ù. ÀÌ Á¤º¸´ÂCGIÀÇ PATH_INFOº¯¼ö¿¡ Æ÷ÇԵǾî ÀÖ´Ù. { PATH_INFO: "^/avisos/([0-9]+)/?$"; SERVER_ADMIN: ".*"; } -> { DRIVER: "POSTGRESQL"; PGTTY: "/dev/console"; # ¾Õ¿¡¼ ó·³ ÄַܼΠ·Î±×ÇÑ´Ù. PGDATABASE: "postgres"; OID: "term_0_match_1"; # OID¸¦ ºÎ¿©ÇÑ´Ù. # Çѹø´õ ¼±ÅÃÀÌ Áß¿äÇÏ´Ù. ¿ì¸®´Â ÇʵåÀÇ ½ÃÀۺκп¡ OID¸¦ Æ÷ÇÔ½ÃÅ°¸ç # ÀÌ°æ¿ì ¿ì¸®´Â ÀÌ ·¹Äڵ带 Áö¿ì±â À§ÇÑ ÇÏÀÌÆÛ¸µÅ©¸¦ Àû°Ô ÇÏ°í ½Í´Ù. PGQUERY: "select oid,ct,titulo,texto,mt,dt,autor" " from avisos" " where (dt is NULL or dt > 'now') and oid=OID"; # ÀÌÁ¦ ÅÛÇø´ÀÌ ¼·Î ´Ù¸£´Ù. M4FILE: "/usr/local/etc/httpd/plantillas_m4/avisos_oid.m4"; WEBMASTER: "term_1_match_0"; #TESTMODE: "TRUE"; } |
define(<<<for>>>, <<<dnl
ifelse(eval((<<<$2>>>) <= (<<<$3>>>)), 1, <<<define(<<<$1>>>,<<<$2>>>)$4<<<>>>dnl for(<<<$1>>>,eval(<<<$2>>>+1),<<<$3>>>, <<<$4>>>)dnl >>>)dnl >>>)dnl divert(0)dnl Mime-Version: 1.0 Content-type: text/html <HTML>
<!-- la tabla est\xe1 vac\xeda -->
>>>,<<<dnl /* PGRES_NTUPLES != 0 )( */
for(<<<i>>>,0,eval(PGRES_NTUPLES-1),<<<dnl
</table>
>>>)dnl /* PGRES_NTUPLES */ >>>,<<<dnl /* ifelse PGRES_RESULTSTATUS )(*/ Error en el resultado: <B>PGRES_RESULTSTATUS</b><BR>
>>>)dnl <CENTER><HR WIDTH=100></center>
|
divert(-1)
$Id: generic_list.m4,v 1.1 1998/07/06 17:13:33 luis Exp $ define(<<<cell>>>, <<<PGRES_CELL_$1_$2>>>) define(<<<field>>>, <<<PGRES_FNAME_$1>>>) define(<<<for>>>, <<<dnl ifelse(eval((<<<$2>>>) <= (<<<$3>>>)), 1, <<<define(<<<$1>>>,<<<$2>>>)$4<<<>>>dnl for(<<<$1>>>,eval(<<<$2>>>+1),<<<$3>>>, <<<$4>>>)dnl >>>)dnl >>>)dnl divert(0)dnl Mime-Version: 1.0 Content-type: text/html <HTML>
ifelse(PGRES_RESULTSTATUS, <<<PGRES_TUPLES_OK>>>,<<<dnl
<!-- la tabla est\xe1 vac\xeda -->
>>>,<<<dnl /* PGRES_NTUPLES != 0 )( */
>>>)dnl /* PGRES_NTUPLES */ >>>,<<<dnl /* ifelse PGRES_RESULTSTATUS )(*/ Error en el resultado: <B>PGRES_RESULTSTATUS</b><BR>
>>>)dnl <CENTER><HR WIDTH=100></center>
|
°á°ú´Â ÀÌ URL¿¡¼ º¼ ¼ö ÀÖ´Ù.:
http://slug.ctv.es/cgi-bin/pg2cgi/avisos/
http://slug.ctv.es/cgi-bin/pg2cgi/avisos/20384
´Ù¿î·Îµå
PG2CGIÇÁ·Î±×·¥Àº ´ÙÀ½ URLµé¿¡¼ ´Ù¿î·Îµå ¹ÞÀ» ¼ö ÀÖ´Ù.:
http://slug.ctv.es/~luis/utils/pg2cgi.tar.gz¹ø¿ª : ÀÌÁÖÈ£
º» À¥½ÎÀÌÆ®´Â Miguel Ángel Sep?veda´Ô¿¡ ÀÇÇØ °ü¸®µÇ°í ÀÖ½À´Ï´Ù. © Luis Colorado 1998 LinuxFocus 1999 |