Download presentation
Presentation is loading. Please wait.
1
11장 방명록 한빛미디어(주)
2
학습 목표 방명록 동작 기능을 이해한다 방명록 DB 테이블을 생성하는 법을 익힌다 방명록 메인 화면 소스를 이해한다.
3
주요 학습 내용 01. 파일목록 및 DB 테이블 02. 방명록 메인 프로그램 03. 방명록 글 저장 04. 방명록 글 삭제
4
방명록 기능 01 ⑴ 로그인 여부와 상관없는 글 쓰기 ⑵ 글쓴이, 글쓴 날짜, 글 내용, 접속 IP 등의 방명록 글 출력
⑶ 글 삭제 시 비밀번호 확인 ⑷ 목록보기 아래에 링크 페이지 번호 표시
5
방명록 미리보기 02
6
방명록 파일 목록 03 파일명 설명 guestbook.sql 방명록 DB 테이블 생성 명령 guestbook.php
방명록 메인 화면 insert.php 방명록 글을 DB에 저장 passwd_form.php 글 삭제 시 사용되는 비밀번호 확인 양식 delete.php 방명록 글을 DB에서 삭제 [표 11-1] 방명록에 사용되는 파일 목록
7
방명록 프로그램 설치 04 ⑴ 작업 폴더(“www" 폴더) 밑에 “guestbook" 폴더를 만들고 생성된 “guestbook" 폴더 밑에 교재 뒤 CD의 “www\guestbook" 폴더에 있는 파일들과 "img" 디렉토리를 통째로 복사한다. ⑵ 방명록 DB 테이블을 생성한다.
8
not null, auto_increment,
방명록 DB 테이블 05 필드 이름 타입 추가 사항 필드 설명 num int not null, auto_increment, primary key 일렬 번호 name varchar(10) not null 이름 passwd 비밀 번호 content text 글 내용 egist_day varchar(20) 글 쓴 날짜 ip 접속 IP [표 11-2] 방명록 DB 테이블(테이블 명 : guestbook)
9
방명록 DB 테이블 만들기 06 메모장으로 다음을 타이핑한 다음 “c:\mysql\bin” 폴더 밑에 “guestbook.sql”이름으로 저장 create table guestbook ( num int not null auto_increment, name varchar(10) not null, passwd varchar(10) not null, content text not null, regist_day varchar(20), ip varchar(20), primary key(num) ); 명령 프롬프트에서 다음을 실행 C:\mysql\bin> mysql -uphp5 -p1234 php5_db < guestbook.sql
10
【예제 11-1】guestbook.php 02 방명록 메인 소스 1 : <html> 2 : <head>
3 : <title>:: PHP 프로그래밍 입문에 오신 것을 환영합니다~~ ::</title> 4 : <link rel="stylesheet" href="../style.css" type="text/css"> 5 : </head> 6 : <body leftmargin="0" topmargin="0" marginwidth="0“ marginheight="0"> 7 : <table border=0 cellspacing=0 cellpdding=0 width='776' align='center'> 8 : <tr> 9 : <td colspan="5" height=25> 10 : <img src="img/guestbook_title.gif"></td> 11 : </tr> 12 : <tr> 13 : <td background="img/bbs_bg.gif">
11
【예제 11-1】guestbook.php 02 14 : <img border="0" src="img/blank.gif" width="1" height="3"></td> 15 : </tr> 16 : </table> 17 : <tr><td background="img/bbs_bg.gif"> 19 : <img border="0" src="img/blank.gif" width="1" height="1"></td> 20 : </tr> 21 : <table border=0 cellspacing=0 cellpdding=0 width='776‘ align='center'> 22 : <form action="insert.php"> 23 : <tr><td>이름 : <input type=text 24 : style='font-size:9pt;border:1px solid' name=name size=10> 25 : 비밀번호 : 26 : <input type=password style='font-size:9pt;border:1px solid' 27 : name=passwd size=10></td></tr> 28 : <tr height=5><td> </td></tr> 29 : <tr><td><textarea style='font-size:9pt;border:1px solid' 30 : name="content” style=background-image:url
12
【예제 11-1】guestbook.php 02 31 : ('img/bbs_text_line.gif'); cols=125 rows=5 32 : wrap=virtual></textarea></td></tr> 33 : <tr height=5><td> </td></tr> 34 : <tr><td align=right><input type=image src=img/regist.gif> </td></tr> 35 : </form> 36 : </table> 37 : <table width=776 border=0 cellspacing=0 cellpadding=0 align=center> 38 : <tr height=5><td colspan=2> </td></tr> 39 : <tr height=1 bgcolor=#5AB2C8><td colspan=2></td></tr> 40 : <? 41 : $scale = 5; // 한 화면에 표시되는 글 수 43 : include "../dbconn.php"; 44 : 45 : $sql = "select * from guestbook order by num desc"; 46 : $result = mysql_query($sql, $connect);
13
【예제 11-1】guestbook.php 02 48 : $total_record = mysql_num_rows($result); // 전체 글 수 50 : // 전체 페이지 수($total_page) 계산 51 : if ($total_record % $scale == 0) 52 : $total_page = floor($total_record/$scale); 53 : else 54 : $total_page = floor($total_record/$scale) + 1; 55 : 56 : if (!$page) // 페이지번호($page)가 0 일 때 57 : $page = 1; // 페이지 번호를 1로 초기화 58 : 59 : // 표시할 페이지($page)에 따라 $start 계산 60 : $start = ($page - 1) * $scale; 62 : for ($i=$start; $i<$start+$scale && $i < $total_record; $i++) 63 : { 64 : mysql_data_seek($result, $i); // 레코드 포인터 이동 65 : $row = mysql_fetch_array($result); // 레코드 가져오기
14
【예제 11-1】guestbook.php 02 67 : $content = str_replace("\n", "<br>", $row[content]); 68 : $day = $row[regist_day]; 70 : echo " <tr height=25><td> $row[num] $row[name] 72 : $day </td> 73 : <td align=left><a href='passwd_form.php?num=$row[num]'> 74 : 삭제</a></td></tr> 75 : <tr height=1 bgcolor=#5AB2C8><td colspan=2></td></tr> 76 : <tr><td colspan=2> </td></tr> 77 : <tr><td colspan=2>$content<br> 78 : </td></tr> 79 : <tr><td colspan=2 align=right>IP address : $row[ip]</td></tr> 80 : <tr height=1 bgcolor=#5AB2C8><td colspan=2></td></tr> "; 82 : } 83 : ?> 84 : <tr><td colspan=2> </td></tr> 85 : <tr><td colspan=2 align=center>
15
【예제 11-1】guestbook.php 02 86 : <? 87 : // 게시판 목록 하단에 페이지 링크 번호 출력
86 : <? 87 : // 게시판 목록 하단에 페이지 링크 번호 출력 88 : for ($i=1; $i<=$total_page; $i++) 89 : { 90 : if ($page == $i) 91 : { 92 : echo " <font color='4C5317'><b>[$i]</b></font> "; 95 : } 96 : else 97 : { 98 : echo " <a href='guestbook.php?page=$i'> 100 : <font color='4C5317'>[$i]</font></a> "; 102 : } 103 : } 104 : ?>
16
【예제 11-2】insert.php 02 방명록 글 저장 1 : <?
1 : <? 2 : if(!$name) { echo(" <script> 5 : window.alert('이름을 입력하세요.') 6 : history.go(-1) 7 : </script> "); 9 : exit; 10 : }· 11 : 12 : if(!$passwd) { 13 : echo(" <script> 15 : window.alert('비밀번호를 입력하세요.') 16 : history.go(-1) 17 : </script> "); 19 : exit; 20 : }
17
【예제 11-2】insert.php 02 31 : // 현재의 '년-월-일-시-분'을 저장
31 : // 현재의 '년-월-일-시-분'을 저장 32 : $regist_day = date("Y-m-d (H:i)"); 33 : // 방문자의 IP 주소를 저장 34 : $ip = $REMOTE_ADDR; 37 : include "../dbconn.php"; 38 : 39 : $sql = "insert into guestbook(name, passwd, content, regist_day, ip) "; 40 : $sql .= "values('$name', '$passwd', '$content', '$regist_day', '$ip')"; 41 : 42 : mysql_query($sql, $connect); 43 : 44 : mysql_close(); 45 : 46 : Header("Location:guestbook.php"); // guestbook.php 로 이동 47 : ?>
18
【예제 11-3】passwd_form.php 02 비밀번호 입력 확인
19 : <script language=javascript> 20 : function go() { 21 : if (document.pwform.passwd.value == "") { 22 : alert("비밀번호를 입력해 주세요."); 23 : return false; 24 : } 25 : document.pwform.submit(); 26 : } 27 : 28 : function clean() { 29 : document.pwform.passwd.value = ""; 30 : } 31 : </script>
19
【예제 11-3】passwd_form.php 02 35 : <form name=pwform method=post
36 : action='delete.php?num=<? echo $num ?>'> 37 : <table cellpadding="0" cellspacing="0" border="0" width="306"> 38 : <tr height=1 bgcolor="#292E5F"> 39 : <td></td> </tr> 41 : <tr height=18> 42 : <td bgcolor="#CEE3F7"><img src="img/bbs_check.gif" > 43 : <font color=003366><b>비밀번호를 입력하세요!</b></font> 44 : </td> </tr> 46 : <tr height=1 bgcolor="#292E5F"> 47 : <td></td> </tr> 49 : <tr height=20 bgcolor="#f7f7f2"> 50 : <td></td> </tr> <tr> 53 : <td valign="top" align="center"> 54 : <table cellpadding="0" cellspacing="5" border="0“ width="100%" 55 : bgcolor="#f7f7f2">
20
【예제 11-3】passwd_form.php 02 56 : <tr> <td width="80" align="right"> 58 : <font size="-1" face="돋움"> 비밀번호 </font> 59 : </td> 60 : <td width="170"> 61 : <input class=c1 type="password" name="passwd" size="15" 62 : maxlength="10"> 63 : </td> </tr> 65 : <tr> <td colspan=2 align=center> 67 : <img src="img/button_ok.gif" align=absmiddle class=hand 68 : onclick="go()"> 69 : <img src="img/button_rewrite.gif" align=absmiddle class=hand 70 : onclick="clean()"> 71 : <img src="img/button_close.gif" align=absmiddle 72 : class=hand onclick="javascript:history.back()"> </tr> 74 : </tr> </table> 76 : </td> 85 : </form>
21
【예제 11-4】delete.php 02 방명록 글 삭제 1 : <? 2 : include "../dbconn.php";
4 : 5 : $sql = "select passwd from guestbook where num=$num"; 6 : $result = mysql_query($sql, $connect); 7 : $row = mysql_fetch_array($result); 8 : 9 : if ($passwd == $row[passwd]) 10 : { 11 : $sql = "delete from guestbook where num = $num"; 12 : mysql_query($sql, $connect); 13 : Header("Location:guestbook.php?page=$page"); 14 : }
22
【예제 11-4】delete.php 02 15 : else 16 : { 17 : echo("
16 : { 17 : echo(" 18 : <script> 19 : window.alert('비밀번호가 틀립니다.') 20 : history.go(-1) 21 : </script> 22 : "); 23 : exit; 24 : } 25 : 26 : mysql_close(); 27 : ?>
Similar presentations