Axil S/E kdk018
				  1997. 4. 16.
				  Kim Do Kyung

SUBJECT: 웹서버에 방명록(Guestbook)  만들기

DESCRIPTION:

★ 웹서버에 방명록 만들기

	※ 방명록 화일

  실제 방문한 사람들의 기록이 이 화일에 남게 된다.

### guestbook.html ### 

 
    방명록 



방명록...

새로운 방명록을 작성하시려면 여기를 클릭하세요.


※ 방명록을 작성하는 화일 이 화일에서 방명록 CGI Program을 Call하게 된다. ### addbook.html ### 방명록 작성

방명록 작성



Name       
Email      
Comments   

※ 방명록 CGI Program 방명록 CGI Script로 모든 방명록 프로그램의 근간이라 할 수 있다. #!/usr/local/bin/perl $mesgfile = "../htdocs/guestbook.html"; <= /cgi-bin 에 guestbook.pl이 있음을 알 수 있다. $DATE = `date +%y/%m/%d`; <= "년도/월/일"의 형식으로 출력 # HTML문서의 FORM에서 넘겨받은 값을 분리해 낸다. if ($ENV{'REQUEST_METHOD'} eq "GET") { <= 여기서부터 .... $FORM_DATA = $ENV{'QUERY_STRING'}; } else { $LENGTH = $ENV{'CONTENT_LENGTH'}; while($LENGTH) { $FORM_DATA .= getc(STDIN); $LENGTH--; 이 곳은 다른 CGI에서도 응용할 수 있다. } guestbook.pl을 호출할때의 parameter passing } URL이 guestbook.pl?name=KDK&email=kdk@hyundai&... 이렇게 되므로 &와 ?를 이용해 DATA를 parsing하는 부분이다. foreach (split(/&/, $FORM_DATA)) { ($NAME, $VALUE) = split(/=/, $_); $NAME =~ s/\+/ /g; $NAME =~ s/%([0-9|A-F]{2})/pack(C, hex($1))/eg; $VALUE =~ s/\+/ /g; $VALUE =~ s/%([0-9|A-F]{2})/pack(C, hex($1))/eg; $FORM{$NAME} = $VALUE; <= 여기까지 ... } ######################### # Get Variables ######################### $name = $FORM{'name'}; <= Standard Input을 통해 들어온 변수들을 프로그램 $email = $FORM{'email'}; 에서 사용할 변수로 대입한다. $comment = $FORM{'comment'}; ######################### # 방명록에 추가 ######################### open (MAIN, "$mesgfile") || die $!; <= $mesgfile을 오픈해 main이라는 Array에 @main =
; 모든 라인을 저장해 둔다. close(MAIN); open (MAIN, "> $mesgfile") || die $!; <= $mesgfile을 쓰기 모드로 오픈 foreach $main_line (@main) { if ($main_line =~ //) { <= begin이 있는 라인에 삽입(새로운내용) print MAIN "\n"; print MAIN "$name\n"; print MAIN "$DATE
\n"; print MAIN "$comment

\n"; } else { print MAIN "$main_line"; } } ######################### # 보여 주기 ######################### print "Content-type: text/html\n\n"; <= HTML문서임을 Client에게 알려준다. open (MAIN, "$mesgfile") || die $!; <= 새로운 라인이 추가된 $mesgfile 을 출력 while (
) { print "$_"; } close (MAIN);