on
[PHP] 게시판 만들기 - 관리자 기능 ①
[PHP] 게시판 만들기 - 관리자 기능 ①
여태까지의 실습을 통해 게시판에 필요한 대부분의 기능들을 구현해보았습니다. 실습을 끝내려다가, 완성된 게시판을 관리할 수 있는 관리자 기능을 추가하면 좋겠다고 생각하여, 번외로 이번 실습을 진행해볼까합니다.
관리자 계정으로 할 수 있는 기능 요구사항은 다음과 같습니다.
1. 모든 회원의 정보를 수정, 삭제할 수 있다. (DB구조를 모두 엎어야해서 시간관계상 생략 하겠습니다;;)
2. 모든 게시판 글을 수정, 삭제할 수 있다.
3. 모든 댓글을 삭제할 수 있다.
먼저 DB 구조를 조금 수정해보도록 하겠습니다.
127.0.0.1/phpmyadmin에 접속한 후 현재 프로젝트에서 사용하고 있는 DB에 들어가 user 테이블을 클릭한 후, SQL 클릭, 아래와 같이 SQL 쿼리를 작성한 후, Ctrl Enter를 눌러줍시다.
alter table [테이블명] add [컬럼명] varchar(100) not null default '[default 저장 값]'; 쿼리 실행 결과
위의 그림과 같이 role이라는 컬럼이 생성되고, default 값을 USER로 설정했기 때문에, USER가 저장된 것을 확인할 수 있습니다. 저희는 이 속성을 이용하여 일반 사용자는 USER, 관리자는 ADMIN으로 구분할 예정입니다.
다음으로 실습을 통해 만들었던 게시판 로그인페이지로 간 다음 아래와 같이 회원가입을 해줍니다.
회원가입 화면
회원가입이 완료된 후 다시 phpmyadmin으로 이동합니다. 방금 만들었던 계정의 role이 USER로 세팅된 것을 확인하실 수 있습니다. 이를 수정해줘야합니다. 수정 버튼을 누릅시다.
수정 버튼 눌렀을 때 화면
그 다음 role 컬럼에 있는 내용을 USER에서 ADMIN으로 변경해주고, 실행 버튼을 눌러주면 방금 만든 계정의 role 컬럼의 값이 변경되는 것을 확인할 수 있습니다. 앞으로 이 계정은 관리자 계정으로 사용하게 됩니다.
이전에 세션을 관리하기 위해서 만들었던 config.php로 이동하여 role에 관련된 세션조건 을 추가해주어야합니다.
마지막으로 로그인이 성공했을 때, DB에 있는 정보를 세션에 넣을 수 있도록 작업을 해줘야합니다. 따라서 login_ok.php로 이동하여 해당 작업을 할 수 있도록 코드를 추가합니다.
window.alert('등록되지 않은 아이디입니다!') location.href = 'login.php'; "); } else { $row = mysqli_fetch_array($result); $db_pass = $row['pass']; mysqli_close($con); /* 로그인 화면에서 전송된 $pass와 DB의 $db_pass의 해쉬값 비교 */ if(!password_verify($pass, $db_pass)){ echo(" window.alert('비밀번호가 틀립니다!') location.href = 'login.php'; "); exit; }else { session_start(); $_SESSION["userid"] = $row["id"]; $_SESSION["username"] = $row["name"]; $_SESSION["role"] = $row["role"]; // 추가 코드 echo(" location.href = 'index.php'; "); } } ?>
이렇게 하면 일단 사용자 계정과 관리자 계정으로 로그인 했을 때의 화면을 구분할 수 있습니다. 그러나 위의 main.php의 분기를 다른 코드에서도 똑같이 적용해줘야하는 단점이 존재합니다. 따라서 새로운 파일을 하나 만들어서, 공통되는 네브바의 내용을 넣은 다음 각 코드마다 이를 참조하게끔 코드를 작성하는게 유지보수 측면에서 훨씬 좋은 코드라고 생각됩니다.
따라서 저는 head.php, header.php를 만들어서 다음과 같이 코드를 분리하고, 이를 main.php에서 참조하도록 만들었습니다.
PHP 게시판 웹 사이트
PHP 게시판 웹 사이트 메인 게시판 접속하기 로그인 회원가입 님의 회원관리 로그아웃
웹 사이트 소개 이 웹 사이트는 '서버프로그래밍' 수업의 기말 프로젝트를 위해서 PHP를 이용해 간단하게 구현한 게시판 입니다. 게시판 바로가기 // $(function(){ // $(".carousel").carousel(){ // 캐러셀 jQuery // interval: 1000; // }); // });
이런식으로 다른 코드에도 똑같이 적용을 해주시면 됩니다. 이렇게 관리자 계정을 구현하기 위한 세션 설정, 그리고 코드를 조금 리팩토링 해보았습니다. 다음 시간에는 관리자 기능으로 회원관리를 구현하는 시간을 가져보도록 하겠습니다.
from http://transferhwang.tistory.com/181 by ccl(A) rewrite - 2021-01-07 16:27:43