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 |