[PHP] 게시판 만들기 with MVC - 8부 Lock

2023. 12. 28. 11:38· PHP/Modern PHP
목차
  1.  Lock
  2. View
  3. Route
  4. Controller
  5. Model

 

이전글 : [PHP] 게시판 만들기 with MVC - 1부 Migration

이전글 : [PHP] 게시판 만들기 with MVC - 2부 Routing

이전글 : [PHP] 게시판 만들기 with MVC - 3부 View(List & Create)

이전글 : [PHP] 게시판 만들기 with MVC - 4부 Controller

이전글 : [PHP] 게시판 만들기 with MVC - 5부 Pagination

이전글 : [PHP] 게시판 만들기 with MVC - 6부 Read

이전글 : [PHP] 게시판 만들기 with MVC - 7부 Update & Delete

 

 Lock

이번 포스팅에는 잠긴 글 기능을 만들어봅시다.

Post 테이블의 구조를 보면 lock 컬럼이 존재합니다.

이 값으로 잠긴 글인지 여부를 파악하는데 0이면 기본 값, 1이면 글이 잠겼다고 보시면 됩니다.

 

현재 코드로도 비밀글 체크박스를 선택하면

해당 글을 보려고 할 때 비밀번호를 입력해야 합니다.

하지만 비밀번호 입력 후 확인하기에서 404가 발생하죠.

이 부분을 마저 만들어봅시다.

View

이전에 만들었던 read.php에서 input tpye이 잘못되어 있어서 수정합시다.

bbs/view/read.php

<input id="pw" type="text" class="form-control" name="pw" placeholder="비밀번호를 입력하세요">
=>
<input id="pw" type="password" class="form-control" name="pw" placeholder="비밀번호를 입력하세요">

Route

bbs/Route/PostRoute.php

<?php

namespace Route;

use Controller\PostController;

class PostRoute extends BaseRoute
{
    function routing($url): bool
    {
    	...
		else if ($this->routeCheck($url, "post/lockCheck", "POST")) {
            $PostController->lockCheck();
            return true;
        } 
        ...
	}
}

Controller

bbs/Controller/PostController.php

<?php
namespace Controller;

use Model\Post;

class PostController extends BaseController
{
   ...

    /**
     * 게시글의 잠긴 걸 확인 후 해제를 담당
     * @return void
     */
    public function lockCheck()
    {
        $idx = $_POST['idx'];
        $pw = $_POST['pw'];

        if ($this->parametersCheck($pw)) {
            if ($this->post->lockCheck($idx, $pw)) {
                $this->redirect('/bbs/post/read?idx=' . $idx, '비밀번호가 일치합니다.');
            } else {
                $this->redirectBack('비밀번호가 일치하지 않습니다.');
            }
        } else {
            $this->redirectBack('입력되지 않은 값이 있습니다.');
        }
    }

   ...
}

Model

비밀번호가 동일할 경우 1시간짜리 쿠키를 생성합니다.

이 쿠키를 가지고 있다면 1시간 동안 해당 게시글을 비밀번호 기입 없이 볼 수 있습니다.

bbs/Model/Post.php

<?php

namespace Model;

use PDO;
use PDOException;

class Post extends BaseModel
{
    ...

    /**
     * Post 잠김 확인 후 해제
     * @param $idx
     * @param $pw
     * @return bool
     */
    public function lockCheck($idx, $pw): bool
    {
        try {
            echo $idx;
            $query = "SELECT pw FROM posts WHERE idx = :idx";
            $stmt = $this->conn->prepare($query);
            $stmt->execute([
                'idx' => $idx,
            ]);
            $check = $stmt->fetch();

            // 비밀번호 체크
            if (!$check || !password_verify($pw, $check['pw'])) {
                return false;
            }
            // 1시간짜리 쿠키 생성
            setcookie("post_key" . $idx, $pw, time() + 3600, "/");
            return true;
        } catch (PDOException $e) {
            error_log($e->getMessage());
            return false;
        }
    }

   ...
}

 

이제 다음과 같은 결과를 볼 수 있습니다.

반응형

'PHP > Modern PHP' 카테고리의 다른 글

[PHP] 게시판 만들기 with MVC - 10부 Reply(Update & Delete)  (2) 2023.12.28
[PHP] 게시판 만들기 with MVC - 9부 Reply(List & Create)  (1) 2023.12.28
[PHP] 게시판 만들기 with MVC - 7부 Update & Delete  (0) 2023.12.27
[PHP] 게시판 만들기 with MVC - 6부 Read  (0) 2023.12.27
[PHP] 게시판 만들기 with MVC - 5부 Pagination  (1) 2023.12.27
  1.  Lock
  2. View
  3. Route
  4. Controller
  5. Model
'PHP/Modern PHP' 카테고리의 다른 글
  • [PHP] 게시판 만들기 with MVC - 10부 Reply(Update & Delete)
  • [PHP] 게시판 만들기 with MVC - 9부 Reply(List & Create)
  • [PHP] 게시판 만들기 with MVC - 7부 Update & Delete
  • [PHP] 게시판 만들기 with MVC - 6부 Read
DSeung
DSeung
DSeung
Dev log
DSeung
  • 분류 전체보기 (192)
    • PHP (62)
      • Laravel (31)
      • Error (5)
      • Setting (11)
      • Modern PHP (15)
    • Go Lang (51)
      • Study (30)
      • Algorithm (17)
      • Setting (1)
      • Error (3)
    • Java (11)
      • Spring (3)
      • JSP (0)
      • Error (2)
      • Setting (2)
      • 단축키 (2)
    • JavaScript (6)
      • Modern JavaScript (4)
      • Node (1)
    • Android Kotlin (5)
      • Study (4)
      • Error (1)
    • 컴퓨팅 기술 (12)
      • 데이터베이스시스템 (4)
      • Docker (2)
      • 크롤링 & 스크래핑 (1)
      • API (1)
      • 클라우드 (1)
      • 네트워크 (1)
    • MySQL (7)
    • AWS (1)
    • Git (5)
      • GItLab (1)
      • GitHub (4)
    • 도메인 (2)
      • 안과 (2)
    • 자격증 (7)
      • SQLD (1)
      • 정보처리기사 (6)
    • Mac os (1)
    • 나머지 (13)
      • tistory (1)
      • 기타 (9)
      • 일기 (3)
    • 독서 (9)

인기 글

최근 글

블로그 메뉴

  • 홈
  • 태그
전체
오늘
어제
hELLO · Designed By 정상우.v4.2.0
DSeung
[PHP] 게시판 만들기 with MVC - 8부 Lock
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.