³¯Â¥: 1996-04-22 | ±Û¾´ÀÌ: µµ¾Æ | 13413 ¹ø | ÇÁ¸°Æ® | ¸ÞÀϷκ¸³»±â

Á¦ 22°­ - CGI¿ë ¶óÀ̺귯¸®(cgi-lib.pl)


cgi-lib.plÀº ÆÞ¿ë CGI Library·Î¼­ °¡Àå º¸ÆíÀûÀ¸·Î »ç¿ëµÈ´Ù. ±â´É¸é¿¡¼­´Â CGI.pm¿¡ºñÇØ ¶³¾îÁöÁö¸¸ »ç¿ëÇϱ⽱¿ì¸ç, CGI ÇÁ·Î±×·¡¹Ö¿¡ ÇÊ¿äÇÑ ÇÙ½ÉÀûÀÎ ¼­ºê·çƾÀ» Æ÷ÇÔÇϱ⶧¹® ¸¹ÀÌ »ç¿ëµÇ°í ÀÖ´Ù.

cgi-lib.plÀº ´ÙÀ½ »çÀÌÆ®¿¡¼­ ¹®¼­, ¿¹Á¦¿Í ÇÔ²² ±¸ÇÒ ¼ö ÀÖ´Ù.

http://cgi-lib.stanford.edu/cgi-lib/

ÇöÀç ÃֽŠ¹öÀüÀº 2.17À̸ç, ´ÙÀ½ ÁÖ¼Ò¿¡¼­ ¶óÀ̺귯¸®¸¸ ¹Ù·Î ´Ù¿î ¹ÞÀ» ¼ö ÀÖ´Ù. http://cgi-lib.stanford.edu/cgi-lib/2.17/cgi-lib.pl.txt ReadParse »ç¿ëÇü½Ä

&ReadParse;
FORM µ¥ÀÌÅÍ´Â %inÀ̶ó´Â ¿¬°ü¹è¿­¿¡ ÀúÀåµÈ´Ù. µû¶ó¼­ &ReadParse¸¦ È£ÃâÇÑ ÈÄ, $in{'name'}°ú °°Àº Çü½ÄÀ¸·Î ÂüÁ¶ÇÑ´Ù.
&ReadParse(*FORM);
FORM µ¥ÀÌÅÍ´Â %FORMÀ̶ó´Â ¿¬°ü¹è¿­¿¡ ÀúÀåµÈ´Ù. µû¶ó¼­ &ReadParse¸¦ È£ÃâÇÑ ÈÄ, $FORM{'name'}°ú °°Àº Çü½ÄÀ¸·Î ÂüÁ¶ÇÑ´Ù.
¼³¸í

cgi-lib.pl¿¡¼­ °¡Àå ÇÙ½ÉÀûÀÎ ·çƾÀ¸·Î ÆûÀÔ·Â µ¥ÀÌÅ͸¦ µðÄÚµùÇÑ´Ù. ÇöÀç GET, HEAD, POSTÀÇ ¸Þ¼Òµå¸¦ Áö¿øÇϸç, Netscape¿¡¼­ Áö¿øÇϱ⠽ÃÀÛÇÑ File Upload ±â´É±îÁö Áö¿øÇÑ´Ù. Off-Line Mode Áö¿ø

Method°¡ ÁÖ¾îÁöÁö ¾ÊÀ¸¸é ¸í·ÉÇà ÀÎÀڷκÎÅÍ º¯¼ö¸¦ ÀоîµéÀδÙ. ÀÌ ±â´ÉÀº CGI µð¹ö±ë¿¡ ¾ÆÁÖ À¯¿ëÇÑ ±â´ÉÀ¸·Î¼­ Unix ¸í·ÉÇà¿¡¼­

env.cgi name=value

¿Í °°ÀÌ ÀÔ·ÂÇϸé À¥ºê·Î¿ìÀú¿¡¼­

http://david.bit.co.kr/cgi-bin/env.cgi?name=value

¸¦ ÀÔ·ÂÇÑ °Í°ú µ¿ÀÏÇÏ°Ô µ¿ÀÛÇÑ´Ù. PrintHeader

&PrintHeader;
CGIÀÇ Ãâ·ÂÇì´õÁß content-type: text/htmlÀ» Ãâ·ÂÇÑ´Ù.

ÁÖÀÇ: &PrintHeaderÀ» È£ÃâÇÏ´Â °Í¸¸À¸·Î´Â ¾Æ¹« È¿°ú°¡ ¾øÀ¸¸ç ¹Ýµå½Ã print ¹®°ú ÇÔ²² »ç¿ëÇØ¾ß ÇÑ´Ù. HtmlTop

&HtmlTop($var);
&HtmlTop´Â ´ÙÀ½°ú °°Àº HTMLÀÇ ½ÃÀۺκÐÀ» Ãâ·ÂÇÑ´Ù.

<html>
<head>
<title>$var</title>
</head>
<body>
<h1>$var</h1>

ÁÖÀÇ: &HtmlTopÀ» È£ÃâÇÏ´Â °Í¸¸À¸·Î´Â ¾Æ¹« È¿°ú°¡ ¾øÀ¸¸ç ¹Ýµå½Ã print ¹®°ú ÇÔ²² »ç¿ëÇØ¾ß ÇÑ´Ù. HtmlBot

&HtmlBot;
&HtmlBot;´Â ´ÙÀ½°ú °°Àº HTMLÀÇ Á¾·áºÎºÐÀ» Ãâ·ÂÇÑ´Ù.

</body>
</html>

ÁÖÀÇ: &HtmlBotÀ» È£ÃâÇÏ´Â °Í¸¸À¸·Î´Â ¾Æ¹« È¿°ú°¡ ¾øÀ¸¸ç ¹Ýµå½Ã print ¹®°ú ÇÔ²² »ç¿ëÇØ¾ß ÇÑ´Ù. ¿¹1

 1: #! /usr/local/bin/perl
 2: require './cgi-lib.pl';
 3: 
 4: &ReadParse;
 5: print &PrintHeader;
 6: print &HtmlTop("ReadParse ·çƾ ½ÃÇè");
 7: print "<PRE>\n";
 8: foreach $key (keys %in) {
 9: 	print "$key	= $in{$key}\n";
10: }
11: print "<PRE>\n";
12: print &HtmlBot;
½ÇÇà°á°ú

À̸§: ¾ÏÈ£:
SplitParam
&SplitParam($var);
´ÙÁß Æûµ¥ÀÌŸ(Select ű׿¡¼­ MULTIPLE ¼Ó¼ºÀ» ÁØ°æ¿ì)ÀÇ °ªÀ» ºÐ¸®Çؼ­ ¹è¿­·Î ¸®ÅÏÇÑ´Ù.
MethGet, MethPost
&MethGet;
¿äû¹æ¹ý(REQUEST_METHOD)ÀÌ GET(&MethGET)À̸é ÂüÀ» ¸®ÅÏÇÑ´Ù.
&MethPost;
¿äû¹æ¹ý(REQUEST_METHOD)ÀÌ POST(&MethPost)À̸é ÂüÀ» ¸®ÅÏÇÑ´Ù.
MyBaseUrl, MyFullUrl, MyURL
&MyBaseUrl; &MyURL;
Ãß°¡ÀûÀÎ °æ·ÎÁ¤º¸¿Í ÁúÀÇÁ¤º¸¸¦ Á¦¿ÜÇÑ ¼ø¼öÇÑ URLÀ» ¸®ÅÏÇÑ´Ù.
&MyFullUrl;
Ãß°¡ÀûÀÎ °æ·ÎÁ¤º¸¿Í ÁúÀÇÁ¤º¸¸¦ Æ÷ÇÔÇÑ ¿ÏÀüÇÑ URLÀ» ¸®ÅÏÇÑ´Ù.
PrintVariables
&PrintVariables;
%in(&ReadParse¸¦ ÀÎÀÚ ¾øÀÌ È£ÃâÇÑ °æ¿ì)ÀÇ °ª(Æûµ¥ÀÌŸ)¸¦ Ãâ·ÂÇÑ´Ù.
&PrintVariables(%HASH);
ÁÖ¾îÁø ¿¬°ü¹è¿­ÀÇ ³»¿ëÀ» Ãâ·ÂÇÑ´Ù.
&PrintVariables(*FORM);
%FORMÀÇ ³»¿ëÀ» Ãâ·ÂÇÑ´Ù.

ÁÖÀÇ: &PrintVariablesÀ» È£ÃâÇϱâÀü¿¡ ¹Ýµå½Ã &ReadParse¸¦ ¸ÕÀú È£ÃâÇϰųª ÀÎÀÚ¸¦ ÁÖ°í È£ÃâÇØ¾ß ÇÑ´Ù. PrintEnv

&PrintEnv;
ÇöÀç ¼³Á¤µÈ ¸ðµç ȯ°æº¯¼ö¸¦ Ãâ·ÂÇÑ´Ù. &PrintEnv´Â ³»ºÎÀûÀ¸·Î &PrintVariables(*ENV)¸¦ ÀÌ¿ëÇؼ­ ±¸ÇöµÈ´Ù.
¿¹ 2

 1: #! /usr/local/bin/perl
 2: 
 3: require './cgi-lib.pl';
 4: &ReadParse;
 5: 
 6: if(&MethGet) {
 7:     print &PrintHeader;
 8:     print &HtmlTop("¿äû¹æ¹ý: GET");
 9:     print "<p>񃧯 URL: ", &MyBaseUrl, "\n";
10:     print "<p>¿ÏÀüÇÑ URL: ", &MyFullUrl, "\n";
11:     print "<p>´ÙÀ½Àº ÇöÀç ¼³Á¤µÈ ¸ðµç º¯¼öÀÔ´Ï´Ù\n";
12:     print &PrintVariables;
13:     print &PrintVariables(*ENV);
14:     exit;
15: }
16: 
17: if(&MethPost) {
18:     print &PrintHeader;
19:     print &HtmlTop("¿äû¹æ¹ý: POST");
20:     print "<p>񃧯 URL: ", &MyBaseUrl, "\n";
21:     print "<p>¿ÏÀüÇÑ URL: ", &MyFullUrl, "\n";
22:     print "<p>´ÙÀ½Àº ÇöÀç ¼³Á¤µÈ ¸ðµç º¯¼öÀÔ´Ï´Ù\n";
23:     print &PrintVariables;
24:     print &PrintVariables(*ENV);
25:     exit;
26: }
½ÇÇà°á°ú

À̸§: ¾ÏÈ£:
CgiError
&CgiError;
CGIÀÇ Ãâ·Â Çì´õ, HTML Çì´õ¸¦ Æ÷ÇÔÇÑ ±âº»ÀûÀÎ ¿À·ù ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù.
&CgiError($var1, $var2);
CGIÀÇ Ãâ·Â Çì´õ, HTML Çì´õ¸¦ Ãâ·ÂÇϸç, $var1Àº TITLE ű׿¡ $var2´Â BODY ű×ÀÇ Pű׸¦ ÀÌ¿ëÇؼ­ Ãâ·ÂÇÑ´Ù.
CgiDie
&CgiDie;, &CgiDie($var1, $var2);
&CgiError°ú À¯»çÇÏ°Ô ¿À·ù ¸Þ½ÃÁö¸¦ Ãâ·ÂÇϸç, ¿À·ù ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ Á÷ÈÄ, ÇÁ·Î±×·¥À» Á¾·áÇÑ´Ù.
¿¹ 3 - Mail Gateway

´ÙÀ½ ¿¹´Â cgi-lib.plÀ» ÀÌ¿ëÇؼ­ ±¸ÇöÇÑ °£´ÜÇÑ Mail GatewayÀÌ´Ù. Network È¿À²À» À§ÇØ Æû °Ë»ç´Â CGI°¡ ¾Æ´Ï¶ó °£´ÜÇÑ JavaScript¸¦ ÀÌ¿ëÇß´Ù. JavaScript¿¡´ëÇÑ ÀÚ¼¼ÇÑ »çÇ×Àº ´Ù¸¥ Ã¥À» Âü°íÇϱ⠹ٶõ´Ù. HTML - mail.html ¼Ò½º

 1 : <HTML>
 2 : <HEAD>
 3 : <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=EUC-KR">
 4 : <LINK REV="Made" HREF="mailto:[email protected]">
 5 : <LINK REL="StyleSheet" HREF="http://qaos.com/style.css">
 6 : <TITLE>DoAÀÇ À¥ ¸ÞÀÏ °ÔÀÌÆ®¿þÀÌ ÀÔ´Ï´Ù.</TITLE>
 7 : <script language="JavaScript">
 8 : <!-- JavaScript¸¦ Áö¿øÇÏÁö ¾Ê´Â ºê·Î¿ìÀú¸¦ À§ÇØ ÁÖ¼®Ã³¸®
 9 : function checkForm(form) {
10 : 	if(form.from.value == '') {
11 : 		alert("À̸§ÀÌ ºüÁ³½À´Ï´Ù. À̸§Àº ²À Àû¾îÁֽʽÿä");
12 : 		form.from.focus();
13 : 		return;
14 : 	}
15 : 	if(form.subject.value == '') {
16 : 		alert("Á¦¸ñÀÌ ºüÁ³½À´Ï´Ù. Á¦¸ñÀº ²À Àû¾îÁֽʽÿä");
17 : 		form.subject.focus();
18 : 		return;
19 : 	}
20 : 	if(form.comments.value == '') {
21 : 		alert("ÀÇ°ßÀÌ ºüÁ³½À´Ï´Ù. ÀÇ°ßÀº ²À Àû¾îÁֽʽÿä");
22 : 		form.comments.focus();
23 : 		return;
24 : 	}
25 : 	form.submit();
26 : }
27 : // --½ºÅ©¸³Æ®ÀÇ ³¡-->
28 : </script>
29 : </HEAD>
30 : <body class=guestbook>
31 : <H2 class=h3> Mail Gateway </H2>
32 : <H2 class=ban> ÆÒ  ·¹  ÅÍ </H2>
33 : <hr noshade size=4>
34 : <FORM METHOD="POST" ACTION="cgi-bin/mg.cgi">
35 : <CENTER>
36 : <TABLE  border="0" cellpadding="1" cellspacing="0" 
		width=400 class=border>
37 : <tr><td class=bgblue>
38 : <table border="0" cellpadding="0" cellspacing="3">
39 : <tr>
40 : 	<th rowspan=2>¼Û ½Å ÀÚ</th><td>ÀÌ¡¡¡¡¸§</td>
41 : 	<td><INPUT TYPE="text" NAME="from" maxlength=20 SIZE=40></td>
42 : </tr>
43 : <tr>
44 : 	<td>ÀüÀÚ¿ìÆí</td>
45 : 	<td><INPUT TYPE="text" NAME="fromaddr" SIZE=40></td>
46 : </tr>
47 : <tr>
48 : 	<th>Á¦¡¡¡¡¸ñ</th>
49 : 	<td colspan=2><INPUT TYPE="text" NAME="subject" SIZE=50></td>
50 : </tr>
51 : <tr>
52 : 	<th valign=top rowspan=2>ÀÇ¡¡¡¡°ß</th>
53 : 	<td colspan=2>
	<textarea  name="comments" cols="50" ROWs="5" wrap="hard"></textarea>
	</td>
54 : </tr>
55 : <tr>
56 : 	<td colspan=2 align=center>
	<INPUT TYPE="button" value="º¸³»±â" onClick="checkForm(this.form)">
	<INPUT TYPE="reset" value="Áö¿ì±â">
	</td>
57 : </tr>
58 : </table>
59 : </td></tr>
60 : </TABLE>
61 : </CENTER>
62 : </FORM>
63 : <p class=bar2>µµ¿ò¸»</p>
64 : <p>
65 : <ul>
66 : 	<li>»ç¿ëÇÒ ¼ö ÀÖ´Â ¸ÞÀÏ ¼­¹ö°¡ ¾ø´Â °æ¿ì, »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
67 : 	<li>¼Û½ÅÀÚÀÇ À̸§Àº °¡±ÞÀû ¿µ¹®À¸·Î Àû¾î Áֱ⠹ٶø´Ï´Ù.
68 : 	<li>Á¦¸ñ°ú ÀÇ°ßÀº ¹Ýµå½Ã Àû¾îÁֱ⠹ٶø´Ï´Ù.
69 : </ul>
70 : </body>
71 : </html>
½ÇÇà°á°ú

mg.cgi ¼³¸í

7~27
ÆûÀ» °Ë»çÇÏ´Â ÀÚ¹Ù½ºÅ©¸³Æ®ÀÌ´Ù. ÀÚ¹Ù½ºÅ©¸³Æ®¿¡¼­ ÆûÀ» °Ë»çÇϹǷΠCGI ÇÁ·Î±×·¥¿¡¼­ ÆûÀ» °Ë»çÇÏ´Â ·çƾÀÌ »ý·«µÇ¾ú´Ù.
36~38
Å×À̺íÀÇ °æ°è(Border) »ö¼ºÀ» ÁöÁ¤ÇϱâÀ§ÇØ TABLE ű׸¦ Áߺ¹Çؼ­ »ç¿ëÇß´Ù. Æû °ü·Ãű״ ¾ÕÀýÀ» ÂüÁ¶ÇÑ´Ù.
56
ÆûÀÇ Á¦ÃâÀ» ÀÚ¹Ù½ºÅ©¸³Æ®·Î ÇϱâÀ§ÇØ Å±×ÀÇ TYPE ¼Ó¼ºÀ» buttonÀ¸·Î Çß´Ù.
CGI - mg.cgi ¼Ò½º

 1 : #! /usr/local/bin/perl
 2 : require './cgi-lib.pl';
 3 : $mailprog='/usr/lib/sendmail -t';
 4 : $toaddr = '[email protected]';
 5 : $to = '±èÀç±Ù';
 6 : $home = 'http://syscon.soongsil.ac.kr/~artech';
 7 : &ReadParse(*FORM);
 8 : &CgiDie("¿À·ù", "À̸§, ÀÇ°ß, Á¦¸ñÁß Çϳª°¡ ºüÁ³½À´Ï´Ù.") 
		unless($FORM{from} && $FORM{subject} && $FORM{comments});
 9 : open(MAIL, "|$mailprog $toaddr");
10 : print MAIL <<Mail;
11 : From: "$FORM{'from'}"<$FORM{fromaddr}>
12 : To: "$to"<$toaddr>
13 : Subject: $FORM{'subject'}
14 : $FORM{comments}
15 : Mail
16 : close(MAIL);
17 : print &PrintHeader;
18 : print &HtmlTop("ÆíÁöÀü¼Û¿Ï·á");
19 : print <<Html;
20 : <p>
21 : ÆíÁö¸¦ ¼º°øÀûÀ¸·Î Àü¼ÛÇß½À´Ï´Ù.
22 : <p>
23 : ȨÆäÀÌÁö·Î Àü¼ÛÇϱâÀ§Çؼ­´Â <a href="$home">¿©±â</a>¸¦ Ŭ¸¯ÇØ ÁÖ¼¼¿ä.
24 : Html
25 : print &HtmlBot;
¼³¸í
2 : require './cgi-lib.pl';
cgi-lib.plÀ» ºí·¯¿Â´Ù. CGI ÇÁ·Î±×·¥°ú ¶óÀ̺귯¸® ÆÄÀÏÀÌ °°Àº µð·ºÅ丮¿¡ ÀÖ´Â °æ¿ì ¹Ýµå½Ã "./"¸¦ ÀÌ¿ëÇؼ­ ÇöÀç µð·ºÅ丮ÀÓÀ» ¸í½ÃÀûÀ¸·Î Ç¥½ÃÇØ¾ß ÇÑ´Ù. 'cgi-lib.pl'À» »ç¿ëÇÏ´Â °æ¿ì ÇöÀç µð·ºÅ丮°¡ ¾Æ´Ï¶ó ÆÞÀÇ Ç¥ÁØ ¶óÀ̺귯¸® °æ·Î(@INC¿¡ ÀúÀåµÈ)¿¡¼­ cgi-lib.plÀ» ã´Â ´Ù´Â °Í¿¡ ÁÖÀÇÇϱ⠹ٶõ´Ù.
3 : $mailprog='/usr/lib/sendmail -t';
¸ÞÀÏÀ» Àü¼ÛÇÒ ÇÁ·Î±×·¥À» ÁöÁ¤ÇÑ´Ù. ¿©±â¼­ -t´Â ¸í·ÉÇàÀ¸·Î Á¦°øµÈ ÀüÀÚ¿ìÆí ÁÖ¼Ò°¡ ¾Æ´Ï¶ó To: Çì´õ·Î ÁöÁ¤ÇÑ ÀüÀÚ¿ìÆí ÁÖ¼Ò¸¦ »ç¿ëÇؼ­ ÆíÁö¸¦ Àü¼ÛÇ϶ó´Â ÀǹÌÀÌ´Ù.
9 : open(MAIL, "|$mailprog $toaddr");
ÇÊÅÍ ¸ðµå·Î È­ÀÏÀ» ¿ÀÇÂÇÑ´Ù. ÀÌ·¸°Ô ¿ÀÇÂÇÑ ÆÄÀÏÇڵ鿡 µ¥ÀÌŸ¸¦ Ãâ·ÂÇϸé ÀÌµé µ¥ÀÌŸ¸¦ ÀÌ¿ëÇؼ­ ÆíÁö¸¦ Àü¼ÛÇÏ°Ô µÈ´Ù.
10~15
MAILÀ̶ó´Â ÆÄÀÏÇڵ鿡 µ¥ÀÌŸ¸¦ Ãâ·ÂÇÑ´Ù. From:, To:, Subject: Çì´õ¸¦ ÀÌ¿ëÇؼ­ ¼Û½ÅÀÚ, ¼ö½ÅÀÚ, Á¦¸ñÀ» ÁöÁ¤Çϸç, $FORM{comments}¸¦ ÀÌ¿ëÇؼ­ »ç¿ëÀÚÀÇ ÀÇ°ßÀ» Body¿¡ »ðÀÔÇÑ´Ù.
16 : close(MAIL);
½ÇÁ¦ ÆíÁöÀÇ Àü¼ÛÀº MAILÀ̶ó´Â ÆÄÀÏÇÚµéÀ» ´Ý´Â ½ÃÁ¡¿¡¼­ ÀÌ·ç¾î Áø´Ù.
17~25
ÆíÁö¸¦ Àü¼ÛÇÑ ÈÄ Àü¼Û°á°ú¸¦ Ãâ·ÂÇÏ´Â ºÎºÐÀÌ´Ù.


´ÙÀ½±Û: Á¦ 23°­ - ÆÐÅ°Áö(Package) - ÀÛ¼ºÁß (6027)1996-04-23
ÀÌÀü±Û: Á¦ 21°­ - ¶óÀ̺귯¸® (6986)1996-04-21

¼¼»ó»ç´Â À̾߱â



RSS ±¸µ¶ (À͸í | ȸ¿ø | °­Á | Æ÷·³)
(C) 1996 ~ 2017 QAOS.com All rights reserved.