반응형
안녕하세요.
일단 아래 강좌를 읽어보시구..
어느정도 이해가 되셨다면.. 실제 소스를 쭉~ 함 보시기 바랍니다.
자세한 설명은 담 강좌에..
참고로 이 방명록 소스는 phpschool에 공개된 소스로서 개인적으로 약간의 버그를 수정하였음을 알려드립니다.
또한 실험해보고 싶으신 분들께서는 http://lax.wo.to 의 [ GuestbooK ] 으로 오심 되구요..^^;;(실험하실때 브라우저 아래쪽에 페이지 정보중 버튼들위에 마우스 커서를 놓았을때 $start값이 어떻게 변하는가.. 등을 잘 살펴보시면 이해하는데 훨씬 쉬울듯..)
그럼 소스 올라갑니당~
<HTML>
<HEAD>
<TITLE>GuestBook</TITLE>
<link rel=StyleSheet href='../lax.css' type='text/css'>
</HEAD>
<BODY BGCOLOR="#006699" LINK="#99CCFF" VLINK="#99CCCC" TEXT="#FFFFFF">
<br><CENTER>방명록..</CENTER><br><br>
<center>
<?php
//DB접속부분=========================================
//
$connect = mysql_connect("localhost", "korea188", "xxxxxxxx") or die("서버에 연결할 수 없습니다.");
mysql_select_db("korea188", $connect);
$scale = 7; //페이지당 글 수
$admin_ip = 'xxx.xxx.xxx.xxx';
//==================================================
//내용 보여주기========================================
//
//
//
if(!$mode)
{
if(!$start) {$start = 0;}
$que1 = "select DATE_FORMAT(reg_date, 'Y년 m월 d일 H시i분'), id, name, home, email, comment, ip from guestbook order by id DESC";
$result = mysql_query($que1, $connect);
$total = mysql_affected_rows();
for($i = $start; $i < $start + $scale; $i++) //★★★ start에서 scale까지만 출력하기...!!!!
{
if($i < $total) //전체 자료 갯수까지만 출력..!!
{
mysql_data_seek($result, $i); //결과($result)에서 $i 번째 글로 이동..!!
$row = mysql_fetch_array($result);
$row[name] = stripslashes($row[name]);
$row[home] = stripslashes($row[home]);
$row[email] = stripslashes($row[email]);
$row[comment] = stripslashes($row[comment]);
echo("<TABLE BORDER='0' cellspacing='1'>
<TR>
<TD width='90' bgcolor='#5485B6' align='center'>
<a href='$PHP_SELF?mode=del&id=$row[id]'><img src='./img/del.gif' border='0'></a>
</TD>
<TD width='319'>
<font size='1' color='#FAF1C7'>$row[0]</font> <font size='1' color='#006699'>from $row[ip]</font>
</TD>
</TR>
<TR>
<TD width='90' bgcolor='#5485B6' align='center'>
<font color='#CDDAE4'>Name</font>
</TD>
<TD width='319'>
<font color='#E7EEF5'>$row[name]</font>
</TD>
</TR>
<TR>
<TD width='90' bgcolor='#5485B6' align='center'>
<font color='#CDDAE4'>Email / Home</font>
</TD>
<TD width='319'>
<a href='mailto:$row[email]'><font color='#E7EEF5'>
<img src='./img/mail.gif' border='0' alt='편지쓰기'>$row[email]</font></a> ");
if($row[home])
{
echo("<a href=http://$row[home]><font color='#E7EEF5'>
<img src='./img/home.gif' border='0' alt='홈페이지'>http://$row[home]</font></a>");
}
echo("</TD>
</TR>
<TR>
<TD width='90' bgcolor='#5485B6' align='center'>
<font color='#CDDAE4'>Comment</font>
</TD>
<TD width='319'>
<font color='#E7EEF5'>$row[comment]</font>
</TD>
</TR>
<TR>
<TD colspan='2' width='409'><HR size='1' noshade>
</TD>
</TR>
</TABLE>");
}
}
//아래 버튼 부분(글쓰기, 이전, 다음 페이지)--------------
//
//
echo("<center><a href='$PHP_SELF?mode=new'>
<img src='./img/write.gif' border='0' alt='방명록에 글쓰기'></a>");
$p_p = $start - $scale;
$n_p = $start + $scale;
if($p_p >= 0 && $mode!='new')
{
echo("<a href='$PHP_SELF?start=$p_p'><img src='./img/p-doc.gif' border='0' alt='이전페이지'></a>");
}
if($n_p < $total)
{
echo("<a href='$PHP_SELF?start=$n_p'><img src='./img/n-doc.gif' border='0' alt='다음페이지'></a>");
}
//
//
//------------------------------------------------------
}
//
//
//내용보여주기 끝==================================================
//새글쓰기 폼... $mode = new 일때..====================================
//
//
//
if($mode == 'new')
{
echo("<FORM name='form' method='post' action='$PHP_SELF'>
<TABLE border='0' cellspacing='1'>
<TR>
<TD width='90' bgcolor='#5485B6' align='center'>
<FONT color='#CDDAE4'>이 름</FONT>
</TD>
<TD width='319'>
<INPUT type='text' name='name' size='6' maxlength='20' style='border:1 solid black'>
</TD>
</TR>
<TR>
<TD width='90' bgcolor='#5485B6' align='center'>
<FONT color='#CDDAE4'>홈페이지</FONT>
</TD>
<TD width='319'>
http://<INPUT type='text' name='home' maxlength='40' style='border:1 solid black'>
</TD>
</TR>
<TR>
<TD width='90' bgcolor='#5485B6' align='center'>
<FONT color='#CDDAE4'>Email 주소</FONT>
</TD>
<TD width='319'>
<INPUT type='text' name='email' maxlength='40' style='border:1 solid black'>
</TD>
</TR>
<TR>
<TD width='90' bgcolor='#5485B6' align='center'>
<FONT color='#CDDAE4'>남기실 말씀</FONT>
</TD>
<TD width='319'>
<TEXTAREA name='comment' rows='6' cols='50' style='border:1 solid black'></TEXTAREA>
</TD>
</TR>
<TR>
<TD colspan='2'> </TD>
</TR>
<TR>
<TD width='409' colspan='2' align='right'>
<INPUT type='submit' name='submit' value='글 남기기' style='border:1 solid black'>
</TD>
</TR>
</TABLE>
<input type='hidden' name='mode' value='up'>
</FORM>");
}
//
//
//
//새글쓰기 폼 끝=======================================
//작성한 글 올리기... $mode = up 일때..=======================
//
//
//
if($mode == 'up')
{
if(!$name)
{
echo("
<script>
window.alert('이름을 적어주세요.')
history.go(-1)
</script>
");
exit;
}
if(!$comment)
{
echo("
<script>
window.alert('남기실 말씀을 적어주세요.')
history.go(-1)
</script>
");
exit;
}
$name = addslashes($name);
$home = addslashes($home);
$email = addslashes($email);
$comment = addslashes($comment);
$que1 = "insert into guestbook values('', '$name', '$home', '$email', '$comment', '$REMOTE_ADDR', now())";
$result = mysql_query($que1, $connect);
if($result)
{
echo("");
}
else
{
echo("<script>
window.alert('DB오류가 발생하였습니다.')
history.go(-1)
</script>");
exit;
}
echo("<meta http-equiv='Refresh' content='0; URL=$PHP_SELF'>");
}
//
//
//
//작성한 글 올리기 끝====================================
//글 지우기===========================================
//
//
//
if($mode == 'del')
{
if($REMOTE_ADDR != $admin_ip)
{
echo("<script>
window.alert('관리자만 지울 수 있습니다.')
</script>
");
exit;
}
else
{
$que1 = "delete from guestbook where id=$id";
$result = mysql_query($que1, $connect);
}
echo("<meta http-equiv='Refresh' content='0; URL=$PHP_SELF'>");
}
//
//
//
//===============================================
?>
</center>
</BODY>
</HTML>
원본 출처 : http://www.koreaphp.co.kr/index1.html
반응형
'프로그래밍' 카테고리의 다른 글
cpu 사용률 구하는 방법에 대한 다양한 견해 (0) | 2009.12.24 |
---|---|
디자인 패턴 정리 (0) | 2009.12.11 |
phpschool 방명록강좌(1) - [ 전체 알고리즘 이해하기 ] 편 (0) | 2009.12.06 |
PHP 인증사용하기 (0) | 2009.12.06 |
PHP4의 또다른 이름 "Zend" 가 뭘까? (0) | 2009.12.06 |
댓글