게시글 제목인 '방금가입했어요'를 클릭하면 a 태그에 따라 free.php 뒤에 GET변수로 mode=view 와 bno=9 를 넘겨 주잖아.
그러니 bbs.php 에서 case 'view' 자리로 이동하게 되겠지?
그 자리부터 한 번 보자구.
case 'view' :
if (!isset($_GET['bno'])) {
echo '<script>alert("잘못된 글번호 입니다!"); </script>';
echo '<script>location=" '. $_SERVER['PHP_SELF'] .' "</script> ';
exit;
}
if ($_SESSION['sslevel'] < $read_level) { // 사용자 레벨이 게시판 글읽기 권한 보다 작으면
echo '글읽기 권한이 없습니다.';
exit ;
}
$bno = $_GET['bno'];
$mode = '?mode=view&bno='.$_GET['bno'].'&'.$pre_url ;
//-- 댓글 입력저장(추가만)...
if(isset($_POST["cmt-submit"])) {
$action = 'cmt-add';
save_bbs($action, $bno, $catno, $mode, $isAlbum); //-- 댓글 추가내용 저장함수 (수정은 위 $action = edit 에서..)
}
$bno = $_GET['bno'];
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME) or die('DB 접속에러!');
$query = "SELECT `datetime`, `subject`, `content`, `uno`, `linkfile`, `cmt`, `hit`, `writer` FROM yg_bbs WHERE bno = $bno" ;
$result = mysqli_query($dbc, $query) or die('DB 쿼리에러-bbs.php');
$row = mysqli_fetch_array($result) ;
$uno = $row['uno'];
$linkfile = $row['linkfile'];
$hit = $row['hit'] + 1 ; // 조회수를 1 증가
$query = "UPDATE yg_bbs SET hit='$hit' WHERE bno = $bno" ;
$result = mysqli_query($dbc, $query) or die('DB 조회수 변경에러');
//**************************************************************
include_once(YOGI_DIR .'/bbs_view.php'); // 게시글과 댓글 보기
//**************************************************************
break;
먼저 인자로 bno 가 들어 왔는지 확인하고 없으면 알람 메시지를 주고 바로 빠져 나가.
그리고 이 게시판의 읽기권한이 사용자의 권한 보다 크면 역시 메시지를 주고 빠져 나가도록 했어.
그리고 $bno 변수에 GET 으로 받은 게시글 고유번호인 bno 를 받아서 저장했어.
▶ if(isset($_POST["cmt-submit"])) {
여기서 $_POST["cmt-submit"]는 게시글 보기 하단에 있는 댓글상자에 글을 쓰고 [댓글저장]을 클릭했을때 오게되는 자리야.
댓글을 입력했으면 우선 저장하고 아래쪽을 처리하도록 했어.
게시글과 댓글을 저장하는 것은 save_bbs() 라는 사용자 함수인데, 저 아래쪽에 가면 코드를 만날 수 있어.
(그 자리는 너무 복잡해서 일단 설명 보류야...ㅎ)
다음은 DB에 접속해서 $bno 에 해당하는 게시글을을 SELECT 문으로 가져오는 내용이야.
이제 이 부분들은 익숙해 졌지?
그리고 다음은 해당 게시글의 조회수에 + 1 을 한 값을 다시 SQL UPDATE 문을 사용해서 수정하고 있어.
$hit = $row['hit'] + 1 ; // 조회수를 1 증가
$query = "UPDATE yg_bbs SET hit='$hit' WHERE bno = $bno" ; // 게시글 수정
마지막으로 bbs_view.php 파일을 include 했는데, 이것이 화면에 출력하는 내용이야.
우선 둘째줄에서 게시글 작성날짜와, 작성자 이름을 우측 정렬로 보여주고, 그 아래 줄에서는 제목을 출력했어.
▶ if (!empty($linkfile))
$linkfile 변수는 게시글 작성시 그림파일을 첨부했으면 이 그림파일의 이름이 저장되어 있어.
그러니 $linkfile 이 있으면 그림을 맨 위에 먼저 보여 주게 되겠지.
▶ echo nl2br($row['content']
본문의 내용을 echo 로 출력하면서 nl2br() 함수를 거쳐서 출력하고 있어.
nl2br() 함수는 게시글 내용에 사용자가 Enter를 쳐서 줄이 바뀌는 곳에 <br>코드를 삽입하는 함수야.
여러분도 알다시피 Html 에서는 <br>태그가 없으면 모든 줄이 붙어서 보이잖아.
그러니 그냥 내 보내면 작성자는 열심히 Enter 로 줄 띠워서 입력했는데 볼 때는 다 붙어 보이면 이상해 보일 것 아냐.
그때 이 함수를 통과하면 새 줄을 만나는 곳에는 자동으로 <br> 코드를 삽입해서 출력하게돼.
nl2br 이라는 이름은 NewLine to(2) <br>의 의미로 생각하면 기억하지 좋겠지?
그 아래 쪽에는 [목록으로] 버튼을 두고, 또 게시글 작성자 본인이거나 관리자면 [수정][삭제] 버튼도 보이도록 처리했어.
일반회원이 다른 사람의 게시글을 임의로 수정, 삭제하면 안되겠지?
▶ if ($isComment == true) { include_once(YOGI_DIR . '/bbs_comment.php')
마지막에 $isComment == true 이면 bbs_comment.php 를 불러 오라는 조건문이 있어.
요기보드의 기본설치 상태에서 자유게시판(free.php) 에는 bbs.php 를 불러오기 전에 $isComment = true 가 있었던거 기억나?
그러니까 이 자유게시판에서는 게시글을 볼때 이 변수 $isComment 때문에 본문 아래에 댓글이 보이게 되는거야.
맨 마지막 줄은 다시 if ($isList == true) 로 $isList 변수가 true 이면 댓글 아래쪽에 다시 게시판의 글리스트를 출력하라고 했어.
이 부분에 대해서는 전에 어디선가 설명했지?
bbs_comment.php 는 코드가 약간 되니 다음 장에서 공부해 볼거야.