※sessionCheck.php
<?php
if(!isset($_SESSION['memberID'])){
Header("Location:../login/login.php");
}
?>
- 게시글보기(boardView.php) 맨 위에 <?php ?>부분에 include "../connect/sessionCheck.php";를 추가하여 로그인을 하여 memberID값이 있어야지만 게시글을 볼수 있게 하였습니다.
※게시판 수정하기(boardModify.php)
echo "<div class= 'mt50'><label for='boardPass'>비밀번호</label><input type='password' id='boardPass' name='boardPass' class='inputStyle' autocomplete='off' required placeholder='글을 수정하려면 로그인 비밀번호를 입력하셔야 합니다.'></div>";
- $result 로게시글 수정하기에 내용과 제목을 입력한곳에 위에 문장을 더 추가하여 회원의 비밀번호를 입력해야지 게시글을 수정할수 있게 해주었습니다.
-게시판 수정저장하기boardModifySave.php
<?php
include "../connect/connect.php";
include "../connect/session.php";
$boardID = $_POST['boardID'];
$boardTitle = $_POST['boardTitle'];
$boardContents = $_POST['boardContents'];
$boardPass = $_POST['boardPass'];
echo $boardID, $boardTitle, $boardContents, $boardPass;
$boardTitle = $connect -> real_escape_string($boardTitle);
$boardContents = $connect -> real_escape_string($boardContents);
$boardPass = $connect -> real_escape_string($boardPass);
$memberID = $_SESSION['memberID'];
// echo $memberID;
$sql = "SELECT * FROM members WHERE memberID = {$memberID}";
$result = $connect ->query($sql);
if($result){
$info = $result -> fetch_array(MYSQLI_ASSOC);
if($info['memberID'] == $memberID && $info['youPass'] == $boardPass){
$sql = "UPDATE board SET boardTitle = '{$boardTitle}', boardContents = '{$boardContents}' WHERE boardID = '{$boardID}'";
$connect -> query($sql);
} else {
echo "<script>alert('비밀번호가 틀렸습니다. 다시 한번 확인해주세요!')</script>";
}
} else {
echo "<script>alert('관리자에러!')</script>";
};
?>
<Script>
location.href = "board.php";
</Script>
- boardModify.php에서 사용자가 입력한 비밀번호가 맞을때 게시글이 수정될수 있게 해주었습니다.
※board.php(게시판) 게시판 페이지 추가
if(isset($_GET['page'])){
$page = (int) $_GET['page']; //(int)출력문의 타입을 정해줄수있다. (숫자)
} else {
$page = 1;
}
$viewNum = 20;
$viewLimit = ($viewNum * $page) - $viewNum;
// 1~20 DESC LIMIT 0,20 ---> page1 ($viewNum * 1) - $viewNum
// 21~40 DESC LIMIT 20,20 ---> page2 ($viewNum * 2) - $viewNum
// 41~60 DESC LIMIT 40,20 ---> page3 ($viewNum * 3) - $viewNum
// 61~80 DESC LIMIT 60,20 ---> page4 ($viewNum * 4) - $viewNum
- 현재 페이지의 값을 숫자로 가져오고 없으면 1을 저장해줍니다.
- 한페이지에 보여주는 게시글의 갯수를 20으로 저장하고 그값을 SQL문으로 만들어주기위해
$viewLimit = ($viewNum * $page) - $viewNum;공식을 만들어줍니다.
<?php
// 게시글 총 갯수
// 몇 페이지??
$sql = "SELECT count(boardID) FROM board"; //총갯수 불러오기
$result = $connect -> query($sql);
$boardTotalCount = $result -> fetch_array(MYSQLI_ASSOC);
$boardTotalCount = $boardTotalCount['count(boardID)'];
// 총 페이지 갯수
$boardTotalCount = ceil($boardTotalCount/$viewNum);
//1 2 3 4 5 6 7 8 9 10 11 12 13
$pageView = 5;
$startPage = $page - $pageView;
$endpage = $page + $pageView;
//처음 페이지 초기화//마지막 페이지 초기화
if(isset($boardTotalCount) && $page <= $boardTotalCount && $page >= 1){ //글이 없을 때 처음으로이전 다음마지막으로 없애기
if($startPage < 1) $startPage = 1;
if($endpage >= $boardTotalCount) $endpage = $boardTotalCount; //
//처음으로/이전
if($page != 1){
$prevPage = $page - 1;
echo "<li><a href='board.php?page=1'>처음으로</a></li>";
echo "<li><a href='board.php?page={$prevPage}'>이전</a></li>";
}
//페이지
for($i=$startPage; $i<=$endpage; $i++){
$active = "";
if($i == $page) $active = "active";
echo " <li class='{$active}'><a href='board.php?page={$i}'>{$i}</a></li>";
}
//마지막으로/다음
if($page != $boardTotalCount){
$NextPage = $page + 1;
echo "<li><a href='board.php?page={$NextPage}'>다음</a></li>";
echo "<li><a href='board.php?page={$boardTotalCount}'>마지막으로</a></li>";
}
} else echo "게시글이 없습니다."
?>
- SQL에 저장되어있는 게시글의 총갯수를 가져와 fetch_array를 통해 배열로 가져온후 그값을 다시 한페이지당 보이는 게시글의 갯수(viewNum)와 나누어 ceil()로 반올림을하여 그값을 페이지갯수 값으로 저장합니다.
만약 없다면 "게시글이 없습니다"를 출력합니다.
-현재 있는 페이지를 기준으로 몇페이지 까지 보이게 하고싶은지 정한후 pageView에 저장합니다.
-현재 페이지에 이전에있는 페이지를 pageView만큼 보여주게 하기위해 그값을 startPage에 저장합니다.
-현재 페이지에 다음에있는 페이지를 pageView만큼 보여주게 하기위해 그값을 endpage에 저장합니다.
- 조건문을 통해 (boardTotalCount)값이 있는지 확인하고, 현재 페이지 번호($page)가 총 게시글 수($boardTotalCount)보다 작거나 같고, 1보다 크거나 같을 때에만 다음문장을 실행 하도록 해줍니다.
- 실행을 했을때 조건문으로 이전페이지를 보여주는 startPage가 1보다 작을때 그페이지를 1로 변경하도록 하였습니다.
- 조건문으로 다음 페이지를 보여주는 endpage가 페이지의 총갯수인 boardTotalCount 보다 클 경우 그값을 boardTotalCount로 변경 하였습니다.
//처음으로/이전
- 현재 페이지의 값이 1이 아닐때 "처음으로"와 "이전" 링크를 출력하게 하였습니다.
//페이지
- 반복문을 통해 보여주는이전페이지갯수(startPage)에서 시작해서 보여주는 다음페이지갯수(endpage)만큼 페이지수를 만들어 줍니다.
//마지막으로/다음
-현재 페이지의 값이 마지막 페이지의 값이 아닐때 출력하게 "다음"과 "마지막으로" 링크를 출력하게 하였습니다.