Presentation is loading. Please wait.

Presentation is loading. Please wait.

11장 방명록 한빛미디어(주).

Similar presentations


Presentation on theme: "11장 방명록 한빛미디어(주)."— Presentation transcript:

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 : ?>


Download ppt "11장 방명록 한빛미디어(주)."

Similar presentations


Ads by Google