Information Security
13 게시글 확인 + 수정 + 삭제 본문
7. 게시글 확인: view.php
-메인 페이지의 게시글 목록에서 [제목]을 클릭하면 게시글을 확인할 수 있다.
-로그인한 사용자만 게시글을 확인할 수 있다.
1) 로그인하지 않은 사용자가 게시글을 보는 경우
-> 로그인 요구 -> 뒤로가기
2) 로그인한 사용자가 게시글을 보는 경우
-조회수 증가
-내용 출력
-일단 메인 페이지에서 제목을 클릭하면 view.php 페이지로 이동하여 글을 확인할 수 있도록 할 것이다.
-> main.php에서 게시글의 목록을 출력하는 태그에서 제목 부분에 링크를 추가한다.
-> 링크를 클릭하면 설정된 경로로 GET 방식으로 DB에서 현재 no의 값을 전달한다.
-view.php 페이지를 작성한다.
-> write.php 페이지와 거의 유사하므로 복사해서 사용했다.
-로그인한 사용자만 게시글을 확인할 수 있으므로 세션 변수를 통해서 사용자 인증을 진행한다.
-> is_login의 값이 0이면 로그인을 한 상태가 아니므로 로그인을 요구하는 메시지를 출력하고 뒤로가기를 진행한다.
-is_login의 값이 1이면 로그인을 한 상태이므로 view.php 페이지로 이동하여 글을 확인할 수 있다.
-글을 확인했으면 조회수를 증가시켜야 한다.
-> update 문을 사용하여 전달받은 no 값에 해당하는 행의 count 값을 증가시킨다.
-DB에서 해당 행을 조회하는 쿼리를 변수에 저장한다.
-> 쿼리의 실행 결과를 배열 형태로 저장해서 input 태그의 value의 값에 넣어준다.
-view.php 페이지 소스
-> value에 DB에서 가져온 값이 들어간 것 확인
로그인을 하지 않은 상태에서 제목을 클릭했다.
로그인을 요구하는 메시지가 출력된다.
이번엔 로그인을 하고 다시 제목을 클릭했다.
view.php 페이지로 이동하여 글의 내용을 확인할 수 있다.
조회수가 증가한 것도 확인할 수 있다.
8. 게시글 수정: update.php
-본인이 작성한 게시글만 수정할 수 있다.
[수정] 버튼을 클릭하면 값을 전달하면서 update.php로 이동하도록 action의 값을 변경한다.
세션 변수 [name]의 값(현재 로그인한 사용자)과 현재 보고 있는 게시글의 DB에 저장되어 있는 작성자를 비교해서 같다면 [수정] 버튼을 생성한다.
-> 수정할 때 현재 게시글의 번호(no)가 필요하므로 hidden 타입으로 지정하여 update.php 페이지로 넘어갈 때 전달되도록 한다.
-자신이 작성한 view.php 페이지에서 [수정] 버튼을 누르면 title, content, no 값을 가지고 update.php 페이지로 넘어온다.
-전달된 값들을 변수에 저장한다.
-> update 문을 사용하여 전달된 값들로 title, content를 변경한다.
내가 작성한 글이 아닐 경우 위와 같이 [수정] 버튼이 보이지 않는다.
-내가 작성한 글일 경우 위와 같이 [수정] 버튼이 보인다.
-글을 수정한 후 [수정] 버튼을 클릭한다.
게시글 수정을 성공했다.
9. 게시글 삭제: delete.php
-자신이 작성한 글만 삭제할 수 있다.
main.php 페이지를 삭제할 글의 [delete] 버튼을 클릭하면 해당 글의 번호를 가지고 delete.php 페이지로 이동하도록 수정한다.
자신이 작성한 글만 삭제할 수 있다.
-> 전달받은 글의 번호(no)에 해당하는 사용자의 아이디를 조회한다.
-> 세션 변수와 아이디를 비교하여 다르다면 작성자만 삭제할 수 있다는 메시지를 출력한 후 메인 페이지로 돌아간다.
-세션 변수와 아이디가 같다면(자신이 작성한 글이라면) 해당 글을 삭제할 수 있게 설정한다.
로그인한 사용자와 작성자가 다르다면 위와 같은 메시지가 출력된다.
로그인한 사용자와 작성자가 같다면 글이 삭제된다.
삭제된 것 확인!
※ 게시글 확인, 수정, 삭제까지 모두 완료!! 아주 간단한 게시판 구현 성공
'Web Hacking > Web 기초' 카테고리의 다른 글
12 게시글 목록 출력 (0) | 2017.11.29 |
---|---|
11 게시글 작성 + 저장 페이지 (0) | 2017.11.28 |
10 게시판 회원가입 페이지 + 로그인 페이지 구현 (0) | 2017.11.28 |
09 게시판 기본 형식 구축 (1) | 2017.11.24 |
8 인증 처리 (0) | 2017.11.23 |