ÀÌÁ¦ ¾Õ¼ ÀÔ·ÂÇÑ Student Table¸¦ °Ë»öÇÏ°í ±× °á°ú¸¦ Ãâ·ÂÇÏ´Â CGI¸¦ ÀÛ¼ºÇϵµ·Ï ÇÏÀÚ. Student Å×À̺íÀº ´ÙÀ½°ú °°´Ù.
Student Table
sid
sname
phone
lid
class
924201
±èÀç±Ù
244-2912
1
ÀüÀÚ°øÇаú
964201
Á¶°æ·æ
123-4598
1
ÀüÀÚ°øÇаú
974201
±èÁ¦Âù
244-6597
2
ÀüÀÚ°øÇаú
974202
Â÷ÀºÁ¤
211-5555
2
ÀüÀÚ°øÇаú
974203
ÇÑâ¹®
357-5678
2
ÀüÀÚ°øÇаú
ÀÌ DB °Ë»ö CGIµµ msql.cgi¿Í ºñ½ÁÇÑ ±¸Á¶¸¦ °®´Â´Ù.
DB °Ë»ö CGIÀÇ ±¸Á¶
sindex.html
msql ¸ð´ÏÅÍ CGI¿¡¼¿Í µ¿ÀÏÇÑ ¿ªÇÒÀ» ÇÏ´Â ÇÁ·¹ÀÓ ¹èÄ¡¿ëÆÄÀÏÀÌ´Ù. À ÇÁ·¹ÀÓ¿¡´Â Å×ÀÌŸº£À̽º¿¡ µî·ÏµÈ Å×À̺íÀÇ ¸ñ·Ï°ú °Ë»öÆûÀ» Ãâ·ÂÇÏ´Â dbsearch.cgi¸¦ È£ÃâÇÏ¸ç ¾Æ·¡ÂÊ ÇÁ·¹ÀÓ¿¡´Â dbsearch.cgi¿¡´ëÇÑ °£´ÜÇÑ µµ¿ò¸»ÀÌ Æ÷ÇԵǾî ÀÖ´Â sbelow.htmlÀ» ºÒ·¯¿Â´Ù.
sbelow.html
dbsearch.cgi¿¡´ëÇÑ °£´ÜÇÑ µµ¿ò¸»À» Æ÷ÇÔÇϰí ÀÖ´Â HTML ¹®¼ÀÌ´Ù. ÇöÀç¿¡´Â ¾î¶°ÇÑ µµ¿ò¸»µµ ¾øÀ¸¹Ç·Î ÇÊ¿äÇÑ »ç¶÷ÀÌ Çʿ信 ¸Â°Ô ÀÛ¼ºÇϵµ·Ï ÇÑ´Ù.
dbsearch.cgi
DB °Ë»ö CGIÀÇ ÇÙ½ÉÀ¸·Î ÀÎÀÚ ¾øÀÌ È£ÃâÇÏ¸é µî·ÏµÈ µ¥ÀÌÅͺ£À̽ºÀÇ Å×ÀÌºí ¸ñ·Ï°ú Çʵå¸íÀ» Æ÷ÇÔÇÑ °Ë»öÆûÀ» »ý¼ºÇÑ´Ù.
Å×À̺íÀÇ À̸§°ú °Ë»ö±âÁØ(Çʵå¸í), °Ë»ö¾î¸¦ ÁÖ¸é °Ë»öÀ» ¼öÇàÇÑ ÈÄ ±× °á°ú¸¦ ¸®ÅÏÇÑ´Ù.
ÇÁ·¹ÀÓ ÆÄÀÏ(sindex.html)
msql ¸ð´ÏÅÍ CGI¿¡¼¿Í µ¿ÀÏÇÑ ¿ªÇÒÀ» ÇÏ´Â ÇÁ·¹ÀÓ ¹èÄ¡¿ëÆÄÀÏÀÌ´Ù.
1 : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
2 : <HTML>
3 : <HEAD>
4 : <TITLE>DB °Ë»ö CGI</TITLE>
5 :
6 : <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=EUC-KR">
7 : <LINK REV="made" HREF="mailto:[email protected] ">
8 : <META NAME="author" content="Jae-Geun, Kim">
9 : </HEAD>
10 : <FRAMESET ROWS="80,*" FRAMEBORDER="NO" FRAMESPACING="0" BORDER="0">
11 : <FRAME NAME="searchtop" SRC="http://qaos.com/~artech/cgi-bin/dbsearch.cgi"
MARGINHEIGHT="0" MARGINWIDTH="0" SCROLLING="NO" NORESIZE >
12 : <FRAME NAME="searchbelow" SRC="./sbelow.html" MARGINHEIGHT="0"
MARGINWIDTH="10" SCROLLING="AUTO" >
13 : </FRAMESET>
14 : </HTML>
15 : </html>
µµ¿ò¸» ÆÄÀÏ(sbelow.html)
dbsearch.cgi¿¡´ëÇÑ °£´ÜÇÑ µµ¿ò¸»À» Æ÷ÇÔÇϰí ÀÖ´Â HTML ¹®¼ÀÌ´Ù.
1 : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
2 : <HTML>
3 : <HEAD>
4 : <TITLE>DB °Ë»ö CGI µµ¿ò¸»</TITLE>
5 :
6 : <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=EUC-KR">
7 : <LINK REV="made" HREF="mailto:[email protected] ">
8 : <META NAME="author" content="Jae-Geun, Kim">
9 : <META name="generator" content="Super NoteTab 4.0">
10 : <META name="keywords" content="DoA, Site, Search, Crack, File">
11 : <META name="description" content="Search DoA's Site">
12 :
13 : </HEAD>
14 : <body>
15 :
16 : <H2> µµ¿ò¸» </H2>
17 : <hr noshade size=4>
18 :
19 : </body>
20 : </html>
°Ë»ö ÇÁ·Î±×·¥(dbsearch.cgi)
DB °Ë»ö CGIÀÇ ÇÙ½ÉÀ¸·Î ÀÎÀÚ ¾øÀÌ È£ÃâÇÏ¸é µî·ÏµÈ µ¥ÀÌÅͺ£À̽ºÀÇ Å×ÀÌºí ¸ñ·Ï°ú Çʵå¸íÀ» Æ÷ÇÔÇÑ °Ë»öÆûÀ» »ý¼ºÇÑ´Ù.
Å×À̺íÀÇ À̸§°ú °Ë»ö±âÁØ(Çʵå¸í), °Ë»ö¾î¸¦ ÁÖ¸é °Ë»öÀ» ¼öÇàÇÑ ÈÄ ±× °á°ú¸¦ ¸®ÅÏÇÑ´Ù.
¼Ò½º
1 : #! /usr/local/bin/perl
2 : require './cgi-lib.pl';
3 :
4 : $database = 'commlab';
5 :
6 : ReadParse(*FORM);
7 :
8 : use Msql;
9 :
10 : $dbh = Msql->connect;
11 : defined($dbh) || CgiDie('µ¥ÀÌŸº£À̽º¿¡ Á¢¼ÓÇÒ ¼ö ¾ø½À´Ï´Ù');
12 :
13 : $dbh->selectdb($database);
14 :
15 : if($FORM{'table'} eq '') {
16 : print SearchForm();
17 : }
18 :
19 : $query =<<Query;
20 : select _rowid, sid, sname, phone, lid, class from $FORM{'table'}
21 : where $FORM{'select'} like '%$FORM{'query'}%'
22 : Query
23 :
24 : $query =~ tr/[\n,\r]/[ , ]/;
25 :
26 : $sth = $dbh->query($query);
27 :
28 : unless(defined($sth)) {
29 : $msg = $dbh->errmsg;
30 : CgiDie("$msg", $FORM{'query'});
31 : }
32 :
33 : @fields = $sth->name;
34 :
35 : print PrintHeader();
36 : print HtmlTop('ÁúÀǰá°ú');
37 :
38 : print <<Table;
39 : <div align=center>
40 : <table border=1 celpadding=1>
41 : <tr>
42 : Table
43 :
44 : for(0..$#fields) {
45 : print "<th> $fields[$_] </th>\n";
46 : }
47 :
48 : print "</tr>\n";
49 :
50 : while(@row = $sth->fetchrow) {
51 : print "<tr>\n";
52 : for(0..$#row) {
53 : $row[$_] = ' ' if($row[$_] eq '');
54 : print "<td> $row[$_] </td>\n";
55 : }
56 : print "</tr>\n";
57 : }
58 :
59 : print "</table></div>\n";
60 :
61 : print HtmlBot();
62 :
63 : sub SearchForm {
64 : print PrintHeader();
65 : print HtmlTop();
66 :
67 : print <<Form;
68 : <div align=center>
69 : <form action="/~artech/cgi-bin/dbsearch.cgi" method=post
target=searchbelow>
70 : <table border="0" cellpadding="0" cellspacing="1">
71 : <TR>
72 : <TH>Å×À̺í</TH>
73 : <TH>°Ë»ö±âÁØ</TH>
74 : <TH>°Ë»ö¾î</TH>
75 : <TH> </TH>
76 : </TR>
77 : <TR>
78 : <TD align=center valign=top>
79 : <select name="table">
80 : Form
81 :
82 : @tables = $dbh->listtables;
83 : for(0..$#tables) {
84 : print "<option> $tables[$_]\n";
85 : }
86 :
87 : print <<Form;
88 : </select>
89 : </TD>
90 :
91 : <TD>
92 : <select name=select>
93 : <option value=sid>Çйø
94 : <option value=sname>À̸§
95 : <option value=phone>ÀüÈ
96 : <option value=lid>°Á¹øÈ£
97 : <option value=class>Çаú
98 : </select>
99 : </TD>
100 :
101 : <TD><input type=text name=query size=40></TD>
102 :
103 : <TD valign=top><input type=submit value="º¸³»±â"></TD>
104 : </TR>
105 : </table>
106 : </form>
107 : </div>
108 : Form
109 :
110 : print HtmlBot();
111 :
112 : exit;
113 : }
½ÇÇà°á°ú
¼³¸í
1~13
cgi-lib.pl ¶óÀ̺귯¸®¸¦ È£ÃâÇϰí, Æû µ¥ÀÌÅ͸¦ Àаí, DB ¿£Áø¿¡ Á¢¼Ó, DB¸¦ ¼±ÅÃÇÏ´Â ºÎºÐÀÌ´Ù. msql.cgi³ª listdb.cgi¿Í´Â ´Þ¸® µ¥ÀÌÅͺ£À̽ºÀÇ À̸§À» ¾Ë°í ÀÖ¾î¾ß ÇϹǷΠµ¥ÀÌÅͺ£À̽ºÀÇ À̸§Àº CGI ÇÁ·Î±×·¥ ³»¿¡¼ ÇÒ´çÇß´Ù.
4 : $database = 'commlab';
¶ÇÇÑ Å×À̺íÀÇ ¸ñ·ÏÀ» °¡Á®¿À±âÀ§ÇØ µ¥ÀÌÅͺ£À̽º¸¦ ¼±ÅÃÇÑ ÈÄ ÆûÀ» Ãâ·ÂÇÏ´Â SearchForm()¸¦ È£ÃâÇÑ´Ù´Â »ç½Ç¿¡ ÁÖÀÇÇϱ⠹ٶõ´Ù.
13 : $dbh->selectdb($database);
14 :
15 : if($FORM{'table'} eq '') {
16 : print SearchForm();
17 : }
19~22
°Ë»öÇÒ ÁúÀǾ »ý¼ºÇÏ´Â ºÎºÐÀÌ´Ù. msql ¸ð´ÏÅÍ ÇÁ·Î±×·¥¿¡¼ SQL¹®À» ÀÔ·ÂÇÏ´Â °Í°ú µ¿ÀÏÇÏ´Ù. query ¸Þ¼Òµå¿¡ Á÷Á¢ÀÔ·ÂÇØµµ µÇÁö¸¸ °¡µ¶¼ºÀ» À§ÇØ µû·Îó¸®ÇÏ¿´´Ù.
ÀÌ ºÎºÐ¿¡¼ ÁÖÀÇÇÒ °ÍÀº _rowid¶ó´Â ½Ã½ºÅÛ º¯¼ö¸¦ Ãâ·Â Çʵ忡 Æ÷ÇÔ½ÃŲ´Ù´Â Á¡ÀÌ´Ù. ÇÊµå µ¥ÀÌŸ´Â °°À» ¼ö ÀÖÁö¸¸ ½Ã½ºÅÛ¿¡ÀÇÇØ »ý¼ºµÇ´Â _rowid´Â Ç×»ó ´Ù¸£±â ¶§¹®¿¡ µ¥ÀÌÅÍÀÇ ¼öÁ¤À̳ª »èÁ¦´Â ¹Ýµå½Ã ÀÌ _rowid¸¦ ÀÌ¿ëÇØ¾ß ÇÑ´Ù.
20 : select _rowid, sid, sname, phone, lid, class from FORM{'table'}
SQL¹®¿¡¼ Á¶°ÇÀº Áß°£ÀÚ °Ë»öÀ» ¼öÇàÇϱâÀ§ÇØ LIKE Á¤±Ô½ÄÀ» »ç¿ëÇßÀ¸¸ç, ÆûÀÇ VALUE ¼Ó¼ºÀÇ °ªÀ» Çʵå¸íÀ¸·Î »ç¿ëÇß´Ù.
21 : where $FORM{'select'} like '%$FORM{'query'}%'
$query =~ tr/[\n,\r]/[ , ]/;
SQL ÁúÀǸ¦ ÀÔ·ÂÇÏ´Â Áß¿¡ »ðÀÔµÈ °³Ç๮ÀÚ¸¦ °ø¹éÀ¸·Î º¯È¯ÇÏ´Â ºÎºÐÀÌ´Ù. Unix¸¦ ±â¹ÝÀ¸·Î µ¿ÀÛ½ÃŰ´Â °æ¿ì¿¡ ÀÌ ÇàÀº »ý·«Çصµ µÈ´Ù.
$sth = $dbh->query($query);
½ÇÁ¦ »ç¿ëÀÚÀÇ ÁúÀǰ¡ mSQL DB ¿£ÁøÀ¸·Î Àü¼ÛµÈ´Ù. msql ¸ð´ÏÅÍ ÇÁ·Î±×·¥¿¡¼ '\g'¸¦ ÀÔ·ÂÇÑ °Í°ú µ¿ÀÏÇÏ´Ù°í º¸¸é µÈ´Ù.
33~61
msql.cgi¿Í ¿ÏÀüÈ÷ µ¿ÀÏÇÏ´Ù. ÁúÀǸ¦ ¼öÇàÇÏ°í ±× °á°ú¸¦ HTMLÀÇ Ç¥·Î Ãâ·ÂÇÏ´Â ºÎºÐÀÌ´Ù.
63~113
msql.cgi¿Í °ÅÀÇ µ¿ÀÏÇÏ´Ù. ´Ù¸¸ msqlÀº µ¥ÀÌÅͺ£À̽º¿¡´ëÇÑ ÁúÀǸ¦ ¼öÇàÇÏÁö¸¸ °Ë»öÀº Å×ÀÌºí¿¡ ´ëÇÑ ÁúÀǸ¦ ¼öÇàÇϹǷΠÃâ·ÂµÇ´Â °Ë»öÆû¿¡ ¾à°£ÀÇ Â÷À̰¡ ÀÖÀ» »ÓÀÌ´Ù.
ÇѰ¡Áö ÁÖÀÇ ÇÑ °ÍÀº 92~98Çà¿¡¼ »ç¿ëÇÑ <SELECT> ű×ÀÌ´Ù. »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ °ªÀ» ¹Ù·Î WHERE ±¸¹®ÀÇ Çʵå¸íÀ¸·Î »ç¿ëÇϱâÀ§ÇØ <OPTION> ű×ÀÇ VALUE ¼Ó¼ºÀ» Çʵå¸íÀ¸·Î Çß´Ù.
92 : <select name=select>
93 : <option value=sid>Çйø
94 : <option value=sname>À̸§
95 : <option value=phone>ÀüÈ
96 : <option value=lid>°Á¹øÈ£
97 : <option value=class>Çаú
98 : </select>