336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
이 게시물은 지금은 폐쇄되어 접속되지 않는 Kim Young Soo(http://hours.interpia98.net/~unisoo/)님의 웹 사이트에 2001년경 게시된 내용을 바탕으로 오늘날 웹 환경에 맞게 내용을 덧붙였습니다.
Perlprog - Bookmark Program
Description
Perl과 DB를 이용한 Bookmark Program 네 번째
새로운 URL 추가(Add Url)
지난번에 새로운 디렉토리를 추가 했었죠. 그럼 이번엔... 그 디렉토리에 해당하는 URL을 추가하는 프로그램을 만들어 보겠습니다. 지난번에 했던거 하고 거의 같으니깐요. 소스를 보면서 바로 쭈~욱 나가겠습니다.
Url 추가 프로그램(add.cgi)
메인 페이지 하단에는 "디렉토리 추가"가 있었죠. 근데... 해당 디렉토리를 누르면 그 하단에 "북마크 등록" 이라고 되어 있습니다.
<a href="http://localhost/~bookmark/add.cgi?path=$search_folder">북마크 등록</a>
라고 되어 있는 부분이죠. 여기서 우리는 add.cgi에 현재의 디렉토리명을 변수로 같이 넘겨 주고 있습니다. 디비에 URL를 등록할때의 기준이 되는 값입니다.
Main 프로그램
# 우리가 필요한 것들을 정의 하구요,
#!/usr/local/bin/perl use CGI; use DBI; $add = new CGI; print $add->header; # 넘어온 디렉토리를 변수로 받고, $path = $add->param('path'); # 혹시나 디렉토리가 정해지지 않을 상태에서 프로그램이 호출되었을 경우, 에러 메세지를 보여주고 종료합니다. if(!$path) { ErrorMsg(); exit; } # 여기의 'url' 변수는, 등록폼에서 사용자가 등록하고자 하는 url입니다. 이것이 없다면, 등록 폼을 보여줍니다. # '북마크 등록' 이란 링크를 눌렀을 때에 해당합니다. if(!$add->param('url')) { ShowForm(); exit; } # 등록 폼에서 하나라도 입력하지 않으면, 에러 메세지를 보여줍니다. elsif((!$add->param('owner')) || (!$add->param('url')) || (!$add->param('name')) || (!$add->param('descript')) || (!$add->param('search'))) { HtmlStart(); print << Error; <font size=2 color=red>항목을 하나라도 빼먹으시면 안됩니다.<p> <a href="javascript: history.go(-1)">돌아가기</a> </font> Error HtmlEnd(); exit; } # 모든 조건이 만족 된다면, 디비에 접속을 해서 필요한 데이터들을 넣습니다. # 그 전에 데이터들을 조금 가공(?) 합니다. else { $type = "b"; $parent = "/"; $path = $add->param('path'); $name = $add->param('name'); $url = $add->param('url'); $owner = $add->param('owner'); $descript = $add->param('descript'); $descript =~ s/\cM//g; $descript =~ s/\n\n/ /g; $descript =~ s/\n/ /g; $search = $add->param('search'); $dbh = DBI->connect('DBI:ODBC:bookmark', 'sa', '') || die print "$DBI::errstr"; # 기존에 등록이 되었던 url인지 검사 합니다. if (Check_url($url)) { Old_Reg(); } else { $sth = $dbh->prepare( q{insert into bookmark (type, parent, path, name, url, owner, descript, search) values (?, ?, ?, ?, ?, ?, ?, ?)} ) || die print "$DBI::errstr"; $sth->execute($type, $parent, $path, $name, $url, $owner, $descript, $search); $sth->finish; # 성공했다는 메세지. Success(); } $dbh->disconnect; exit; }
Sub 함수들
메인에서 불러다 쓴 서브 함수들의 정의입니다.
Check_url() - 기존에 등록된 url인지 검사
sub Check_url { my ($ch_url) = @_; my ($Con_url); my $ch_sth = $dbh->prepare( q{select url from bookmark where url=?} ) || die print "$DBI::errstr"; $ch_sth->execute($ch_url) || die print "$DBI::errstr"; my $old_url = $ch_sth->fetchrow_array; if ($old_url) { $Con_url = 1; } else { $Con_url = 0; } $ch_sth->finish; return $Con_url; }
ErrorMsg() - path변수가 포함되지 않은 상태에서 프로그램 호출 시 에러 메세지
sub ErrorMsg { HtmlStart(); print << Error; <font size=2 color=red>적절한 디렉토리를 선택하신후 등록 하세요.</font> Error HtmlEnd(); }
ShowForm() - 등록 폼
sub ShowForm { HtmlStart(); print << Show_Form; <p> <font size=3><b>새로운 URL을 등록합니다.</b></font> <form action=./add.cgi method=post> <table width=600 border=0> <tr> <td align=right height=30><font size=2 color=blue><b>선택된 디렉토리 : </b></font></td> <td><font size=2 color=red><b>$path</b></td> </tr> <tr> <td align=right height=30><font size=2 color=blue><b>등록자 : </b></font></td> <td><input type=text maxlength=50 size=20 name=owner></td> </tr> <tr> <td align=right height=30><font size=2 color=blue><b>URL : </b></font></td> <td><font size=2>http://</;/font><input type=text maxlength=100 size=30 name=url></td> </tr> <tr> <td align=right height=30><font size=2 color=blue><b>URL 제목 : </b></font></td> <td><input type=text maxlength=200 size=40 name=name></td> </tr> <tr> <td align=right height=30><font size=2 color=blue><b>URL 설명 : </b></font></td> <td><textarea rows=5 cols=40 name=descript></textarea></td> </tr> <tr> <td align=right height=30><font size=2 color=blue><b>검색어 : </b></font></td> <td><input type=text maxlength=200 size=40 name=search></td> </tr> <tr> <td colspan=2 align=center> <input type=hidden name=path value=$path> <input type=submit value="등록"> <input type=reset value="취소"> </td> </tr> </table> </form> Show_Form HtmlEnd(); }
HtmlStart() - 페이지 머리부분 출력
sub HtmlStart { print << Html; <html> <head> <title>Add New Url</title> </head> <body> <center> <b><font size=3 color=green>My Favorite Site!!!</font></b><p> <font size=2> <hr size=2 color=green width=100%> Html }
HtmlEnd() - 페이지의 마지막 부분 출력
sub HtmlEnd { print << End; <hr size=2 color=green width=100%> <a href="http://web.archive.org/web/20001207005400/http://localhost/~bookmark/"><font color=blue>BlackUnicorn's BookMark Site</font></a> </font> </center> </body> </html> End }
Success() - 자료가 성공적으로 입력되었을때 보여주는 메세지
sub Success { print << Success_Data; <center> <font size=2 color=blue> 자료가 등록 되었습니다.<br> 이용해 주셔서 감사합니다.<p> <a href="http://localhost/~bookmark">Main Page</a> </font> </center> Success_Data }
Old_Reg() - 이미 url이 등록되었을경우 보여주는 메세지
sub Old_Reg { print << Old; <center> <font size=2 color=blue> 이미 등록된 URL 입니다.<br> 다시 등록하여 주십시요.<p> <a href="javascript:history.go(-1)">Back Page</a> </font> </center> Old }
NOTES
^^; 내용.... 별루 없네요.... 지난번에 했던 이야기들하고 틀린게 거의 없어요... ^^; 그럼 다음에 뵙겠습니다.
'Common Gateway Interface > Perl' 카테고리의 다른 글
[옛 강좌] 39. Advanced_Perl - References (0) | 2015.04.29 |
---|---|
[옛 강좌] 38. IPC의 기본적 이해 (0) | 2015.04.29 |
[옛 강좌] 36. Perlprog - Bookmark Program (0) | 2015.04.29 |
[옛 강좌] 35. Perlprog - Bookmark Program (0) | 2015.04.29 |
[옛 강좌] 34. Perlprog - Bookmark Program (0) | 2015.04.29 |