본문 바로가기

Common Gateway Interface

Perl(CGI)로 세션 주고 받기 예제 Perl(CGI)로 쿠키 주고 받기 예제 이번 포스팅에서는 Perl(CGI)로 세션을 생성 및 사용하고 삭제하는 과정에 대해 정리해본다. 0. 준비 사항 다음의 명령어를 이용해 CGI, Cookie, Session 모듈을 설치한다. 자세한 내용은 본 블로그의 서버 구축 관련 포스팅에 정리되어 있다. $ sudo cpan install CGI $ sudo cpan install CGI::Cookie $ sudo cpan install CGI::Session macOS 한정 CGI::Session이 설치되지 않는 경우 다음과 같이 force 옵션을 써서 강제로 설치할 수 있다. $ sudo cpan cpan> force install CGI::Session Debian/Ubuntu 한정 cpan을 통한 설치.. 더보기
Perl(CGI)로 쿠키 주고 받기 예제 Perl(CGI)로 쿠키 주고 받기 예제 이번 포스팅에서는 Perl(CGI)로 쿠키를 생성, 전달 및 삭제하는 과정에 대해 정리해본다. 0. 준비 사항 다음의 명령어를 이용해 CGI, Cookie 모듈을 설치한다. 자세한 내용은 본 블로그의 서버 구축 관련 포스팅에 정리되어 있다. $ sudo cpan install CGI $ sudo cpan install CGI::Cookie 1. 쿠키로 전달할 데이터 입력받기(cookie-submit.cgi) 다음과 같이 쿠키 변수에 보관할 문자열을 받는 폼을 구성한다. 이 폼은 다음에 보여질 웹 페이지인 cookie-export.cgi에 전달될 것이다. #!/usr/bin/perl print "Content-type: text/html;charset=UTF-8\n.. 더보기
Perl(CGI)에서 POST 방식, GET 방식으로 파라미터 얻기 Perl(CGI)에서 POST 방식, GET 방식으로 파라미터 얻기 PHP 등 현대적인 웹 언어와 달리 Perl은 POST/GET 방식으로 파라미터를 얻는 방식은 다소 번거롭다. 이 포스팅을 통해 정리해보고자 한다. 1. POST 방식으로 데이터를 주고 받기 먼저 주소창에 데이터가 나타나지 않는 POST 방식으로 데이터를 주고 받아보는 예제이다. 1-1. post-send.cgi POST 방식으로 웹 페이지로 데이터를 전송하기 위한 폼을 구성한다. 일반 텍스트를 입력받아 전달하는 member_id 매개변수와, 암호형 텍스트를 입력받아 전달하는 member_pw 매개변수를 정의한다. #!/usr/bin/perl print "Content-type: text/html\n\n"; print $ENV{'QUER.. 더보기
Windows Media Player ActiveX 플러그인을 이용한 음악/영상 재생예제 Windows Media Player ActiveX 플러그인을 이용한 음악/영상 재생예제 ActiveX를 선호하지는 않지만, 간혹 필요한 경우가 있으므로 Windows Media Player ActiveX 플러그인을 HTML 문서에 삽입하는 방법에 대해 정리해 둔다. 1. 플러그인 삽입 여느 ActiveX가 그렇듯이 Windows Media Player도 classid = 22d6f312-b0f6-11d0-94ab-0080c74c7e95 codebase = http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715 type = application/x-oleobject 의 3가지 속성을 지정하여 플러그인을 .. 더보기
[옛 강좌] 45. CGI 모듈 배우기 (완결) Hello, CGI'; 3행과 4행은 $q라는 CGI 객체를 만드는, 동일한 기능을 수행합니다. 매뉴얼에는 4행처럼 되어 있으나, 저는 3행처럼 하길 권장합니다. 5행에서, header()에 아무런 매개변수도 없는데, 이런 경우에는 'Content-type:text/html\n\n'으로 가정합니다. 즉, 기본값입니다. 펄의 작은 따옴표(single quote)에서는, 오직 '와 \ 둘만이 escape되어야 하므로, html작성시 신경을 써야 합니다. 작은 따옴표 대신에 here-document로 처리해도 됩니다. 환경변수 보기 #!/usr/bin/perl -w use CGI; $q = CGI->new(); print $q->header(); $q->start_html(-title=>'ENV'); fore.. 더보기
[옛 강좌] 44. Perltip - pod2html 사용법 $title END_OF_HEAD 이런 부분이 있는데, 이곳이 HTML 문서를 만들 때 머리부분에 해당합니다. 자바스크립트나 스타일시트등, 미리 선언할 내용이 있다면, 이곳에 넣어 주시면 됩니다. 또, print HTML 더보기
[옛 강좌] 43. Perltip - 윈도용 Aapche Web Server 사용법 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. Perltip - 윈도용 Aapche Web Server 사용법 Description 윈도용 아파치 서버의 사용법에 대한 이야기입니다. win95, 98, NT는 유닉스계열의 운영체제와는 많이 다르죠. 여건이 되고, 하시고자 한다면, 개인적으로는 리눅스를 추천하고 싶네요. 처음 배울 땐 조금 까다롭지만, 윈도는 비교도 안 될만큼 여러가지 기능(특히 네트워크)이 있으니깐여.. 특히, 프로그래밍을 공부하신다면 더욱 권하고 싶습니다. 배우고자 하는 언어 - C, C++, Perl .. 더보기
[옛 강좌] 42. Subroutine References and Closures 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. Subroutine References and Closures Description 이번에는 서브루틴의 레퍼런스와 Closures (영어가 짧아서... 뭐라 불러야 할지 몰겠어여... ^^;) 에 대한 이야기 입니다. Subroutine References Closures 음.. 이거 한국말로 뭐라고 하져.... ^^; 개념이 쩜 그렇네요... 다음 예제를 보겠습니다. 예제 1: sub generate_greeting { my ($greeting) = @_; return su.. 더보기
[옛 강좌] 41. Advanced_Perl - Typeglobs and Symbol Tables 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. Advanced_Perl - Typeglobs and Symbol Tables Description Perl 에서 사용하는 Typeglobs 와 Symbol Tables 에 대한 이야기입니다. Typeglobs and Symbol Tables Perl에서만 사용하는 (다른 언어에선 볼 수 없는..), Typeglobs에 대해서, 그리고, local과 my의 차이점을 알아봅니다. Perl Variable, Symbol Table my와 local에 관해선, 이전의 이채광님의 글.. 더보기
[옛 강좌] 40. Advanced_Perl - my() & local() 함수 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. Advanced_Perl - my() & local() 함수 Description my 와 local의 차이점. Author 이채광(w3master@myperl.pe.kr : http://www.myperl.pel.kr/) 훑어 보기 사람들이 my()와 local()에 대해서 대충은 알겠으나, 약간은 아리송한 부분이 있다기에 정리를 해 봅니다. 어느 정도 알고 있을테니까 헷갈리겠지요? 우리가 일상 사용하는 변수는 패키지 변수(package variable)입니다. local(.. 더보기
[옛 강좌] 39. Advanced_Perl - References 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. Advanced_Perl - References Description References - 펄의 레퍼런스에 대한 이야기 입니다. References 복잡하게 생각하면 복잡해지니깐요, 그냥 간단히 생각해요. 레퍼런스란 어떤 변수(스칼라, 배열, 해쉬)가 있다면, 그 변수의 레퍼런스라는건, 그 변수를 가리키는 값이라고 생각하시면 됩니다. C에서는 포인터라는 것이 있죠. 이것과 비교를 많이 하는데, C를 모르시는 분들이 있기에, 이와 비교는 하지 않겠습니다. 펄은 펄..... C.. 더보기
[옛 강좌] 38. IPC의 기본적 이해 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. IPC의 기본적 이해 글쓴이 : 이채광 날짜 : 2000.01.05 에디터 : 나모 웹에디터 3.0 테스트 환경 : 평범한 펜티엄 PC, 리눅스(커널 2.2.5-22), perl5.00503 연락처 : http://www.myperl.pe.kr/ 0. 들어 가기 전에 IPC(InterProcess Communication)의 기초적인 내용과 예제를 설명합니다. 혹시 IPC에 대해서 쉬운 부분만 나와 있어서 본인이 알고자 하는 내용이 없다면, 저는 좀 더 발전할 좋은 기회라 생.. 더보기
[옛 강좌] 37. Perlprog - Bookmark Program My Favorite Site!!! Html } HtmlEnd() - 페이지의 마지막 부분 출력 sub HtmlEnd { print 더보기
[옛 강좌] 36. Perlprog - Bookmark Program My Favorite Site!!! Html } Show_Directory_Form() 입력 내용은 디렉토리명 하나면 돼요. sub Show_Directory_Form { print 더보기
[옛 강좌] 35. Perlprog - Bookmark Program My Favorite Site!!! 처음 > $now_folder http://localhost/~bookmark/search.cgi/$now_folder/">$now_folder Html } HtmlEnd() 아래의 링크에 보이는 add.cgi는 다음에 하겠습니다. sub HtmlEnd { print 더보기
[옛 강좌] 34. Perlprog - Bookmark Program My Favorite Site!!! 처음 > Html } HtmlEnd() sub HtmlEnd { print 더보기
[옛 강좌] 33. Perlprog - perl & db 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. Perlprog - perl & db Description Perl과 DB의 연동 1 - DBI, DBD 모듈에 관하여 들어가기(Start) 이번부터는 Perl과 데이터베이스 프로그램을 연동하는 것에 대해 알아 보겠습니다. 이것두 어디까지나, 제가 아는 한도내에서 말씀드리겠습니다. 강좌 도중 이상하거나, 틀린점이 있으시면, 바로, 게시판이나 멜을 주시기 바랍니다. 전제사항 : 이 글을 읽으시는 분들은 이미 사용하는 DB와 펄에 대하여 어느정도 아신다는 전제하에 썼습니다. DB.. 더보기
[옛 강좌] 32. Perlprog - BBS 11 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. Perlprog - BBS 11 Description 게시판 만들기 11 - 관리자 모드 BBS 만들기 11 이제 게시판 만들기의 마지막 부분입니다. 지금까지 쓰고, 읽고, 답변하고, 지우고, 검색하고 등을 했죠. 이젠 이런 일련의 작업들에 있어서 슈퍼유저가 있어야 합니다. 삭제하고, 잘못된 글들을 지우고, 편집을 수행할 수 있는.... 이런 권한을 가지는 사용자를 만들어 보겠습니다. 준비과정(Start) 우선 먼저 할 것이 있죠. 삭제나 편집 때와 마찬가지로 관리자의 암호를.. 더보기
[옛 강좌] 31. Perlprog - BBS 10 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. Perlprog - BBS 10 Description 게시판 만들기 10 - 좀더 발전된 게시판을 위해서... BBS 만들기 10 어느덧... 게시판 만들기 열번째 입니다. 이제 기본적인 사항들은 모두 끝이 났습니다. 지금까지의 내용을 가지고, 잘 활용하신다면 머찐 게시판이 나올거라 생각합니다. 물론 자바스크립트, 스타일시트등 DHTML을 같이 이용하시면, 보기도 좋고, 성능도 좋은 게시판이 될겁니다. 이번엔 지금까지 해온 게시판에서 좀더 향상된 게시판에 대한 이야기를 하고자.. 더보기
[옛 강좌] 30. Perlprog - BBS 9 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. Perlprog - BBS 9 Description 게시판 만들기 9 - 검색 BBS 만들기 9 게시판 만들기 아홉 번째 입니다. 휴... 어느덧 여기까지.... 이제 검색만 프로그램하면, 게시판의 모든 형태는 다 나오게 되네여... 그럼 검색에 대해 생각해 봐여. '이름', '제목', '본문' 이렇게 세 개의 조건으로 검색을 하겠습니다. 물론 동시 검색은 지금하지 않겠습니다. 그건 여러분들이 직접 해보시구여.... 우리가 지금까지 해온 것을 잠깐 보면.. board.idx파.. 더보기
[옛 강좌] 29. Perlprog - BBS 8 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. Perlprog - BBS 8 Description 게시판 만들기 8 - 파일 잠금 BBS 만들기 8 게시판 만들기 여덟번째 입니다. 이제 남은 건 검색과 관리자모드 입니다. 그 전에.... 지금까지 해왔던, 파일저장에 관해서 잠시 얘기할까 합니다. 처음에 이해가 안 된다고 하시더라도... 끝까지 읽다 보시면 이해하시게 될 겁니다. 파일 잠금에 대하여(About) open(FILE, ">file"); print FILE ......; close(FILE); 우리가 어떤 파일에.. 더보기
[옛 강좌] 28. Perlprog - BBS 7 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. Perlprog - BBS 7 Description 게시판 만들기 7 - 편집하기 BBS 만들기 7 게시판 만들기 일곱번째 입니다. 이번엔 편집기능에 대해서 알아보져.... 검색과 관리자를 뺀다면, 이제 쓸만한 게시판이 나오겠네여... ^^; board_modify.cgi - 데이터 편집 그럼 board_modify.cgi라는 이름으로 시작합니다. #! /usr/local/bin/perl require "./basic.pl"; require "./board.conf"; &pa.. 더보기
[옛 강좌] 27. Perlprog - BBS 6 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. Perlprog - BBS 6 Description 게시판 만들기 6 - 데이터 삭제 BBS 만들기 6 이번에 할 내용은 게시된 내용물을 삭제하는 것입니다. 원하는 데이터를 읽은다음, 삭제표시 아이콘을 누르면, 암호 확인 창이 뜨고, 암호를 입력 하고, 틀리면 틀린다는 메세지를, 맞으면 삭제하는 방법으로 하겠습니다. 사용자 확인(Register) 그럼 우선, 아이콘을 눌렀을 때 확인하는 파일을 먼저 만들겠습니다. 이 파일은 삭제뿐 아니라, 편집할 때도 마찬가지로 뜨게 되어있는.. 더보기
[옛 강좌] 26. Perlprog - BBS 5 \n"; &print_content; print " "; #### 제목란에 위에서 분리해낸 제목을 넣습니다. print " 제 목 : 이 름 : 전자우편 : 홈페이지 : $re_body"; for $re_list(9..$#ReplyData) { chomp($ReplyData[$re_list]); print ">$ReplyData[$re_list]"; } print " 비밀번호 : (8자 까지) (참고사항 : HTML은 지원 되지 않습니다.) $WRITE_IMAGE \n"; &about_board; #### reply변수명과 값을 hidden속성으로 다음 cgi프로그램에 전달합니다. 이건 위에서 설명했죠? 그와 더불어 답변을 선택한 데이터의 인덱스번호도 hidden속성으로 전달합니다. print " \n".. 더보기
[옛 강좌] 25. Perlprog - BBS 4 \n"; &print_content; print " 글번호 : $head_number 조회수 : $file_data{'COUNT'} 등록일 : $file_data{'DATE'} 홈페이지 : $file_data{'HOMEPAGE'} 성     명 : $file_data{'NAME'} ($file_data{'IP'}) 전자우편 : $file_data{'EMAIL'} $file_data{'TITLE'} $file_data{'BODY'} \n"; 이 부분은 특별한 설명이 없어도 잘 아시리라 믿습니다. 그냥 일정 형식에 맞춰 출력하는거죠. 전 디자인 감각이 없어서... 이렇게 하고 매우 만족했답니당....^^;; 이전글, 다음글, 조회수(next, prev, count) $ne.. 더보기
[옛 강좌] 24. Perlprog - BBS 3 \n"; &print_content; print " 총게시물 : $total_idx_num개 번호 이름 제 목 조 회 날 짜 \n"; } 이 함수는 view_list.cgi 안에 정의가 된겁니다. 이전페이지, 다음페이지(next, prev) 그렇다면 데이터가 있다면? 무작정 출력할 수는 없죠. board.conf에 보여주는 목록 수를 정의 했었죠. 데이터가 그 목록 수 보다 작다면, 넘는다면.... 넘었을 때 다음 목록과 이전목록에 링크를 없애는 문제... 등등등.... 이 부분을 꼴똘이 생각해본결과, 나의 짧은 머리로는 총 4개의 경우가 생기더군여... 이전, 다음 목록이 둘다 안눌려 지는 경우... 이전만 눌려지는 경우... 다음만 눌려지는 경우... 이전, 다음 둘다 눌려 지는 경우.... 여기서 .. 더보기
[옛 강좌] 23. Perlprog - BBS 2 \n"; &print_content; print " 제 목 : 이 름 : 전자우편 : 홈페이지 : 내 용 : 비밀번호 : (8자 까지) (참고사항 : HTML은 지원 되지 않습니다.) $WRITE_IMAGE \n"; $WRITE_IMAGE는 우리가 미리 정의 하였습니다. board.conf - 환경설정 "add_data.cgi"를 프로그램 하기전에 한 가지 먼저하죠. 여러 환경변수들을 넣어두는 파일을 하나 만듭니다. 이곳에 들어가는 내용은 본인의 url 주소, 각 이미지 파일들의 위치, 저장될 파일들의 위치 등.... board.conf라고 이름하시고, ### board.conf ### 게시판 환경 변수 파일 ########################################### ## 사용자 디렉.. 더보기
[옛 강좌] 22. Perlprog - BBS 1 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. Perlprog - BBS 1 Description 게시판 만들기 1 - 라이브러리, 서브루틴 BBS 만들기 1 제 강좌 중 의문나는 점이나, 마음에 안드는점, 소스가 이상하다던가, 알고리즘이 마음에 안든다던가, 더 좋은 생각을 가지고 계시면 동정의 여지없이, 게시판에 남겨 주시기 바랍니다. 그러면 게시판을 만들기 전에 준비해야 할것 몇 가지를 이번에 얘기하겠습니다. 당장에 들어가고 싶지만서리.... 문법얘기를 할때 얘기하지 않은 부분이 있구여, 좀 더 효율적인 프로그램이 되.. 더보기
[옛 강좌] 21. Perlprog - GuestBook 3 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. Perlprog - GuestBook 3 Description 방명록 만들기 3 - 입력내용 출력 GuestBook 만들기 3 폼을 만들고, 입력을 누르면 자료가 전송되고, 전송된 자료를 다시 분리해서 파일에 저장까지 하였습니다. 이젠 그걸 부르는 일만 남았어요. 근데 자료가 1,2개라면 그냥 보여주면 되지만, 수십개가 된다면 그냥 보여주긴 그렇죠. 저는 이 방법으로 다른거와 조금 다르게, 그냥 편하게 하였 습니다. 물론 여러분들이 직접 더 나은 프로그램을 만들어서 쓰시면 되.. 더보기
[옛 강좌] 20. Perlprog - GuestBook 2 이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다. Perlprog - GuestBook 2 Description 방명록 만들기 2 - 입력사항 추가, 저장 GuestBook 만들기 2 폼에서 입력받은 내용외에 날짜를 추가로 입력, 폼에서 넘어오는 데이터의 판별 Date 얻기 지난 번에는 폼에서 name과 body를 받아서 ::사용해 각각의 데이터를 파일에 저장하는 내용까지 보았습니다. 이것만 넣으면 썰렁하니깐....(^^;) 여기에 날짜를 추가해 보도록 하겠습니다. $fields{'body'} =~ s/\n\n/ /g; $f.. 더보기